diff --git a/card/gujian.js b/card/gujian.js index 23b554e12..a8aa423c8 100644 --- a/card/gujian.js +++ b/card/gujian.js @@ -1530,6 +1530,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ qiankunbiao_info:'随机弃置一名其他角色和其相邻角色的一张牌', bingpotong:'天女散花', + bingpotong_ab:'散花', bingpotong_info:'出牌阶段对至多3名角色使用,你与每个目标依次同时展示一张手牌,若颜色相同,你弃置展示的手牌,目标失去一点体力并终止结算', feibiao:'飞镖', feibiao_info:'出牌阶段,对一名距离1以外的角色使用,令其弃置一张黑色手牌或流失一点体力', diff --git a/card/gwent.js b/card/gwent.js index 9f6e27021..b9c380e96 100644 --- a/card/gwent.js +++ b/card/gwent.js @@ -819,13 +819,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ type:'spell', subtype:'spell_gold', vanish:true, - enable:function(event,player){ - if(player.maxHp==1) return false; - var list=player.getEnemies(); - for(var i=0;i1) return false; + if(event.targets[0]==player) return false; + return get.type2(event.card)=='trick'; + }, + content:function(){ + var list=get.inpile2('trick'); + while(list.length){ + var name=list.randomRemove(); + if(!lib.card[name].multitarget&& + player.canUse(name,trigger.targets[0])&& + get.effect(trigger.targets[0],{name:name},player,player)>0){ + player.useCard(game.createCard(name),trigger.targets[0],false); + break; + } + } + } + }, + hshuanling_old2:{ + trigger:{player:'useCard'}, + filter:function(event,player){ + // if(get.is.converted(event)) return false; + if(!player.countCards('he')) return false; + // if(!event.targets||!event.targets.contains(player)) return false; + var info=get.info(event.card); + if(info.type!='trick'&&info.type!='basic') return false; + if(info.multitarget) return false; + if(event.targets.length>1) return true; + return game.hasPlayer(function(current){ + return !event.targets.contains(current)&&lib.filter.targetEnabled2(event.card,event.player,current); + }); + }, + direct:true, + content:function(){ + 'step 0' + var bool1=(trigger.targets.length>1); + var bool2=game.hasPlayer(function(current){ + return !trigger.targets.contains(current)&&lib.filter.targetEnabled2(trigger.card,trigger.player,current); + }); + if(bool1&&bool2){ + player.chooseControlList(true,get.prompt('hshuanling'),[ + '弃置任意张牌 ,并为'+get.translation(trigger.card)+'增加等量的目标', + '弃置任意张牌 ,并为'+get.translation(trigger.card)+'减少等量的目标'],function(event,player){ + if(_status.event.add) return 0; + return 1; + }).set('add',get.effect(player,trigger.card,trigger.player,player)>=0); + } + else if(bool2){ + event.type='add'; + event.goto(2); + event.unchosen=true; + } + else{ + event.type='remove'; + event.goto(2); + event.unchosen=true; + } + 'step 1' + if(result.control=='cancel2'){ + event.finish(); + } + else if(result.index==1){ + event.type='remove'; + } + else{ + event.type='add'; + } + 'step 2' + if(event.type=='add'){ + var num=game.countPlayer(function(current){ + return !trigger.targets.contains(current)&&lib.filter.targetEnabled2(trigger.card,trigger.player,current); + }); + var num2=game.countPlayer(function(current){ + if(!trigger.targets.contains(current)&&lib.filter.targetEnabled2(trigger.card,trigger.player,current)){ + return get.effect(current,trigger.card,player,player)>0; + } + return false; + }); + if(num2>2) num2=2; + player.chooseCardTarget({ + selectCard:[1,num], + selectTarget:function(){ + return ui.selected.cards.length; + }, + position:'he', + prompt:event.unchosen?get.prompt('hshuanling'):null, + prompt2:'弃置任意张牌,并为'+get.translation(trigger.card)+'增加等量的目标', + filterTarget:function(card,player,target){ + return !trigger.targets.contains(target)&&lib.filter.targetEnabled2(trigger.card,trigger.player,target); + }, + ai1:function(card){ + if(ui.selected.cards.length>=num2) return 0; + return get.value(trigger.card)-get.value(card)-1; + }, + ai2:function(target){ + var trigger=_status.event.getTrigger(); + return get.effect(target,trigger.card,trigger.player,_status.event.player); + } + }); + } + else{ + var num=trigger.targets.length-1; + var num2=game.countPlayer(function(current){ + if(trigger.targets.contains(current)){ + return get.effect(current,trigger.card,player,player)<0; + } + return false; + }); + if(num2>2) num2=2; + player.chooseCardTarget({ + selectCard:[1,num], + selectTarget:function(){ + return ui.selected.cards.length; + }, + prompt:event.unchosen?get.prompt('hshuanling'):null, + prompt2:'弃置任意张牌,并为'+get.translation(trigger.card)+'减少等量的目标', + filterTarget:function(card,player,target){ + return trigger.targets.contains(target); + }, + ai1:function(card){ + if(!player.needsToDiscard(ui.selected.cards.length)) return 0; + if(ui.selected.cards.length>=num2) return 0; + return Math.max(5,get.value(trigger.card))-get.value(card)-1; + }, + ai2:function(target){ + var trigger=_status.event.getTrigger(); + return -get.effect(target,trigger.card,trigger.player,_status.event.player); + } + }); + } + 'step 3' + if(result.bool){ + if(!event.isMine()) game.delayx(); + event.targets=result.targets.slice(0); + event.cards=result.cards.slice(0); + } + else{ + event.finish(); + } + 'step 4' + player.logSkill('hshuanling',event.targets); + player.discard(event.cards).delay=false; + if(event.type=='add'){ + for(var i=0;i0; + }, + content:function(){ + trigger.num--; + } + }, + enter:{ + trigger:{global:'phaseAfter'}, + forced:true, + popup:false, + priority:-60, + filter:function(event,player){ + return event.player!=player; + }, + content:function(){ + player.insertPhase(null,true); + } + } + }, + content:function(){ + 'step 0' + event.num=trigger.num; + 'step 1' + if(event.num&&player.storage.ylyuchu.length<3){ + var skill=player.addSubPlayer({ + name:'hs_yelinchulong', + skills:['ylyuchu_draw','ylyuchu_exit','ylyuchu_enter'], + hp:2, + maxHp:2, + hs:get.cards(2), + skill:skill, + // intro:'下个敌方回合开始前,随机切换至此随从', + intro2:'当前回合结束后进行一个额外回合并切换回本体', + onremove:function(player){ + player.storage.ylyuchu.remove(skill); + delete lib.skill[skill]; + } + }); + player.storage.ylyuchu.push(skill); + event.num--; + event.redo(); + } + } + }, nsaiqi:{ trigger:{player:'useCard'}, forced:true, @@ -557,27 +1035,41 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.finish(); } 'step 2' - var es=player.getCards('e'); - var num=0; - for(var i=0;i0; + }, + logTarget:'player', + content:function(){ + trigger.player.draw(); + }, + ai:{ + expose:0.2 + } + }, zhenshan:{ trigger:{player:'chooseToRespondBegin'}, filter:function(event,player){ @@ -370,7 +390,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_caozhen:'旧曹真', old_quancong:'旧全琮', old_lingju:'旧灵雎', + old_maliang:'旧马良', + old_chenqun:'旧陈群', + oldfaen:'法恩', + oldfaen_info:'当一名角色翻面或横置后,你可以令其摸一张牌。', zhenshan:'振赡', zhenshan_use:'振赡', zhenshan_use_backup:'振赡', diff --git a/character/ow.js b/character/ow.js index 8a2f8c3b3..9810eac64 100644 --- a/character/ow.js +++ b/character/ow.js @@ -2913,7 +2913,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(num>1) return att/3; return att/4; } - return att; + return att*1.1; } return att; }); diff --git a/character/sp.js b/character/sp.js index 88c822d86..033a8f0f6 100644 --- a/character/sp.js +++ b/character/sp.js @@ -1972,6 +1972,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 2' if(event.type=='add'){ player.chooseTarget(event.unchosen?get.prompt('sheyan'):null,'为'+get.translation(trigger.card)+'增加一个目标',function(card,player,target){ + var trigger=_status.event.getTrigger(); return !trigger.targets.contains(target)&&lib.filter.targetEnabled2(trigger.card,trigger.player,target); }).set('ai',function(target){ var trigger=_status.event.getTrigger(); diff --git a/game/asset.js b/game/asset.js index 62ce90354..dcc7f583d 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,70 +1,5 @@ -(function(){ - if(typeof require !== 'function'||typeof document !== 'undefined') return; - global.window=global; - require(__dirname+'/update.js'); - var fs=require('fs'); - var path=require('path'); - fs.readFile('game/asset.js','utf-8',function(err, current){ - var assetlist='\t\''+window.noname_update.version+'\''; - var skinlist='\nwindow.noname_skin_list={\n'; - var get = function(dir,callback){ - fs.readdir(dir,function(err,list){ - var shift=function(){ - if(list.length){ - var filename=list.shift(); - var delay=false; - if(!/\.|~|_/.test(filename[0])){ - var url=dir+'/'+filename; - var stat=fs.statSync(url); - if(stat.isFile()){ - if(['.jpg','.png','.mp3','.ttf'].indexOf(path.extname(url))!=-1){ - assetlist+=',\n\t\''+path.relative(path.dirname(__dirname),url)+'\''; - } - } - else if(stat.isDirectory()){ - if(dir==path.dirname(__dirname)+'/image/skin'){ - fs.readdir(url,function(err,list){ - var num=0; - for(var i=0;i { + var updatelist='window.noname_update={\n\tversion:\''+updates.version+'\','; + updatelist+='\n\tupdate:\''+(updates.update||'')+'\','; + var apply=function(name,list){ + updatelist+='\n\t'+name+':[\n'; + for(var i=0;i