diff --git a/card/extra.js b/card/extra.js index d661bed4c..03696e85a 100644 --- a/card/extra.js +++ b/card/extra.js @@ -277,7 +277,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, result:{ target:function(player,target){ - return -1-target.countCards('h'); + if(target.hasJudge('caomu')) return 0; + return -1.5/Math.sqrt(target.countCards('h')+1); } }, tag:{ diff --git a/card/gujian.js b/card/gujian.js index 4a938043e..336e7052c 100644 --- a/card/gujian.js +++ b/card/gujian.js @@ -1198,12 +1198,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){ nopop:true, intro:{ content:function(storage,player){ - return '你不能成为延时锦囊牌的目标(剩余'+player.storage.molicha_markcount+'回合)' + return '你不能成为过河拆桥或延时锦囊牌的目标(剩余'+player.storage.molicha_markcount+'回合)' } }, mod:{ targetEnabled:function(card){ - if(get.type(card)=='delay'){ + if(get.type(card)=='delay'||card.name=='guohe'){ return false; } } @@ -1218,15 +1218,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){ else{ player.updateMarks(); } - }, - ai:{ - effect:{ - target:function(card){ - if(get.type(card)=='delay'){ - return 'zeroplayertarget'; - } - } - } } }, yuanbaorou:{ @@ -1637,7 +1628,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ yuanbaorou:'元宝肉', yuanbaorou_info:'你在出牌阶段可以额外使用一张杀,持续三回合', molicha:'茉莉茶', - molicha_info:'弃置判定区内的所有牌;你不能成为延时锦囊牌的目标,持续五回合', + molicha_info:'弃置判定区内的所有牌;你不能成为过河拆桥或延时锦囊牌的目标,持续五回合', mapodoufu:'麻婆豆腐', mapodoufu_info:'结束阶段,你有65%的机率弃置一名随机敌人的一张随机牌,持续三回合', }, diff --git a/card/guozhan.js b/card/guozhan.js index 10e21f690..a2d3ac267 100644 --- a/card/guozhan.js +++ b/card/guozhan.js @@ -541,7 +541,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, tag:{ loseCard:1, - discard:1 + discard:1, + norepeat:1 } }, }, diff --git a/card/sp.js b/card/sp.js index 5de7f4b0f..31b766550 100644 --- a/card/sp.js +++ b/card/sp.js @@ -443,7 +443,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }); }, - target:-1 + target:function(player,target){ + if(target.hasJudge('bingliang')) return 0; + return -1.5/Math.sqrt(target.countCards('h')+1); + } }, } } diff --git a/character/extra.js b/character/extra.js index 2cface1ad..c34148fbe 100644 --- a/character/extra.js +++ b/character/extra.js @@ -1047,7 +1047,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "step 2" if(event.dialog) event.dialog.close(); var dialog=ui.create.dialog('涉猎',event.cards); - player.chooseButton([0,5],dialog,true).filterButton=function(button){ + player.chooseButton([0,5],dialog,true).set('ai',function(button){ + return ai.get.value(button.link); + }).filterButton=function(button){ for(var i=0;i0){ + return get.cnNumber(num)+'轮后技能重置'; + } + return '技能可发动'; + }, + markcount:function(storage,player){ + var num=2-(game.roundNumber-storage); + if(num>0){ + return num; + } + return 0; + } + }, + trigger:{global:'phaseEnd'}, + filter:function(event,player){ + if(2-(game.roundNumber-player.storage.linghuo)>0) return false; + return event.player.getStat('damage')&&event.player!=player; + }, + check:function(event,player){ + return get.damageEffect(event.player,player,player,'fire')>0; + }, + logTarget:'player', + line:'fire', + ai:{ + expose:0.2, + threaten:1.3, + }, + content:function(){ + trigger.player.damage('fire'); + player.storage.linghuo=game.roundNumber; + player.syncStorage('linghuo'); + player.markSkill('linghuo'); + }, + group:'linghuo_mark', + subSkill:{ + mark:{ + trigger:{global:['phaseBegin','phaseCancelled']}, + forced:true, + popup:false, + silent:true, + filter:function(event,player){ + return _status.roundStart==event.player; + }, + content:function(){ + if(2-(game.roundNumber-player.storage.linghuo)>0){ + player.updateMarks(); + } + else{ + player.unmarkSkill('linghuo'); + } + } + } + } + }, + guijin:{ + init:function(player){ + player.storage.guijin=-2; + }, + intro:{ + content:function(storage,player){ + var num=3-(game.roundNumber-storage); + if(num>0){ + return get.cnNumber(num)+'轮后技能重置'; + } + return '技能可发动'; + }, + markcount:function(storage,player){ + var num=3-(game.roundNumber-storage); + if(num>0){ + return num; + } + return 0; + } + }, + group:'guijin_mark', + enable:'phaseUse', + delay:0, + filter:function(event,player){ + return 3-(game.roundNumber-player.storage.guijin)<=0; + }, + content:function(){ + 'step 0' + event.cards=get.cards(4); + player.storage.guijin=game.roundNumber; + player.syncStorage('guijin'); + player.markSkill('guijin'); + 'step 1' + if(event.cards.length){ + var more=false,remain=0,nomore=false; + if(event.cards.length>=3){ + for(var i=0;i=8){ + more=true; + } + if(event.cards.length>=4&&value<=4){ + remain=Math.min(remain,value); + } + } + } + if(!more&&!game.hasPlayer(function(current){ + return get.attitude(player,current)<0&&!current.skipList.contains('phaseDraw'); + })){ + var num=0; + for(var i=0;i=12){ + more=true; + } + else{ + nomore=true; + } + } + player.chooseCardButton('归烬',event.cards,[1,event.cards.length]).ai=function(button){ + if(nomore) return 0; + if(more){ + return get.value(button.link,player,'raw')-remain; + } + else{ + if(ui.selected.buttons.length) return 0; + return 8-get.value(button.link,player,'raw'); + } + } + } + else{ + event.goto(4); + } + 'step 2' + if(result.bool){ + for(var i=0;i1){ + if(target==player&&target.needsToDiscard(result.links.length)>1){ + return att/5; + } + return att; + } + else{ + if(target.skipList.contains('phaseDraw')) return att/5; + return -att; + } + } + } + else{ + event.goto(4); + } + 'step 3' + if(result.targets.length){ + result.targets[0].gain(event.togive,'draw'); + result.targets[0].skip('phaseDraw'); + result.targets[0].addTempSkill('guijin2',{player:'phaseBegin'}); + player.line(result.targets[0],'green'); + event.goto(1); + } + 'step 4' + while(event.cards.length){ + ui.cardPile.insertBefore(event.cards.pop(),ui.cardPile.firstChild); + } + }, + ai:{ + order:1, + result:{ + player:function(player){ + if(game.roundNumber==1&&player.hasUnknown()) return 0; + return 1; + } + } + }, + subSkill:{ + mark:{ + trigger:{global:['phaseBegin','phaseCancelled']}, + forced:true, + popup:false, + silent:true, + filter:function(event,player){ + return _status.roundStart==event.player; + }, + content:function(){ + if(3-(game.roundNumber-player.storage.guijin)>0){ + player.updateMarks(); + } + else{ + player.unmarkSkill('guijin'); + } + } + } + } + }, + guijin2:{ + mark:true, + intro:{ + content:'跳过下一个摸牌阶段' + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(card.name=='bingliang'||card.name=='caomu') return 0; + } + } + } + }, + chengxin:{ + init:function(player){ + player.storage.chengxin=-3; + }, + intro:{ + content:function(storage,player){ + var num=4-(game.roundNumber-storage); + if(num>0){ + return get.cnNumber(num)+'轮后技能重置'; + } + return '技能可发动'; + }, + markcount:function(storage,player){ + var num=4-(game.roundNumber-storage); + if(num>0){ + return num; + } + return 0; + } + }, + enable:'chooseToUse', + filter:function(event,player){ + if(4-(game.roundNumber-player.storage.chengxin)>0) return false; + return event.type=='dying'; + }, + filterTarget:function(card,player,target){ + return target==_status.event.dying; + }, + selectTarget:-1, + content:function(){ + target.recover(1-target.hp); + target.addTempSkill('chengxin2',{player:'phaseAfter'}); + player.storage.chengxin=game.roundNumber; + player.syncStorage('chengxin'); + player.markSkill('chengxin'); + }, + ai:{ + order:6, + threaten:1.4, + skillTagFilter:function(player){ + if(4-(game.roundNumber-player.storage.chengxin)>0) return false; + if(!_status.event.dying) return false; + }, + save:true, + result:{ + target:3 + }, + }, + group:'chengxin_mark', + subSkill:{ + mark:{ + trigger:{global:['phaseBegin','phaseCancelled']}, + forced:true, + popup:false, + silent:true, + filter:function(event,player){ + return _status.roundStart==event.player; + }, + content:function(){ + if(4-(game.roundNumber-player.storage.chengxin)>0){ + player.updateMarks(); + } + else{ + player.unmarkSkill('chengxin'); + } + } + } + } + }, + chengxin2:{ + trigger:{player:'damageBefore'}, + mark:true, + forced:true, + content:function(){ + trigger.untrigger(); + trigger.finish(); + }, + ai:{ + nofire:true, + nothunder:true, + nodamage:true, + effect:{ + target:function(card,player,target,current){ + if(get.tag(card,'damage')) return [0,0]; + } + }, + }, + intro:{ + content:'防止一切伤害' + } + }, tianwu:{ trigger:{player:'useCardToBegin'}, filter:function(event,player){ @@ -3604,6 +3909,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ pal_mingxiu:'明绣', pal_jushifang:'居十方', + linghuo:'灵火', + linghuo_info:'每两轮限一次,在一名其他角色的结束阶段,若其本回合内造成过伤害,你可以对其造成一点火属性伤害', + guijin:'归烬', + guijin2:'归烬', + guijin2_bg:'烬', + guijin_info:'每三轮限一次,出牌阶段,你可以观看牌堆顶的4张牌,然后可以将其中任意张牌分配给任意角色,被分到牌的角色跳过下一摸牌阶段,然后将剩余牌以原顺序放回牌堆顶', + chengxin:'澄心', + chengxin2:'澄心', + chengxin2_bg:'心', + chengxin_info:'每四轮限一次,当一名角色进入濒死状态时,你可以令将体力值回复至1,然后该角色防止一切伤害直到下一回合结束', tianwu:'天舞', tianwu_info:'每当你使用卡牌指定一名敌方角色为惟一目标,你可以对其施加一个随机的负面效果', liguang:'离光', diff --git a/game/asset.js b/game/asset.js index f66bfea16..0921d48ef 100644 --- a/game/asset.js +++ b/game/asset.js @@ -555,6 +555,7 @@ window.noname_asset_list=[ 'image/character/ow_wensidun.jpg', 'image/character/ow_zhaliya.jpg', 'image/character/ow_ana.jpg', + 'image/character/pal_anu.jpg', 'image/character/pal_changqing.jpg', 'image/character/pal_hanlingsha.jpg', 'image/character/pal_jiangcheng.jpg', diff --git a/game/game.js b/game/game.js index 3b69db959..bdd0ec40f 100644 --- a/game/game.js +++ b/game/game.js @@ -8904,14 +8904,14 @@ else{ if(info.logTarget&&info.logLine!==false){ if(typeof info.logTarget=='string'){ - player.logSkill(event.skill,trigger[info.logTarget]); + player.logSkill(event.skill,trigger[info.logTarget],info.line); } else if(typeof info.logTarget=='function'){ - player.logSkill(event.skill,info.logTarget(trigger,player)); + player.logSkill(event.skill,info.logTarget(trigger,player),info.line); } } else{ - player.logSkill(event.skill); + player.logSkill(event.skill,false,info.line); } } } @@ -41364,7 +41364,7 @@ var modepack=lib.characterPack['mode_'+get.mode()]; if(lib.config.show_favourite&&lib.character[node.name]&&game.players.contains(node)&& (!modepack||!modepack[node.name])&&(!simple||get.is.phoneLayout())){ - var addFavourite=ui.create.div('.text.center'); + var addFavourite=ui.create.div('.text.center.pointerdiv'); addFavourite.link=node.link; if(lib.config.favouriteCharacter.contains(node.name)){ addFavourite.innerHTML='移除收藏'; @@ -41783,7 +41783,7 @@ var modepack=lib.characterPack['mode_'+get.mode()]; if(lib.config.show_favourite&& lib.character[node.link]&&(!modepack||!modepack[node.link])&&(!simple||get.is.phoneLayout())){ - var addFavourite=ui.create.div('.text.center'); + var addFavourite=ui.create.div('.text.center.pointerdiv'); addFavourite.link=node.link; addFavourite.style.marginBottom='15px'; if(lib.config.favouriteCharacter.contains(node.link)){ diff --git a/image/character/bulianshi.jpg b/image/character/bulianshi.jpg index 0d1c13d68..96eb22fe0 100755 Binary files a/image/character/bulianshi.jpg and b/image/character/bulianshi.jpg differ diff --git a/image/character/diaochan.jpg b/image/character/diaochan.jpg index 8d4954f0b..d8c9db5e7 100644 Binary files a/image/character/diaochan.jpg and b/image/character/diaochan.jpg differ diff --git a/image/character/pal_anu.jpg b/image/character/pal_anu.jpg new file mode 100644 index 000000000..421687789 Binary files /dev/null and b/image/character/pal_anu.jpg differ diff --git a/image/character/pal_xiaoman.jpg b/image/character/pal_xiaoman.jpg index d32641f97..a73ab66db 100644 Binary files a/image/character/pal_xiaoman.jpg and b/image/character/pal_xiaoman.jpg differ