diff --git a/audio/die/ol_pangde.mp3 b/audio/die/ol_pangde.mp3 new file mode 100644 index 000000000..346a44969 Binary files /dev/null and b/audio/die/ol_pangde.mp3 differ diff --git a/audio/skill/rejianchu1.mp3 b/audio/skill/rejianchu1.mp3 new file mode 100644 index 000000000..057c0434d Binary files /dev/null and b/audio/skill/rejianchu1.mp3 differ diff --git a/audio/skill/rejianchu2.mp3 b/audio/skill/rejianchu2.mp3 new file mode 100644 index 000000000..21b070284 Binary files /dev/null and b/audio/skill/rejianchu2.mp3 differ diff --git a/audio/skill/rejizhi_lukang1.mp3 b/audio/skill/rejizhi_lukang1.mp3 new file mode 100644 index 000000000..932a10e21 Binary files /dev/null and b/audio/skill/rejizhi_lukang1.mp3 differ diff --git a/audio/skill/rejizhi_lukang2.mp3 b/audio/skill/rejizhi_lukang2.mp3 new file mode 100644 index 000000000..932a10e21 Binary files /dev/null and b/audio/skill/rejizhi_lukang2.mp3 differ diff --git a/card/guozhan.js b/card/guozhan.js index e2bba55d4..067057825 100644 --- a/card/guozhan.js +++ b/card/guozhan.js @@ -1168,7 +1168,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ content:function(){ var cards=[]; for(var i=0;i0; + }, + chooseButton:{ + dialog:function(){ + var list=[]; + for(var i of lib.inpile){ + var sub=get.subtype(i); + if(['equip1','equip4'].contains(sub)) list.push([sub,'',i]); + } + return ui.create.dialog('巧手:选择一种装备牌',[list,'vcard'],'hidden'); + }, + check:function(button){ + var player=_status.event.player; + var name=button.link[2]; + if(get.subtype(name)=='equip4'||player.getEquip(name)) return 0; + var sha=player.countCards('h','sha'); + switch(name){ + case 'zhuge': + return sha-player.getCardUsable('sha'); + case 'guding': + if(sha>0&&game.hasPlayer(function(current){ + return get.attitude(player,current)<0&&!current.countCards('h')&&player.canUse('sha',current)&&get.effect(current,{name:'sha'},player)>0; + })) return 1.4+Math.random(); + return 0; + case 'guanshi': + if(sha>0) return 0.7+Math.random(); + return 0; + case 'qinggang': + if(sha>0) return 0.4+Math.random(); + return 0; + case 'zhuque': + if(game.hasPlayer(function(current){ + return get.attitude(player,current)<0&¤t.getEquip('tengjia')&&get.effect(current,{name:'sha',nature:'fire'},player)>0; + })) return 1.2+Math.random(); + return 0; + default: return 0; + } + }, + backup:function(links){ + var next=get.copy(lib.skill.kud_qiaoshou_backupx); + next.cardname=links[0][2]; + return next; + }, + prompt:function(links){ + return '将一张手牌置于武将牌上,然后视为装备'+get.translation(links[0][2]); + }, + }, + group:'kud_qiaoshou_end', + ai:{ + order:5, + result:{ + player:1, + }, + }, + }, + kud_qiaoshou_backupx:{ + filterCard:true, + discard:false, + toStorage:true, + delay:false, + check:function(event,player){ + return 6-get.value(card); + }, + content:function(){ + player.addTempSkill('kud_qiaoshou_equip',{player:['phaseUseEnd','phaseZhunbeiBegin']}); + var name=lib.skill.kud_qiaoshou_backup.cardname; + player.storage.kud_qiaoshou_equip2=name; + player.markAuto('kud_qiaoshou_equip',cards); + var info=lib.card[name].skills; + if(info&&info.length) player.addAdditionalSkill('kud_qiaoshou_equip',info); + player.draw(); + game.log(player,'声明了','#y'+get.translation(name)); + }, + ai:{ + result:{ + player:1, + }, + }, + }, + kud_qiaoshou_equip:{ + charlotte:true, + mod:{ + globalFrom:function(from,to,distance){ + var info=lib.card[from.storage.kud_qiaoshou_equip2]; + if(info&&info.distance&&info.distance.globalFrom) return distance+info.distance.globalFrom; + }, + globalTo:function(from,to,distance){ + var info=lib.card[to.storage.kud_qiaoshou_equip2]; + if(info&&info.distance&&info.distance.globalTo) return distance+info.distance.globalTo; + }, + attackFrom:function(from,to,distance){ + var info=lib.card[from.storage.kud_qiaoshou_equip2]; + if(info&&info.distance&&info.distance.attackFrom) return distance+info.distance.attackFrom; + }, + attackTo:function(from,to,distance){ + var info=lib.card[to.storage.kud_qiaoshou_equip2]; + if(info&&info.distance&&info.distance.attackTo) return distance+info.distance.attackTo; + }, + }, + intro:{ + mark:function(dialog,storage,player){ + dialog.add(storage); + dialog.addText('当前装备:'+get.translation(player.storage.kud_qiaoshou_equip2)); + var str2=lib.translate[player.storage.kud_qiaoshou_equip2+'_info']; + if(str2){ + if(str2.length>=12) dialog.addText(str2,false); + else dialog.addText(str2); + } + }, + onunmark:function(storage,player){ + if(storage&&storage.length){ + player.$throw(storage,1000); + game.cardsDiscard(storage); + game.log(storage,'被置入了弃牌堆'); + storage.length=0; + } + player.removeAdditionalSkill('kud_qiaoshou_equip'); + delete player.storage.kud_qiaoshou_equip2; + }, + }, + }, + kud_qiaoshou_end:{ + trigger:{player:'phaseJieshuBegin'}, + direct:true, + filter:function(event,player){ + return player.countCards('h')>0&&!player.getStorage('kud_qiaoshou_equip').length; + }, + content:function(){ + 'step 0' + var list=[]; + for(var i of lib.inpile){ + var sub=get.subtype(i); + if(['equip2','equip3'].contains(sub)) list.push([sub,'',i]); + } + player.chooseButton([get.prompt('kud_qiaoshou'),[list,'vcard']]).set('ai',function(button){ + var player=_status.event.player; + var name=button.link[2]; + if(get.subtype(name)=='equip3'||player.getEquip(name)) return false; + switch(name){ + case 'yexingyi': + if(player.hp>2||player.getEquip('bagua')||player.getEquip('tengjia')) return 1.5+Math.random(); + return 0.5+Math.random(); + case 'bagua':case 'renwang': + if(player.getEquip('bagua')||player.getEquip('tengjia')||player.getEquip('renwang')) return Math.random(); + return 1.2+Math.random(); + case 'tengjia': + if(player.getEquip('baiyin')) return 1.3+Math.random(); + return Math.random(); + case 'baiyin': + return 0.4+Math.random(); + default: return 0; + } + }); + 'step 1' + if(result.bool){ + player.logSkill('kud_qiaoshou'); + event.cardname=result.links[0][2]; + player.chooseCard('h',true,'将一张手牌置于武将牌上,然后视为装备'+get.translation(event.cardname)); + } + else event.finish(); + 'step 2' + player.addTempSkill('kud_qiaoshou_equip',{player:['phaseUseEnd','phaseZhunbeiBegin']}); + var name=event.cardname; + player.storage.kud_qiaoshou_equip2=name; + var cards=result.cards; + player.lose(cards,ui.special,'toStorage'); + player.markAuto('kud_qiaoshou_equip',cards); + var info=lib.card[name].skills; + if(info&&info.length) player.addAdditionalSkill('kud_qiaoshou_equip',info); + player.draw(); + game.log(player,'声明了','#y'+get.translation(name)); + }, + }, + kud_buhui:{ + enable:'chooseToUse', + filter:function(event,player){ + return event.type=='dying'&&player==event.dying&&(player.getStorage('kud_qiaoshou_equip').length+player.countCards('e'))>0; + }, + skillAnimation:true, + limited:true, + animationColor:'gray', + content:function(){ + 'step 0' + player.awakenSkill('kud_buhui'); + var cards=player.getCards('e'); + var length=player.getStorage('kud_qiaoshou_equip').length; + if(cards.length) player.discard(cards); + player.removeSkill('kud_qiaoshou_equip'); + player.draw(cards.length+length); + player.addSkill('kud_chongzhen'); + 'step 1' + var num=2-player.hp; + if(num) player.recover(num); + }, + derivation:'riki_chongzhen', + ai:{ + order:0.5, + result:{ + player:1, + }, + save:true, + skillTagFilter:function(player){ + return player.isDying(); + }, + }, + }, + kud_chongzhen:{ + inherit:'riki_chongzhen', + }, + misuzu_hengzhou:{ + trigger:{player:['phaseJieshuBegin','recoverEnd','damageEnd','phaseDrawBegin2','phaseZhunbeiBegin']}, + forced:true, + filter:function(event,player){ + if(event.name=='phaseZhunbei') return true; + if(['damage','recover'].contains(event.name)) return event.num>0; + var num=player.countMark('misuzu_hengzhou'); + if(event.name=='phaseDraw') return num>0&&!event.numFixed; + return num>3; + }, + content:function(){ + var num=player.countMark('misuzu_hengzhou'); + if(trigger.name=='phaseDraw') trigger.num+=num; + else if(trigger.name=='phaseJieshu'){ + player.removeMark('misuzu_hengzhou',num); + player.loseHp(); + } + else player.addMark('misuzu_hengzhou',trigger.num||1); + }, + intro:{ + name:'诅咒', + name2:'诅咒', + content:'mark', + }, + marktext:'阻', + mod:{ + maxHandcard:function(player,num){ + return num+player.countMark('misuzu_hengzhou'); + }, + }, + }, + misuzu_nongyin:{ + enable:'chooseToUse', + viewAs:{ + name:'tao', + isCard:true, + }, + viewAsFilter:function(player){ + return !player.hasJudge('lebu')&&player.countCards('he',function(card){ + return get.color(card)=='red'&&get.type(card,'trick')!='trick'; + }); + }, + filterCard:function(card){ + return get.color(card)=='red'&&get.type(card,'trick')!='trick'; + }, + check:function(card){ + return 7+(_status.event.dying||_status.event.player).getDamagedHp()-get.value(card); + }, + ignoreMod:true, + position:'he', + precontent:function(){ + player.logSkill('misuzu_nongyin'); + player.$throw(event.result.cards); + player.addJudge({name:'lebu'},event.result.cards); + event.result.card.cards=[]; + event.result.cards=[]; + delete event.result.skill; + delete event.result.card.suit; + delete event.result.card.number; + }, + ai:{ + result:0.5, + save:true, + skillTagFilter:function(player){ + return !player.hasJudge('lebu')&&player.countCards('he',function(card){ + return get.color(card)=='red' + }); + }, + }, + }, + misuzu_zhongxing:{ + trigger:{player:'loseAfter'}, + direct:true, + filter:function(event,player){ + return event.js&&event.js.length>0&&!player.hasSkill('misuzu_zhongxing_haruko'); + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('misuzu_zhongxing'),'令一名角色选择摸两张牌或回复1点体力').set('ai',function(card){ + return get.attitude(_status.event.player,card); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('misuzu_zhongxing',target); + player.addTempSkill('misuzu_zhongxing_haruko'); + target.chooseDrawRecover(2,true); + } + }, + }, + misuzu_zhongxing_haruko:{}, + kamome_suitcase:{ + trigger:{player:['phaseJudgeBefore','phaseDiscardBefore','turnOverBefore']}, + forced:true, + popup:false, + equipSkill:true, + content:function(){ + trigger.cancel(); + }, + }, + kamome_yangfan:{ + trigger:{ + global:'gameDrawAfter', + player:['enterGame','loseAfter'], + }, + forced:true, + filter:function(event,player){ + if(event.name!='lose') return true; + return event.es&&event.es.length; + }, + content:function(){ + if(trigger.name=='lose') player.draw(2*trigger.es.length); + else player.equip(game.createCard('kamome_suitcase','spade',1)); + }, + ai:{ + noe:true, + reverseEquip:true, + effect:{ + target:function(card,player,target,current){ + if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3]; + } + } + } + }, + kamome_huanmeng:{ + trigger:{player:'phaseZhunbeiBegin'}, + frequent:true, + content:function(){ + "step 0" + if(player.isUnderControl()){ + game.modeSwapPlayer(player); + } + var num=1+player.countCards('e'); + var cards=get.cards(num); + event.cards=cards; + var switchToAuto=function(){ + _status.imchoosing=false; + if(event.dialog) event.dialog.close(); + if(event.control) event.control.close(); + var top=[]; + var judges=player.getCards('j'); + var stopped=false; + if(!player.hasWuxie()){ + for(var i=0;i=num&&!player.hasSkill('kamome_jieban_phase'); + }, + content:function(){ + 'step 0' + event.num=player.storage.kamome_jieban?1:2; + player.chooseCardTarget({ + position:'he', + filterCard:true, + filterTarget:lib.filter.notMe, + selectCard:event.num, + prompt:get.prompt('kamome_jieban'), + prompt2:event.num==2?'将两张牌交给一名其他角色,然后其交给你一张牌。':'将一张牌交给一名其他角色,然后其交给你两张牌。', + ai1:function(card){ + if(card.name=='du') return 20; + var val=get.value(card); + var player=_status.event.player; + if(get.position(card)=='e'){ + if(val<=0) return 10; + return 10/val; + } + return 6-val; + }, + ai2:function(target){ + var player=_status.event.player; + var att=get.attitude(player,target); + if(ui.selected.cards[0].name=='du') return -2*att; + if(att>0) return 1.5*att; + var num=get.select(_status.event.selectCard)[1]; + if(att<0&&num==1) return -0.7*att; + return att; + }, + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('kamome_jieban',target); + player.addTempSkill('kamome_jieban_phase'); + target.gain(result.cards,player,'giveAuto'); + player.storage.kamome_jieban=!player.storage.kamome_jieban; + } + else event.finish(); + 'step 2' + var num=3-event.num; + var hs=target.getCards('he'); + if(hs.length){ + if(hs.length<=num) event._result={bool:true,cards:hs}; + else{ + target.chooseCard('he',true,'交给'+get.translation(player)+get.cnNumber(num)+'张牌',num).set('ai',function(card){ + var player=_status.event.player; + var target=_status.event.getParent().player; + if(get.attitude(player,target)>0){ + if(!target.hasShan()&&card.name=='shan') return 10; + if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')&&target.hasUseTarget(card)) return 10-get.value(card); + return 6-get.value(card); + } + return -get.value(card); + }); + } + } + else event.finish(); + 'step 3' + player.gain(result.cards,target,'giveAuto'); + }, + }, + kamome_jieban_phase:{}, + nao_duyin:{ + trigger:{global:'phaseBegin'}, + filter:function(event,player){ + return event.player!=player&&(!player.storage.nao_duyin||!player.storage.nao_duyin.contains(event.player)); + }, + logTarget:'player', + charlotte:true, + check:function(){ + return false; + }, + content:function(){ + 'step 0' + player.chooseToDiscard('he','弃置一张牌,或将武将牌翻面').set('ai',function(card){ + if(_status.event.player.isTurnedOver()) return 0; + return 6-get.value(card); + }); + 'step 1' + if(!result.bool) player.turnOver(); + player.addTempSkill('nao_duyin2',{player:'phaseAfter'}); + if(!player.storage.nao_duyin) player.storage.nao_duyin=[]; + player.storage.nao_duyin.push(trigger.player); + if(!player.storage.nao_duyin2) player.storage.nao_duyin2=[]; + player.storage.nao_duyin2.push(trigger.player); + player.markSkill('nao_duyin2'); + }, + }, + nao_duyin2:{ + intro:{ + content:'$不能使用牌指定你为目标,对$使用牌没有距离和次数限制', + }, + mod:{ + targetEnabled:function(card,player,target){ + if(target.storage.nao_duyin2&&target.storage.nao_duyin2.contains(player)) return false; + }, + targetInRange:function(card,player,target){ + if(player.storage.nao_duyin2&&player.storage.nao_duyin2.contains(target)) return true; + }, + }, + trigger:{player:'useCardEnd'}, + firstDo:true, + silent:true, + onremove:true, + filter:function(event,player){ + if(player.storage.nao_duyin2){ + for(var i of player.storage.nao_duyin2){ + if(event.targets.contains(i)) return true; + } + } + return false; + }, + content:function(){ + if(trigger.addCount!==false){ + trigger.addCount=false; + var stat=player.getStat(); + if(stat&&stat.card&&stat.card[trigger.card.name]) stat.card[trigger.card.name]--; + } + }, + }, + nao_wanxin:{ + trigger:{global:'roundStart'}, + hasHistory:function(player){ + var list=player.actionHistory; + for(var i=list.length-1;i>=0;i--){ + if(list[i].isRound) break; + } + list=list.slice(i); + return list.filter(function(yuu){ + return yuu.damage&&yuu.damage.length>0; + }).length>0; + }, + filter:function(event,player){ + return game.hasPlayer(function(current){ + return lib.skill.nao_wanxin.hasHistory(current); + }); + }, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('nao_wanxin'),function(card,player,target){ + return _status.event.yuus.contains(target); + }).set('yuus',game.filterPlayer(function(current){ + return lib.skill.nao_wanxin.hasHistory(current); + })).set('ai',function(target){ + return get.attitude(_status.event.player,target); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('nao_wanxin',target); + target.draw(2); + } + else event.finish(); + 'step 2' + player.turnOver(false); + 'step 3' + player.link(false); + if(target==player) event.finish(); + 'step 4' + target.turnOver(false); + 'step 5' + target.link(false); + }, + }, + nao_shouqing:{ + global:'nao_shouqing2', + }, + nao_shouqing2:{ + enable:'phaseUse', + viewAs:function(){ + return {name:'tao'} + }, + filterCard:{name:'tao'}, + ignoreMod:true, + filterTarget:function(card,player,target){ + return target!=player&&target.isDamaged()&&target.hasSkill('nao_shouqing'); + }, + selectTarget:function(){ + return game.countPlayer(function(current){ + return lib.skill.nao_shouqing2.filterTarget(null,_status.event.player,current); + })>1?1:-1; + }, + filter:function(event,player){ + return player.countCards('h','tao')&&game.hasPlayer(function(current){ + return lib.skill.nao_shouqing2.filterTarget(null,player,current) + }); + }, + onuse:function(links,player){ + player.addSkill('nao_shouqing3'); + player.addMark('nao_shouqing3',1,false); + }, + prompt:function(){ + var list=game.filterPlayer(function(current){ + return lib.skill.nao_shouqing2.filterTarget(null,_status.event.player,current); + }); + var str='对'+get.translation(list); + if(list.length>1) str+='中的一名角色'; + str+='使用一张【桃】'; + return str; + }, + }, + nao_shouqing3:{ + intro:{ + content:'手牌上限+#', + }, + mod:{ + maxHandcard:function(player,num){ + return num+player.countMark('nao_shouqing3'); + }, + }, + trigger:{player:'useCardAfter'}, + forced:true, + popup:false, + filter:function(event,player){ + return event.skill=='nao_shouqing2'; + }, + content:function(){ + player.draw(); + }, + }, shiorimiyuki_banyin:{ trigger:{player:['damageEnd','recoverEnd']}, direct:true, @@ -1527,7 +2325,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); 'step 1' if(result.bool){ - player.chooseTarget(lib.filter.notMe,true,'选择一名其他角色,对其造成1点雷属性伤害').set('',function(target){ + player.chooseTarget(lib.filter.notMe,true,'选择一名其他角色,对其造成1点雷属性伤害').set('ai',function(target){ var player=_status.event.player; return get.damageEffect(target,player,player,'thunder'); }); @@ -8767,7 +9565,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_lucia:'此花露西娅', key_kyousuke:'枣恭介', - key_yuri:'仲村ゆり', + key_yuri:'仲村由理', key_haruko:'神尾晴子', key_kagari:'篝', key_umi:'加藤うみ', @@ -8781,7 +9579,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_iwasawa:'岩泽雅美', key_kengo:'宫泽谦吾', key_yoshino:'吉野晴彦', - key_yui:'ユイ', + key_yui:'由依', key_tsumugi:'紬文德斯', key_saya:'朱鹭户沙耶', key_harukakanata:'三枝叶留佳&二木佳奈多', @@ -9031,6 +9829,40 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shiorimiyuki_tingxian_info:'出牌阶段开始时,你可以摸至多三张牌。若如此做,你回复1点体力,且此阶段结束时你失去X点体力。(X为你获得的牌中仍在手牌区的牌的数量)', shiorimiyuki_tingxian2:'铤险', + key_kud:'库特莉亚芙卡', + kud_qiaoshou:'巧手', + kud_qiaoshou_equip:'巧手', + kud_qiaoshou_end:'巧手', + kud_qiaoshou_backup:'巧手', + kud_qiaoshou_info:'出牌阶段/结束阶段,若你没有“巧”,则你可以将一张手牌作为“巧”置于武将牌上并摸一张牌,且视为装备了一张你选择的武器牌或进攻坐骑/防具牌或防御坐骑直到“巧”进入弃牌堆。出牌阶段结束时/准备阶段开始时,你将“巧”置入弃牌堆。', + kud_buhui:'不悔', + kud_buhui_info:'限定技,当你进入濒死状态时,你可以弃置“巧”和装备区内的所有牌(至少一张)并摸等量的牌,将体力回复至2点,获得技能〖重振〗。', + key_misuzu:'神尾观铃', + misuzu_hengzhou:'恒咒', + misuzu_hengzhou_info:'锁定技,准备阶段开始时,或当你受到1点伤害或回复1点体力后,你获得一个“诅咒”标记。你的手牌上限和摸牌阶段的额定摸牌数+X。结束阶段开始时,若X大于3,则你移去所有“诅咒”标记并失去1点体力。(X为“诅咒”标记数)', + misuzu_nongyin:'浓饮', + misuzu_nongyin_info:'当你需要使用【桃】时,你可将一张红色非锦囊牌当做【乐不思蜀】置入自己的判定区,然后视为使用一张【桃】。', + misuzu_zhongxing:'终幸', + misuzu_zhongxing_info:'每回合限一次,当你判定区的牌移动到其他区域后,你可令一名角色回复1点体力或摸两张牌。', + key_kamome:'久岛鸥', + kamome_yangfan:'扬帆', + kamome_yangfan_info:'锁定技,游戏开始时,你将一张【旅行箱】置入你的装备区。当你失去装备区内的一张牌后,你摸两张牌。', + kamome_huanmeng:'幻梦', + kamome_huanmeng_info:'准备阶段开始时,你可以观看牌堆顶的X+1张牌并可以按任意顺序置于牌堆顶或牌堆底。(X为你装备区内的牌数)', + kamome_jieban:'结伴', + kamome_jieban_info:'转换技。每回合限一次,当你受到或造成伤害后,阴:你可将两张牌交给一名其他角色,然后其交给你一张牌。阳:你可将一张牌交给一名其他角色,然后其交给你两张牌。', + kamome_suitcase:'旅行箱', + kamome_suitcase_info:'锁定技,你跳过你的判定阶段和弃牌阶段;当你即将翻面时,取消之。', + key_nao:'友利奈绪', + nao_duyin:'独隐', + nao_duyin2:'独隐', + nao_duyin_info:'一名其他角色的回合开始时,若你本局游戏内未对其发动过〖独隐〗,则你可以弃置一张牌或将武将牌翻面。若如此做,你不能成为其使用牌的目标,且对其使用牌没有距离限制且不计入使用次数直到你的下回合结束。', + nao_wanxin:'挽心', + nao_wanxin_info:'一轮游戏结束时,你可以令一名本轮内受到过伤害的角色摸两张牌,然后你与其将武将牌重置。', + nao_shouqing:'守情', + nao_shouqing2:'守情', + nao_shouqing3:'守情', + nao_shouqing_info:'其他角色的出牌阶段内可以对你使用【桃】。若如此做,其摸一张牌且本局游戏内的手牌上限+1。', yj_caoang:'SP曹昂', yjxuepin:'血拼', @@ -9268,6 +10100,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ diy_default:'常规', diy_key:'论外', diy_yongjian:'用间篇', + diy_yijiang:'设计比赛2020', }, }; }); diff --git a/character/refresh.js b/character/refresh.js index 9d4ac8492..227ce01dd 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -1024,7 +1024,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } if(cards.length){ player.chooseButton(['落英:选择要获得的牌',cards],[1,cards.length]).set('ai',function(button){ - return get.value(button.link,player,'raw'); + return get.value(button.link,_status.event.player,'raw'); }); } "step 2" @@ -1038,9 +1038,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:'reluoying', trigger:{global:'cardsDiscardAfter'}, direct:true, - check:function(event,player){ - return event.cards[0].name!='du'; - }, filter:function(event,player){ var evt=event.getParent().relatedEvent; if(!evt||evt.name!='judge') return; @@ -1051,7 +1048,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ "step 0" player.chooseButton(['落英:选择要获得的牌',trigger.cards],[1,trigger.cards.length]).set('ai',function(button){ - return get.value(button.link,player,'raw'); + return get.value(button.link,_status.event.player,'raw'); }); "step 1" if(result.bool){ @@ -2425,7 +2422,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //if(name=='phaseBegin'&&game.phaseNumber==1) return false; return player.storage.rehuashen&&player.storage.rehuashen.character.length>0; }, - banned:['lisu','sp_xiahoudun'], + banned:['lisu','sp_xiahoudun','xushao'], addHuashen:function(player){ if(!player.storage.rehuashen) return; if(!_status.characterlist){ @@ -4521,6 +4518,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, rejizhi:{ audio:2, + audioname:['lukang'], locked:false, trigger:{player:'useCard'}, frequent:true, diff --git a/character/shenhua.js b/character/shenhua.js index da1110c8a..b1d5075c8 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -4911,6 +4911,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ bazhen:{ audio:2, audioname:['re_sp_zhugeliang','ol_sp_zhugeliang','ol_pangtong'], + group:'bazhen_bagua', + locked:true, + }, + bazhen_bagua:{ + audio:'bazhen', + audioname:['re_sp_zhugeliang','ol_sp_zhugeliang','ol_pangtong'], equipSkill:true, noHidden:true, inherit:'bagua_skill', diff --git a/character/sp.js b/character/sp.js index b7979121a..558b883e5 100755 --- a/character/sp.js +++ b/character/sp.js @@ -754,7 +754,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, forced:true, audio:1, - logTarget:function(event){ + logTarget:function(event,player){ if(event.name=='phaseDraw') return event.player; return game.filterPlayer(function(current){ return current.isEnemyOf(player); @@ -2641,6 +2641,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var name2=event.triggername; for(var i=0;i<_status.characterlist.length;i++){ var name=_status.characterlist[i]; + if(name.indexOf('zuoci')!=-1||name.indexOf('xushao')!=-1) continue; var skills2=lib.character[name][3]; for(var j=0;j=0;i--){ + if(this.actionHistory[i].isMe){ + history=this.actionHistory[i];break; + } + } + if(!history) return null; + if(!key) return history; + if(!filter) return history[key]; + else{ + history=history.slice(0); + if(last) history=history.slice(0,history.indexOf(last)+1); + for(var i=0;i=0;i--){ + if(this.stat[i].isMe){ + stat=this.stat[i];break; + } + } + if(!stat) return null + if(!key) return stat; + return stat[key]; + }, queue:function(time){ if(time==false){ clearTimeout(this.queueTimeout); diff --git a/game/update.js b/game/update.js index 85a665097..032f7d12f 100644 --- a/game/update.js +++ b/game/update.js @@ -1,9 +1,8 @@ window.noname_update={ - version:'1.9.100.4.2', - update:'1.9.100.4.1', + version:'1.9.100.5', + update:'1.9.100.4.2', changeLog:[ - '官渡之战(对决->官渡)', - '邢道荣,新孙鲁育', + '武将技能设计征集比赛2020(Key组)', 'bug修复', ], @@ -11,7 +10,7 @@ window.noname_update={ //'card/extra.js', //'card/huanlekapai.js', //'card/sp.js', - 'card/standard.js', + //'card/standard.js', //'card/swd.js', //'card/mtg.js', //'card/gujian.js', @@ -26,14 +25,14 @@ 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/refresh.js', + //'character/old.js', + 'character/refresh.js', 'character/shenhua.js', 'character/sp.js', - 'character/tw.js', - 'character/standard.js', + //'character/tw.js', + //'character/standard.js', //'character/swd.js', //'character/xianjian.js', //'character/xinghuoliaoyuan.js', @@ -42,9 +41,9 @@ window.noname_update={ //'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/guozhan.js', //'mode/chess.js', //'mode/tafang.js', //'mode/single.js', diff --git a/image/card/kamome_suitcase.png b/image/card/kamome_suitcase.png new file mode 100644 index 000000000..3e1e2d827 Binary files /dev/null and b/image/card/kamome_suitcase.png differ diff --git a/image/character/key_kamome.jpg b/image/character/key_kamome.jpg new file mode 100644 index 000000000..66fb573e6 Binary files /dev/null and b/image/character/key_kamome.jpg differ diff --git a/image/character/key_kud.jpg b/image/character/key_kud.jpg new file mode 100644 index 000000000..c9523f65f Binary files /dev/null and b/image/character/key_kud.jpg differ diff --git a/image/character/key_misuzu.jpg b/image/character/key_misuzu.jpg new file mode 100644 index 000000000..062dee476 Binary files /dev/null and b/image/character/key_misuzu.jpg differ diff --git a/image/character/key_nao.jpg b/image/character/key_nao.jpg new file mode 100644 index 000000000..8e6b0dae7 Binary files /dev/null and b/image/character/key_nao.jpg differ diff --git a/mode/boss.js b/mode/boss.js index 6f67de36d..7ae2946bb 100644 --- a/mode/boss.js +++ b/mode/boss.js @@ -2555,6 +2555,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, boss_tiemian:{ inherit:'renwang_skill', + priority:-0.3, + equipSkill:false, filter:function(event,player){ if(!player.isEmpty(2)) return false; return lib.skill.renwang_skill.filter.apply(this,arguments); @@ -2562,6 +2564,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, boss_zhadao:{ inherit:'qinggang_skill', + equipSkill:false, }, boss_zhuxin:{ trigger:{player:'die'}, diff --git a/mode/identity.js b/mode/identity.js index cc9c39d58..54c6d09ee 100644 --- a/mode/identity.js +++ b/mode/identity.js @@ -1685,6 +1685,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } for(var i=0;i