diff --git a/audio/die/bianxi.mp3 b/audio/die/bianxi.mp3 new file mode 100644 index 000000000..a4208925e Binary files /dev/null and b/audio/die/bianxi.mp3 differ diff --git a/audio/die/caoxiancaohua.mp3 b/audio/die/caoxiancaohua.mp3 new file mode 100644 index 000000000..53286b096 Binary files /dev/null and b/audio/die/caoxiancaohua.mp3 differ diff --git a/audio/die/dc_liuba.mp3 b/audio/die/dc_liuba.mp3 new file mode 100644 index 000000000..e6c25cdca Binary files /dev/null and b/audio/die/dc_liuba.mp3 differ diff --git a/audio/die/huzhao.mp3 b/audio/die/huzhao.mp3 new file mode 100644 index 000000000..42bce3a5c Binary files /dev/null and b/audio/die/huzhao.mp3 differ diff --git a/audio/die/lukai.mp3 b/audio/die/lukai.mp3 new file mode 100644 index 000000000..33005596e Binary files /dev/null and b/audio/die/lukai.mp3 differ diff --git a/audio/die/niufu.mp3 b/audio/die/niufu.mp3 new file mode 100644 index 000000000..3363e287d Binary files /dev/null and b/audio/die/niufu.mp3 differ diff --git a/audio/die/re_liufeng.mp3 b/audio/die/re_liufeng.mp3 new file mode 100644 index 000000000..ff10c3db3 Binary files /dev/null and b/audio/die/re_liufeng.mp3 differ diff --git a/audio/die/re_sp_taishici.mp3 b/audio/die/re_sp_taishici.mp3 new file mode 100644 index 000000000..54e003865 Binary files /dev/null and b/audio/die/re_sp_taishici.mp3 differ diff --git a/audio/die/xiahoulingnv.mp3 b/audio/die/xiahoulingnv.mp3 new file mode 100644 index 000000000..0a69df752 Binary files /dev/null and b/audio/die/xiahoulingnv.mp3 differ diff --git a/audio/skill/dcliuzhuan1.mp3 b/audio/skill/dcliuzhuan1.mp3 new file mode 100644 index 000000000..09c6f0fce Binary files /dev/null and b/audio/skill/dcliuzhuan1.mp3 differ diff --git a/audio/skill/dcliuzhuan2.mp3 b/audio/skill/dcliuzhuan2.mp3 new file mode 100644 index 000000000..dfa7456b8 Binary files /dev/null and b/audio/skill/dcliuzhuan2.mp3 differ diff --git a/audio/skill/dcxiaoxi1.mp3 b/audio/skill/dcxiaoxi1.mp3 new file mode 100644 index 000000000..0ddb81ab1 Binary files /dev/null and b/audio/skill/dcxiaoxi1.mp3 differ diff --git a/audio/skill/dcxiaoxi2.mp3 b/audio/skill/dcxiaoxi2.mp3 new file mode 100644 index 000000000..6a0e5a999 Binary files /dev/null and b/audio/skill/dcxiaoxi2.mp3 differ diff --git a/audio/skill/dczhubi1.mp3 b/audio/skill/dczhubi1.mp3 new file mode 100644 index 000000000..68e2e45b5 Binary files /dev/null and b/audio/skill/dczhubi1.mp3 differ diff --git a/audio/skill/dczhubi2.mp3 b/audio/skill/dczhubi2.mp3 new file mode 100644 index 000000000..d0a7f1948 Binary files /dev/null and b/audio/skill/dczhubi2.mp3 differ diff --git a/audio/skill/dunxi1.mp3 b/audio/skill/dunxi1.mp3 new file mode 100644 index 000000000..c83af4ba1 Binary files /dev/null and b/audio/skill/dunxi1.mp3 differ diff --git a/audio/skill/dunxi2.mp3 b/audio/skill/dunxi2.mp3 new file mode 100644 index 000000000..abffb1936 Binary files /dev/null and b/audio/skill/dunxi2.mp3 differ diff --git a/audio/skill/fuping1.mp3 b/audio/skill/fuping1.mp3 new file mode 100644 index 000000000..22fa2481b Binary files /dev/null and b/audio/skill/fuping1.mp3 differ diff --git a/audio/skill/fuping2.mp3 b/audio/skill/fuping2.mp3 new file mode 100644 index 000000000..1708828b0 Binary files /dev/null and b/audio/skill/fuping2.mp3 differ diff --git a/audio/skill/huamu1.mp3 b/audio/skill/huamu1.mp3 new file mode 100644 index 000000000..3e6405782 Binary files /dev/null and b/audio/skill/huamu1.mp3 differ diff --git a/audio/skill/huamu2.mp3 b/audio/skill/huamu2.mp3 new file mode 100644 index 000000000..31bea6b60 Binary files /dev/null and b/audio/skill/huamu2.mp3 differ diff --git a/audio/skill/jisi1.mp3 b/audio/skill/jisi1.mp3 new file mode 100644 index 000000000..e92b78bfe Binary files /dev/null and b/audio/skill/jisi1.mp3 differ diff --git a/audio/skill/jisi2.mp3 b/audio/skill/jisi2.mp3 new file mode 100644 index 000000000..a66baefc7 Binary files /dev/null and b/audio/skill/jisi2.mp3 differ diff --git a/audio/skill/liangyuan1.mp3 b/audio/skill/liangyuan1.mp3 new file mode 100644 index 000000000..8b2a1de1f Binary files /dev/null and b/audio/skill/liangyuan1.mp3 differ diff --git a/audio/skill/liangyuan2.mp3 b/audio/skill/liangyuan2.mp3 new file mode 100644 index 000000000..7499ee916 Binary files /dev/null and b/audio/skill/liangyuan2.mp3 differ diff --git a/audio/skill/lkbushi1.mp3 b/audio/skill/lkbushi1.mp3 new file mode 100644 index 000000000..36dce4d1e Binary files /dev/null and b/audio/skill/lkbushi1.mp3 differ diff --git a/audio/skill/lkbushi2.mp3 b/audio/skill/lkbushi2.mp3 new file mode 100644 index 000000000..78739f9ca Binary files /dev/null and b/audio/skill/lkbushi2.mp3 differ diff --git a/audio/skill/lkzhongzhuang1.mp3 b/audio/skill/lkzhongzhuang1.mp3 new file mode 100644 index 000000000..ea71cd8dc Binary files /dev/null and b/audio/skill/lkzhongzhuang1.mp3 differ diff --git a/audio/skill/lkzhongzhuang2.mp3 b/audio/skill/lkzhongzhuang2.mp3 new file mode 100644 index 000000000..330f7abb5 Binary files /dev/null and b/audio/skill/lkzhongzhuang2.mp3 differ diff --git a/audio/skill/midu1.mp3 b/audio/skill/midu1.mp3 new file mode 100644 index 000000000..632333b27 Binary files /dev/null and b/audio/skill/midu1.mp3 differ diff --git a/audio/skill/midu2.mp3 b/audio/skill/midu2.mp3 new file mode 100644 index 000000000..0bf438e25 Binary files /dev/null and b/audio/skill/midu2.mp3 differ diff --git a/audio/skill/qianmeng1.mp3 b/audio/skill/qianmeng1.mp3 new file mode 100644 index 000000000..eb8d04d79 Binary files /dev/null and b/audio/skill/qianmeng1.mp3 differ diff --git a/audio/skill/qianmeng2.mp3 b/audio/skill/qianmeng2.mp3 new file mode 100644 index 000000000..68f2fb5dc Binary files /dev/null and b/audio/skill/qianmeng2.mp3 differ diff --git a/audio/skill/rejixu1.mp3 b/audio/skill/rejixu1.mp3 new file mode 100644 index 000000000..24bd01802 Binary files /dev/null and b/audio/skill/rejixu1.mp3 differ diff --git a/audio/skill/rejixu2.mp3 b/audio/skill/rejixu2.mp3 new file mode 100644 index 000000000..23e5240f3 Binary files /dev/null and b/audio/skill/rejixu2.mp3 differ diff --git a/audio/skill/weilie1.mp3 b/audio/skill/weilie1.mp3 new file mode 100644 index 000000000..78e0d0df5 Binary files /dev/null and b/audio/skill/weilie1.mp3 differ diff --git a/audio/skill/weilie2.mp3 b/audio/skill/weilie2.mp3 new file mode 100644 index 000000000..1bb70dbca Binary files /dev/null and b/audio/skill/weilie2.mp3 differ diff --git a/audio/skill/xiansi_re_liufeng1.mp3 b/audio/skill/xiansi_re_liufeng1.mp3 new file mode 100644 index 000000000..6511f32cd Binary files /dev/null and b/audio/skill/xiansi_re_liufeng1.mp3 differ diff --git a/audio/skill/xiansi_re_liufeng2.mp3 b/audio/skill/xiansi_re_liufeng2.mp3 new file mode 100644 index 000000000..7e1e55de0 Binary files /dev/null and b/audio/skill/xiansi_re_liufeng2.mp3 differ diff --git a/audio/skill/xianwang1.mp3 b/audio/skill/xianwang1.mp3 new file mode 100644 index 000000000..e9c65ca0a Binary files /dev/null and b/audio/skill/xianwang1.mp3 differ diff --git a/audio/skill/xianwang2.mp3 b/audio/skill/xianwang2.mp3 new file mode 100644 index 000000000..7fa4900b2 Binary files /dev/null and b/audio/skill/xianwang2.mp3 differ diff --git a/audio/skill/xiongrao1.mp3 b/audio/skill/xiongrao1.mp3 new file mode 100644 index 000000000..89b4ffe68 Binary files /dev/null and b/audio/skill/xiongrao1.mp3 differ diff --git a/audio/skill/xiongrao2.mp3 b/audio/skill/xiongrao2.mp3 new file mode 100644 index 000000000..58bdd4d28 Binary files /dev/null and b/audio/skill/xiongrao2.mp3 differ diff --git a/character/extra.js b/character/extra.js index edbcd70cd..bc8d8b04a 100755 --- a/character/extra.js +++ b/character/extra.js @@ -2170,20 +2170,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.goto(2); } 'step 1' - target.storage.resghuishi=result.control; - target.markSkill('resghuishi'); + target.storage.resghuishi_mark=result.control; + target.markSkill('resghuishi_mark'); var info=lib.skill[result.control]; - if(info.filter&&!info.charlotte&&!info.sghuishi_filter){ - info.sghuishi_filter=info.filter; + if(info.filter&&!info.charlotte&&!info.resghuishi_filter){ + info.resghuishi_filter=info.filter; info.filter=function(event,player){ - if(player.storage.resghuishi) return true; - return this.sghuishi_filter.apply(this,arguments); + if(player.storage.resghuishi_mark) return true; + return this.resghuishi_filter.apply(this,arguments); } } 'step 2' player.loseMaxHp(2); }, - intro:{content:'发动【$】时无视条件'}, + intro:{content:'未发动'}, ai:{ order:0.1, expose:0.2, @@ -2202,6 +2202,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, + subSkill:{mark:{intro:{content:'发动【$】时无视条件'}}}, }, sghuishi:{ audio:2, @@ -4127,7 +4128,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ "step 0" - player.addToExpansion(get.cards(7),'gain2').gaintag.add('qixing'); + player.addToExpansion(get.cards(7),'draw').gaintag.add('qixing'); "step 1" var cards=player.getExpansions('qixing'); if(!cards.length||!player.countCards('h')){ @@ -4891,7 +4892,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ game.addVideo('showCards',player,['涉猎',get.cardsInfo(event.cards)]); game.addVideo('delay',null,2); "step 1" - var next=player.chooseButton([0,5],true); + var list=[]; + for(var i of cards) list.add(get.suit(i,false)); + var next=player.chooseButton(list.length,true); next.set('dialog',event.videoId); next.set('filterButton',function(button){ for(var i=0;i0&&player.countCards('h')>0; + }, + filterTarget:lib.filter.notMe, + selectTarget:function(){ + return [1,_status.event.player.hp]; + }, + multitarget:true, + multiline:true, + content:function(){ + "step 0" + targets.sortBySeat(); + event.num=0; + "step 1" + if(!event.caicuolist) event.caicuolist=[]; + targets[event.num].chooseBool("是否押杀?").ai=function(event,player){ + var evt=_status.event.getParent(); + if(get.attitude(targets[event.num],evt.player)>0) return evt.player.countCards('h','sha')?false:true; + return Math.random()<0.5; + }; + "step 2" + if(result.bool){ + targets[event.num].chat('有杀'); + game.log(targets[event.num],'认为',player,'#g有杀'); + if(!player.countCards('h','sha')) event.caicuolist.add(targets[event.num]); + }else{ + targets[event.num].chat('没杀'); + game.log(targets[event.num],'认为',player,'#y没有杀'); + if(player.countCards('h','sha')) event.caicuolist.add(targets[event.num]); + } + event.num++; + game.delay(); + if(event.num0){ + if(player.countCards('h','sha')){ + player.markAuto('rejixu_sha',event.caicuolist); + player.addTempSkill('rejixu_sha','phaseUseAfter'); + player.draw(event.caicuolist.length) + event.finish(); + } + else{ + event.num=0; + } + } + else event.finish(); + "step 4" + var target=event.caicuolist[event.num]; + if(target.countCards('he')>0){ + player.line(target); + player.discardPlayerCard(true,'he',target); + } + event.num++; + if(event.num0; + }, + content:function(){ + var list=player.getStorage('rejixu_sha').filter(function(target){ + if(trigger.targets.contains(target)||!target.isIn()) return false; + return lib.filter.targetEnabled2(trigger.card,player,target) + }); + if(list.length>0){ + trigger.targets.addArray(list); + game.log(list,'也成为了',trigger.card,'的目标'); + } + }, + }, + }, + }, + //界刘封 + rexiansi:{ + inherit:'xiansi', + audio:'xiansi', + audioname:['re_liufeng'], + group:['rexiansi2','xiansix'], + }, + rexiansi2:{ + enable:'chooseToUse', + filter:function(event,player){ + return player.getExpansions('xiansi').length>Math.max(0,player.hp)&&event.filterCard({name:'sha',isCard:true},player,event); + }, + chooseButton:{ + dialog:function(event,player){ + return ui.create.dialog('陷嗣',player.getExpansions('xiansi'),'hidden'); + }, + backup:function(links,player){ + return { + viewAs:{name:'sha',isCard:true}, + filterCard:()=>false, + selectCard:-1, + card:links[0], + precontent:function(){ + player.logSkill('rexiansi'); + player.loseToDiscardpile(lib.skill.rexiansi2_backup.card); + delete event.result.skill; + }, + }; + }, + prompt:()=>'请选择【杀】的目标', + }, + ai:{ + order:function(){ + return get.order({name:'sha'})+0.6; + }, + result:{player:1}, + }, + }, //界荀彧 oljieming:{ audio:2, @@ -1211,10 +1385,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(result.control=='选项一'){ player.chooseCard('h',true,function(card,player){ if(!game.checkMod(card,player,'unchanged','cardEnabled2',player)) return false; - return player.canUse(get.autoViewAs({name:'sha'},[hs]),_status.event.getTrigger().player,false); + return player.canUse(get.autoViewAs({name:'sha'},[card]),_status.event.getTrigger().player,false); },'选择一张手牌当做【杀】对'+get.translation(trigger.player)+'使用').set('ai',function(card){ var player=_status.event.player; - return get.effect(_status.event.getTrigger().player,get.autoViewAs({name:'sha'},[hs]),player,player)/Math.max(1,get.value(card)); + return get.effect(_status.event.getTrigger().player,get.autoViewAs({name:'sha'},[card]),player,player)/Math.max(1,get.value(card)); }); } else{ @@ -12443,6 +12617,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_xunyu:'界荀彧', oljieming:'节命', oljieming_info:'当你受到1点伤害后或死亡后,你可令一名角色摸X张牌。然后若其手牌数大于X,则其将手牌弃置至X张(X为其体力上限且至多为5)。', + re_liufeng:'界刘封', + rexiansi:'陷嗣', + rexiansi2:'陷嗣', + rexiansi_info:'①准备阶段开始时,你可以将一至两名角色的各一张牌置于你的武将牌上,称为“逆”。②当一名角色需要对你使用【杀】时,其可以移去两张“逆”,然后视为对你使用一张【杀】。③若你的“逆”数大于体力值,则你可以移去一张“逆”并视为使用一张【杀】。', + re_sp_taishici:'界SP太史慈', + re_sp_taishici_ab:'太史慈', + rejixu:"击虚", + rejixu_info:"出牌阶段限一次。若你有手牌,则你可以选择至多X名角色,令这些角色猜测你的手牌区中是否有【杀】。若你:有【杀】,则你本阶段使用【杀】的次数上限+Y,且当你于本阶段内使用【杀】指定目标后,你可以令这Y名角色也成为此【杀】的目标;没有【杀】,则你弃置这Y名角色的各一张牌。然后你摸Y张牌(X为你的体力值,Y为这些角色中猜错的角色数)。", refresh_standard:'界限突破·标', refresh_feng:'界限突破·风', diff --git a/character/sp.js b/character/sp.js index c618cb1cc..ea4ec7dd3 100755 --- a/character/sp.js +++ b/character/sp.js @@ -6936,6 +6936,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return (name=='neifa_basic')!=(get.type(cardx,player)=='basic') })); if(num>0) player.addMark(name,num,false); + else player.storage[name]=0; } }, ai:{ diff --git a/character/sp2.js b/character/sp2.js index 44d18cc72..a768cf4a6 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,6 +4,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ + huzhao:['male','wei',3,['midu','xianwang']], + niufu:['male','qun','4/7',['dcxiaoxi','xiongrao']], + bianxi:['male','wei',4,['dunxi']], xiahoulingnv:['female','wei',4,['fuping','weilie']], dc_liuba:['male','shu',3,['dczhubi','dcliuzhuan']], zhangxun:['male','qun',4,['suizheng']], @@ -171,10 +174,351 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp2_huangjia:['caomao','liubian','dc_liuyu'], sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'], sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger'], - sp_decade:['huaman','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','re_dongzhao','zhouyi','mamidi','dc_jiben','dc_luotong','guanning','dc_huangchengyan','dc_jiling','dc_sunru','zhaoang','dc_wangchang','fengfang','zhangxun','xiahoulingnv','dc_liuba'], + sp_decade:['huaman','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','re_dongzhao','zhouyi','mamidi','dc_jiben','dc_luotong','guanning','dc_huangchengyan','dc_jiling','dc_sunru','zhaoang','dc_wangchang','fengfang','zhangxun','xiahoulingnv','dc_liuba','niufu','huzhao','bianxi'], } }, skill:{ + //胡昭 + midu:{ + audio:2, + enable:'phaseUse', + usable:1, + chooseButton:{ + dialog:function(event,player){ + var dialog=ui.create.dialog('弥笃:选择要废除或恢复的装备栏','hidden'); + dialog.classList.add('withbg'); + dialog.noforcebutton=true; + var list1=[],list2=[]; + for(var i=1;i<6;i++){ + (player.isDisabled(i)?list2:list1).push(i); + } + var addTable=function(list){ + var table=document.createElement('div'); + table.classList.add('add-setting'); + table.style.margin='0'; + table.style.width='100%'; + table.style.position='relative'; + for(var i of list){ + var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode'); + td.innerHTML=''+get.translation('equip'+i)+'栏'; + td.link=i; + td.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button); + for(var j in lib.element.button){ + td[j]=lib.element.button[j]; + } + table.appendChild(td); + dialog.buttons.add(td); + } + dialog.content.appendChild(table); + } + if(list1.length){ + dialog.addText('未废除的装备栏'); + addTable(list1); + } + if(list2.length){ + dialog.addText('已废除的装备栏'); + addTable(list2); + } + return dialog; + }, + filter:function(button,player){ + if(!ui.selected.buttons.length) return true; + if(player.isDisabled(ui.selected.buttons[0]).link) return false; + return !player.isDisabled(button.link); + }, + check:function(button){ + var player=_status.event.player; + if(player.isDisabled(button.link)){ + if(player.hasCard(function(card){ + return get.subtype(card)==('equip'+button.link); + },'hs')) return 15; + return 10; + } + if(player.isEmpty(button.link)&&!player.hasCard(function(card){ + return get.subtype(card)==('equip'+button.link)&&player.canUse(card,player)&&get.effect(player,card,player,player)>0; + },'hs')) return 5; + return 0; + }, + select:[1,5], + backup:function(links,player){ + if(player.isDisabled(links[0])){ + return { + audio:'midu', + selectCard:-1, + selectTarget:-1, + filterCard:()=>false, + filterTarget:()=>false, + equip:links[0], + content:function(){ + player.enableEquip(lib.skill.midu_backup.equip); + player.addTempSkill('huomo',{player:'phaseBegin'}); + }, + } + } + else{ + return { + audio:'midu', + selectCard:-1, + filterCard:()=>false, + filterTarget:true, + equip:links.sort(), + content:function(){ + var list=lib.skill.midu_backup.equip; + for(var i of list) player.disableEquip(i); + target.draw(list.length) + }, + ai:{ + tag:{ + draw:1, + }, + result:{ + target:2, + }, + }, + } + } + }, + prompt:function(links,player){ + if(player.isDisabled(links[0])){ + return '恢复一个装备栏并获得〖活墨〗'; + } + var numc=get.cnNumber(links.length); + return '废除'+numc+'个装备栏并令一名角色摸'+numc+'张牌'; + }, + }, + derivation:'huomo', + ai:{ + order:8, + result:{player:1}, + }, + subSkill:{backup:{}}, + }, + xianwang:{ + mod:{ + globalTo:function(source,player,distance){ + var num=player.countDisabled(); + if(num>0) return distance+(num>2?2:1); + }, + }, + }, + //牛辅 + dcxiaoxi:{ + auto:2, + trigger:{player:'phaseUseBegin'}, + forced:true, + filter:function(event,player){ + return player.maxHp>1; + }, + content:function(){ + 'step 0' + if(player.maxHp<=2) event._result={index:0}; + else player.chooseControl('1点','2点').set('prompt','宵袭:减少1或2点体力上限').set('ai',function(){ + var player=_status.event.player; + if(!game.hasPlayer(function(current){ + if(!player.inRange(current)||get.attitude(player,current)>=0) return false; + if(get.effect(current,{name:'shunshou_copy2'},player,player)>0&¤t.countCards('h')+current.countCards('e',function(card){ + return get.value(card,current)>0; + })>1) return true; + if(get.effect(current,{name:'sha'},player,player)>0&¤t.countCards('hs','shan')+current.hp>1) return true; + })) return 0; + return 1; + }); + 'step 1' + player.loseMaxHp(1+result.index); + event.num=1+result.index; + 'step 2' + if(!game.hasPlayer((current)=>player.inRange(current))) event.finish(); + else player.chooseTarget('请选择【宵袭】的目标','然后你选择一项:⒈获得该角色的'+get.cnNumber(num)+'张牌。⒉视为对其使用'+get.cnNumber(num)+'张【杀】。',function(card,player,target){ + return player.inRange(target); + },true).set('ai',function(target){ + var player=_status.event.player; + if(get.attitude(player,target)>=0) return 0; + var eff1=get.effect(target,{name:'shunshou_copy2'},player,player); + if(eff1>0&&target.countCards('h')+target.countCards('e',function(card){ + return get.value(card,target)>0; + })>1) eff1*=1.6; + var eff2=player.canUse('sha',target)?get.effect(target,{name:'sha'},player,player):0; + if(eff2>0&&target.countCards('hs','shan')+target.hp>1) eff2*=2; + return Math.max(eff1,eff2); + }); + 'step 3' + var target=result.targets[0]; + player.line(target,'green'); + event.target=target; + var bool1=target.countGainableCards(player,'he')>0; + var bool2=player.canUse('sha',target); + if(!bool1&&!bool2) event.finish(); + else if(bool1&&bool2){ + var str=get.translation(target),numx=get.cnNumber(num); + player.chooseControl().set('choiceList',[ + '获得'+str+'的'+numx+'张牌', + '视为对'+str+'使用'+numx+'张【杀】', + ]).set('ai',function(){ + var player=_status.event.player,target=_status.event.getParent().target; + var eff1=get.effect(target,{name:'shunshou_copy2'},player,player); + if(eff1>0&&target.countCards('h')+target.countCards('e',function(card){ + return get.value(card,target)>0; + })>1) eff1*=1.6; + var eff2=player.canUse('sha',target)?get.effect(target,{name:'sha'},player,player):0; + if(eff2>0&&target.countCards('hs','shan')+target.hp>1) eff2*=2; + return eff1>eff2?0:1; + }); + } + else event._result={index:bool1?0:1}; + 'step 4' + if(result.index==0){ + player.gainPlayerCard(target,true,num,'he'); + event.finish(); + } + 'step 5' + event.num--; + if(player.canUse('sha',target,false)){ + player.useCard({name:'sha',isCard:true},target,false); + if(event.num>0) event.redo(); + } + }, + }, + xiongrao:{ + audio:2, + trigger:{player:'phaseZhunbeiBegin'}, + limited:true, + skillAnimation:true, + animationColor:'soil', + prompt:function(event,player){ + var str='是否发动【熊扰】?'; + str+=('(可摸'+get.cnNumber(Math.max(0,7-player.maxHp))+'张牌)'); + return str; + }, + logTarget:(event,player)=>game.filterPlayer((current)=>current!=player), + check:function(event,player){ + return player.maxHp<=3; + }, + content:function(){ + player.awakenSkill('xiongrao'); + game.countPlayer(function(current){ + if(current!=player) current.addTempSkill('xiongrao_blocker'); + }); + var num=7-player.maxHp; + if(num>0){ + player.gainMaxHp(num); + player.draw(num); + } + }, + subSkill:{ + blocker:{ + charlotte:true, + init:function(player,skill){ + player.addSkillBlocker(skill); + }, + onremove:function(player,skill){ + player.removeSkillBlocker(skill); + }, + charlotte:true, + locked:true, + skillBlocker:function(skill,player){ + var info=get.info(skill); + return info&&!info.charlotte&&!get.is.locked(skill)&&!info.limited&&!info.juexingji; + }, + mark:true, + marktext:'扰', + intro:{ + content:function(list,player,skill){ + var storage=player.getSkills(null,false,false).filter(function(i){ + return lib.skill.xiongrao_blocker.skillBlocker(i,player); + }); + if(storage.length) return '失效技能:'+get.translation(storage); + return '无失效技能'; + } + } + }, + } + }, + //卞喜 + dunxi:{ + audio:2, + trigger:{player:'useCardAfter'}, + direct:true, + filter:function(event,player){ + if(!get.tag(event.card,'damage')) return false; + for(var i of event.targets){ + if(i!=player&&i.isIn()) return true; + } + return false; + }, + content:function(){ + 'step 0' + var targets=trigger.targets.filter(function(current){ + return current!=player&¤t.isIn(); + }); + if(targets.length==1){ + event.target=targets[0]; + player.chooseBool(get.prompt('dunxi',event.target),'令'+get.translation(event.target)+'获得一枚“钝”标记').set('goon',get.attitude(player,event.target)<0).set('ai',()=>_status.event.goon); + } + else{ + player.chooseTarget(get.prompt('dunxi'),'选择一名目标角色获得一枚“钝”标记',function(card,player,target){ + return target!=player&&_status.event.getTrigger().targets.contains(target); + }).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(att>=0) return 0; + return -att/(1+target.hasMark('dunxi')); + }); + } + 'step 1' + if(result.bool){ + var target=event.target||result.targets[0]; + player.logSkill('dunxi',target); + target.addMark('dunxi',1); + game.delayx(); + } + }, + intro:{content:'mark',name2:'钝'}, + group:'dunxi_random', + subSkill:{ + random:{ + audio:'dunxi', + trigger:{global:'useCardToPlayer'}, + forced:true, + locked:false, + filter:function(event,player){ + if(!event.player.hasMark('dunxi')||event.targets.length!=1||event.getParent()._dunxi) return false; + var type=get.type2(event.card,false); + return (type=='basic'||type=='trick'); + }, + logTarget:'player', + line:'fire', + content:function(){ + 'step 0' + trigger.getParent()._dunxi=true; + trigger.player.removeMark('dunxi',1); + var target=trigger.target; + event.target=target; + trigger.targets.remove(target); + trigger.getParent().triggeredTargets1.remove(target); + trigger.untrigger(); + game.delayx(); + 'step 1' + var list; + if(get.type(event.card)!='delay') list=game.filterPlayer(function(current){ + return lib.filter.targetEnabled2(trigger.card,trigger.player,current); + }); + else list=game.filterPlayer(function(current){ + return current.canAddJudge(event.card); + }); + if(list.length) target=list.randomGet(); + trigger.targets.push(target); + trigger.player.line(target,'fire'); + game.log(trigger.card,'的目标被改为',target); + if(target==event.target){ + trigger.player.loseHp(); + var evt=trigger.getParent('phaseUse'); + if(evt&&evt.player==trigger.player) evt.skipped=true; + var num=trigger.player.countMark('dunxi'); + if(num>0) trigger.player.removeMark('dunxi',num); + } + }, + }, + }, + }, //夏侯令女 fuping:{ audio:2, @@ -830,7 +1174,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{global:'damageBegin1'}, filter:function(event,player){ var source=event.source; - if(!source||event.getParent().type!='card') return false; + if(!source||source!=_status.currentPhase||event.getParent().type!='card') return false; return !source.hasHistory('sourceDamage',function(evt){ return evt.getParent().type=='card'; }); @@ -5385,7 +5729,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'damageBegin1'}, direct:true, filter:function(event,player){ - return player.hasCard((card)=>lib.filter.cardDiscardable(card,player,'rewangzu'),'h'); + return event.source&&player!=event.source&&player.hasCard((card)=>lib.filter.cardDiscardable(card,player,'rewangzu'),'h'); }, usable:1, content:function(){ @@ -5495,7 +5839,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.goon=!player.hasAllHistory('sourceDamage',function(evt){ return evt.player==trigger.player; }); - player.chooseControl('蓝色','红色','绿色','黄色','cancel2').set('prompt',get.prompt('shanshen')).set('prompt2','令〖隅泣〗中的一个数字+2'+(event.goon?'并回复1点体力':'')).set('ai',function(){ + var list=lib.skill.yuqi.getInfo(player); + player.chooseControl('蓝色('+list[0]+')','红色('+list[1]+')','绿色('+list[2]+')','黄色('+list[3]+')','cancel2').set('prompt',get.prompt('shanshen')).set('prompt2','令〖隅泣〗中的一个数字+2'+(event.goon?'并回复1点体力':'')).set('ai',function(){ var player=_status.event.player,info=lib.skill.yuqi.getInfo(player); if(info[0]蓝色','红色','绿色','黄色','cancel2').set('prompt',get.prompt('xianjing')).set('prompt2','令〖隅泣〗中的一个数字+1').set('ai',function(){ + var list=lib.skill.yuqi.getInfo(player); + player.chooseControl('蓝色('+list[0]+')','红色('+list[1]+')','绿色('+list[2]+')','黄色('+list[3]+')','cancel2').set('prompt',get.prompt('xianjing')).set('prompt2','令〖隅泣〗中的一个数字+1').set('ai',function(){ var player=_status.event.player,info=lib.skill.yuqi.getInfo(player); if(info[0]蓝色','红色','绿色','黄色','cancel2').set('prompt','是否令〖隅泣〗中的一个数字+1?').set('ai',function(){ + var list=lib.skill.yuqi.getInfo(player); + player.chooseControl('蓝色('+list[0]+')','红色('+list[1]+')','绿色('+list[2]+')','黄色('+list[3]+')','cancel2').set('prompt','是否令〖隅泣〗中的一个数字+1?').set('ai',function(){ var player=_status.event.player,info=lib.skill.yuqi.getInfo(player); if(info[0]冯妤长大成人后,有倾国之貌。一日袁术登城观景,得见冯妤,心中非常喜欢,于是将其纳为夫人。冯方心忧自家女儿不谙世事,于是将可以让人更显妩媚的家传宝梳交给她,希望能借此使其获得袁术的宠爱。其后果然传来袁术偏爱冯夫人的消息,冯方因此宽心,接受了袁术的征辟,为其效力。然而好景不长,没过多久,冯妤自缢身亡的消息传出,冯方悲愤不已,弃官而走,自此销声匿迹。', zhangxun:'张勋,东汉末年军阀袁术帐下大将,袁术称帝后受封大将军。初平四年(公元193年),袁术引兵入陈留,被曹操、袁绍合力击败,逃至雍丘。后入九江,杀死扬州刺史陈温而自领之,并任命张勋、桥蕤为大将。时孙策依附于袁术,被表为怀义校尉,张勋对其倾心敬服。袁术称帝后,任命张勋为大将军,攻打吕布,大败而还。其后曹操又以袁术称帝为名南下进攻,袁术闻之大惊,即走度淮,留张勋、桥蕤守蕲阳以拒曹。曹操破其军,斩桥蕤,张勋退走。建安四年(公元199年),袁术病死,张勋率残军欲南投孙策,途中被袁术旧部刘勋俘虏,其后下落不明。', xiahoulingnv:'夏侯令女,字令女,名不详。生卒年不详,三国时期人物。夏侯文宁之女(《三国演义》中为夏侯令之女),曹文叔之妻。其事迹见于《三国志·魏书·诸夏侯曹传第九》裴松之注引皇甫谧《列女传》。而在《三国演义》中,由于作者断句错误,便认为“夏侯令女”是“夏侯令之女”之意(见《三国演义》第107回:“乃夏侯令女也”,由其语气可推断)。', + bianxi:'小说《三国演义》里的人物。汜水关守将,并州人氏。原是黄巾余党,后投曹操,拨来守汜水关。善使流星锤。在镇国寺设下伏兵欲谋害千里寻兄的关羽,但是寺中僧人普净暗示加以解救。最后被关羽斩杀。', + niufu:'牛辅,东汉末年武将,东汉相国董卓的女婿。曾任中郎将,征讨白波军,不能取胜。董卓被杀时,牛辅别屯于陕地。吕布派李肃前去征讨牛辅,被牛辅击败。后来,牛辅营中有士兵半夜背叛出逃,造成内乱,牛辅以为整营皆叛,于是带着金银珠宝,独与亲信胡赤儿等五六人逾城北渡河。赤儿等人以绳索系在牛辅腰间将其从城头放下,但赤儿等因为谋财而在离地面数丈高的地方就松开了绳子使得牛辅重重摔在地上腰部受伤,而后赤儿与诸胡人将牛辅斩首,将其首级送去长安。', + huzhao:'胡昭(162年-250年),字孔明,颍川(治今河南禹州)人。汉末三国时期隐士、书法家。胡昭善长隶书,与钟繇、邯郸淳、卫觊、韦诞齐名。有“钟氏小巧,胡氏豪放”之说,世人并称“钟胡”。', }, characterTitle:{ wulan:'#b对决限定武将', @@ -17828,6 +18178,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ fuping_info:'①其他角色对你使用的结算结束后,若你未因此技能记录过此牌的名称且你有未废除的装备栏,则你可以废除一个装备栏,记录此牌的名称。②每回合每种牌名限一次。你可以将一张非基本牌当做〖浮萍①〗记录过的基本牌或锦囊牌使用或打出。③若你的所有装备栏均已被废除,则你使用牌无距离限制。', weilie:'炜烈', weilie_info:'每局游戏限X次。出牌阶段,你可以弃置一张牌并选择一名已受伤的角色,令该角色回复1点体力。然后若其体力值小于体力上限,则其摸一张牌(X为你〖浮萍①〗中的记录数+1)。', + bianxi:'卞喜', + dunxi:'钝袭', + dunxi_info:'①当你使用具有伤害标签的牌结算结束后,你可以令一名不为你的目标角色获得一枚“钝”。②有“钝”的角色使用基本牌或锦囊牌指定唯一目标时,你令其移去一枚“钝”。系统随机选择一名角色,并将此牌的目标改为该角色。若该角色和原目标相同,则其移去所有“钝”,失去1点体力。若其正处于出牌阶段内,则结束此阶段。', + niufu:'牛辅', + dcxiaoxi:'宵袭', + dcxiaoxi_info:'锁定技。出牌阶段开始时,你声明X并减X点体力上限(X∈[1,2])。然后你选择一名攻击范围内的其他角色并选择一项:⒈获得该角色的X张牌。⒉视为对其使用X张【杀】。', + xiongrao:'熊扰', + xiongrao_info:'限定技。准备阶段开始时,你可以选择所有其他角色。这些角色本回合内所有不为锁定技、限定技、觉醒技的普通技能失效。然后你将体力上限增加至7点并摸X张牌(X为你以此法增加的体力上限数)。', + huzhao:'胡昭', + midu:'弥笃', + midu_info:'出牌阶段限一次。你可以选择一项:⒈废除任意个装备栏,并令一名角色摸等量的牌。⒉恢复一个已经被废除的装备栏,然后你获得〖活墨〗直到下回合开始。', + xianwang:'贤望', + xianwang_info:'锁定技。若你有被废除的装备栏,则其他角色至你的距离+1;若废除的装备栏数大于2,则改为距离+2。', sp_whlw:"文和乱武", sp_zlzy:"逐鹿中原", diff --git a/character/xinghuoliaoyuan.js b/character/xinghuoliaoyuan.js index 6a09d75a1..858d3992c 100755 --- a/character/xinghuoliaoyuan.js +++ b/character/xinghuoliaoyuan.js @@ -1562,6 +1562,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, characterReplace:{ duji:['re_duji','duji'], + sp_taishici:['re_sp_taishici','sp_taishici'], }, translate:{ xinghuoliaoyuan:'星火燎原', diff --git a/character/yijiang.js b/character/yijiang.js index 18971244f..1a37f19fb 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -7365,67 +7365,62 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, huomo:{ audio:2, - group:['huomo_count','huomo_count2','huomo_use'] - }, - huomo2:{}, - huomo_count:{ - init:function(player){ - player.storage.huomo={}; - }, - trigger:{global:'phaseBefore'}, - silent:true, - content:function(){ - player.storage.huomo={}; - } - }, - huomo_count2:{ - trigger:{player:['useCard1']}, - silent:true, - firstDo:true, - filter:function(event){ - return get.type(event.card)=='basic'; - }, - content:function(){ - if(!player.storage.huomo) player.storage.huomo={}; - player.storage.huomo[trigger.card.name]=true; - } - }, - huomo_use:{ + autoname:['huzhao'], enable:'chooseToUse', + onChooseToUse:function(event){ + if(game.online||event.huomo_list) return; + var list=lib.skill.huomo.getUsed(event.player); + event.set('huomo_list',list); + }, + getUsed:function(player){ + var list=[]; + player.getHistory('useCard',function(evt){ + if(get.type(evt.card,null,false)=='basic') list.add(evt.card.name); + }); + return list; + }, hiddenCard:function(player,name){ - return (['sha','shan','tao','jiu'].contains(name)&&(!player.storage.huomo||!player.storage.huomo[name])&&player.hasCard(function(card){ + if(get.type(name)!='basic') return false; + var list=lib.skill.huomo.getUsed(player); + if(list.contains(name)) return false; + return player.hasCard(function(card){ return get.color(card)=='black'&&get.type(card)!='basic'; - },'he')); + },'eh'); }, filter:function(event,player){ - if(!player.storage.huomo) player.storage.huomo={}; - if((!player.storage.huomo.sha&&event.filterCard({name:'sha'},player,event))|| - (!player.storage.huomo.jiu&&event.filterCard({name:'jiu'},player,event))|| - (!player.storage.huomo.shan&&event.filterCard({name:'shan'},player,event))|| - (!player.storage.huomo.tao&&event.filterCard({name:'tao'},player,event))){ - return player.hasCard(function(card){ - return get.color(card)=='black'&&get.type(card)!='basic'; - },'he'); + if(event.type=='wuxie'||!player.hasCard(function(card){ + return get.color(card)=='black'&&get.type(card)!='basic'; + },'eh')) return false; + var list=event.huomo_list||lib.skill.huomo.getUsed(player); + for(var name of lib.inpile){ + if(get.type(name)!='basic'||list.contains(name)) continue; + var card={name:name,isCard:true}; + if(event.filterCard(card,player,event)) return true; + if(name=='sha'){ + for(var nature of lib.inpile_nature){ + card.nature=nature; + if(event.filterCard(card,player,event)) return true; + } + } } return false; }, chooseButton:{ dialog:function(event,player){ - var list=[]; - if(!player.storage.huomo.sha&&event.filterCard({name:'sha'},player,event)){ - list.push(['基本','','sha']); - for(var j of lib.inpile_nature) list.push(['基本','','sha',j]); + var vcards=[]; + var list=event.huomo_list||lib.skill.huomo.getUsed(player); + for(var name of lib.inpile){ + if(get.type(name)!='basic'||list.contains(name)) continue; + var card={name:name,isCard:true}; + if(event.filterCard(card,player,event)) vcards.push(['基本','',name]); + if(name=='sha'){ + for(var nature of lib.inpile_nature){ + card.nature=nature; + if(event.filterCard(card,player,event)) vcards.push(['基本','',name,nature]); + } + } } - if(!player.storage.huomo.tao&&event.filterCard({name:'tao'},player,event)){ - list.push(['基本','','tao']); - } - if(!player.storage.huomo.shan&&event.filterCard({name:'shan'},player,event)){ - list.push(['基本','','shan']); - } - if(!player.storage.huomo.jiu&&event.filterCard({name:'jiu'},player,event)){ - list.push(['基本','','jiu']); - } - return ui.create.dialog('活墨',[list,'vcard'],'hidden'); + return ui.create.dialog('活墨',[vcards,'vcard'],'hidden'); }, check:function(button){ var player=_status.event.player; @@ -7486,7 +7481,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ order:function(){ var player=_status.event.player; var event=_status.event; - if(!player.storage.huomo.jiu&&event.filterCard({name:'jiu'},player,event)&&get.effect(player,{name:'jiu'})>0){ + var list=lib.skill.huomo.getUsed(player); + if(!list.contains('jiu')&&event.filterCard({name:'jiu'},player,event)&&get.effect(player,{name:'jiu'})>0){ return 3.1; } return 2.9; @@ -7499,16 +7495,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.hasCard(function(card){ return get.color(card)=='black'&&get.type(card)!='basic'; },'he')){ - if(!player.storage.huomo) player.storage.huomo={}; + var list=lib.skill.huomo.getUsed(player); if(tag=='respondSha'){ if(arg!='use') return false; - if(player.storage.huomo.sha) return false; + if(list.contains('sha')) return false; } else if(tag=='respondShan'){ - if(player.storage.huomo.shan) return false; - } - else{ - if(player.storage.huomo.tao&&player.storage.huomo.jiu) return false; + if(list.contains('shan')) return false; } } else{ @@ -11820,11 +11813,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, xiansi:{ audio:2, + audioname:['re_liufeng'], trigger:{player:'phaseZhunbeiBegin'}, direct:true, content:function(){ "step 0" - player.chooseTarget(get.prompt2('xiansi'),[1,2],function(card,player,target){ + player.chooseTarget(get.prompt2(event.name),[1,2],function(card,player,target){ return target.countCards('he')>0; },function(target){ return -get.attitude(_status.event.player,target); @@ -11832,7 +11826,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "step 1" if(result.bool){ result.targets.sortBySeat(); - player.logSkill('xiansi',result.targets); + player.logSkill(event.name,result.targets); event.targets=result.targets; } else{ @@ -11857,31 +11851,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:'expansion', markcount:'expansion', }, - onremove:function(player,skill){ - var cards=player.getExpansions(skill); + onremove:function(player){ + var cards=player.getExpansions('xiansi'); if(cards.length) player.loseToDiscardpile(cards); }, ai:{ threaten:2 }, - global:'xiansi2' + global:'xiansi2', + group:'xiansix', }, + xiansix:{}, xiansi2:{ enable:'chooseToUse', - audio:2, + audio:true, + audioname:['re_liufeng'], viewAs:{name:'sha',isCard:true}, filter:function(event,player){ return game.hasPlayer(function(current){ - return current.hasSkill('xiansi')&¤t.getExpansions('xiansi').length>1&&event.filterTarget({name:'sha'},player,current); + return current.hasSkill('xiansix')&¤t.getExpansions('xiansi').length>1&&event.filterTarget({name:'sha'},player,current); }); }, filterTarget:function(card,player,target){ var bool=false; var players=ui.selected.targets.slice(0); for(var i=0;i1) bool=true;break; + if(players[i].hasSkill('xiansix')&&players[i].getExpansions('xiansi').length>1) bool=true;break; } - if(!bool&&(!target.hasSkill('xiansi')||target.getExpansions('xiansi').length<=1)) return false; + if(!bool&&(!target.hasSkill('xiansix')||target.getExpansions('xiansi').length<=1)) return false; return _status.event._backup.filterTarget.apply(this,arguments); }, complexSelect:true, @@ -11896,11 +11893,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ log:false, precontent:function(){ "step 0" - var targets=game.filterPlayer(function(current){ - if(event.result.targets.contains(current)&¤t.getExpansions('xiansi')){ - return current.getExpansions('xiansi').length>1; - } - return false; + var targets=event.result.targets.filter(function(current){ + return current.getExpansions('xiansi').length>1&¤t.hasSkill('xiansix'); }); if(targets.length==1){ event.target=targets[0]; @@ -12371,6 +12365,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yj_jushou:['re_jushou','xin_jushou','yj_jushou'], guohuanghou:['re_guohuanghou','guohuanghou'], liuchen:['re_liuchen','liuchen'], + liufeng:['re_liufeng','liufeng'], }, translate:{ old_huaxiong:'华雄', @@ -12677,10 +12672,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qinwang2:'勤王', qinwang_info:'主公技,当你需要使用或打出一张【杀】时,你可以弃置一张牌,然后视为你发动了〖激将①〗。若有角色响应,则该角色打出【杀】时摸一张牌。', huomo:'活墨', - huomo_use:'活墨', - //huomo_use_backup:'活墨', - huomo_info:'当你需要使用一张本回合内未使用过的基本牌时,你可以将一张黑色非基本牌置于牌堆顶,然后视为你使用了此基本牌', - huomo_use_info:'当你需要使用一张本回合内未使用过的基本牌时,你可以将一张黑色非基本牌置于牌堆顶,然后视为你使用了此基本牌', + huomo_info:'当你需要使用一张本回合内未使用过的基本牌时,你可以将一张黑色非基本牌置于牌堆顶,视为使用此基本牌。', zuoding:'佐定', zuoding_info:'当其他角色于其回合内使用♠牌指定目标后,若本回合内没有角色受到过伤害,则你可以令其中一名目标角色摸一张牌', taoxi:'讨袭', @@ -12740,6 +12732,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yuce:'御策', yuce_info:'当你受到伤害后,你可以展示一张手牌,并令伤害来源选择一项:弃置一张与此牌类型不同的手牌,或令你回复一点体力。', xiansi:'陷嗣', + xiansix:'陷嗣', xiansi_bg:'逆', xiansi2:'陷嗣', xiansi_info:'准备阶段开始时,你可以将一至两名角色的各一张牌置于你的武将牌上,称为“逆”;当一名角色需要对你使用【杀】时,其可以移去两张“逆”,然后视为对你使用了一张【杀】。', diff --git a/game/asset.js b/game/asset.js index 0503b3c36..67c44aa5a 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.116', + 'v1.9.116.2', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -176,6 +176,16 @@ window.noname_asset_list=[ 'audio/card/male/yuanjiao.mp3', 'audio/card/male/zhibi.mp3', + 'audio/die/bianxi.mp3', + 'audio/die/caoxiancaohua.mp3', + 'audio/die/dc_liuba.mp3', + 'audio/die/huzhao.mp3', + 'audio/die/lukai.mp3', + 'audio/die/niufu.mp3', + 'audio/die/re_liufeng.mp3', + 'audio/die/re_sp_taishici.mp3', + 'audio/die/xiahoulingnv.mp3', + 'audio/die/baosanniang.mp3', 'audio/die/beimihu.mp3', 'audio/die/bianfuren.mp3', @@ -996,6 +1006,42 @@ window.noname_asset_list=[ 'audio/effect/tori_no_uta.mp3', 'audio/effect/win.mp3', + + 'audio/skill/dcliuzhuan1.mp3', + 'audio/skill/dcliuzhuan2.mp3', + 'audio/skill/dcxiaoxi1.mp3', + 'audio/skill/dcxiaoxi2.mp3', + 'audio/skill/dczhubi1.mp3', + 'audio/skill/dczhubi2.mp3', + 'audio/skill/dunxi1.mp3', + 'audio/skill/dunxi2.mp3', + 'audio/skill/fuping1.mp3', + 'audio/skill/fuping2.mp3', + 'audio/skill/huamu1.mp3', + 'audio/skill/huamu2.mp3', + 'audio/skill/jisi1.mp3', + 'audio/skill/jisi2.mp3', + 'audio/skill/liangyuan1.mp3', + 'audio/skill/liangyuan2.mp3', + 'audio/skill/lkbushi1.mp3', + 'audio/skill/lkbushi2.mp3', + 'audio/skill/lkzhongzhuang1.mp3', + 'audio/skill/lkzhongzhuang2.mp3', + 'audio/skill/midu1.mp3', + 'audio/skill/midu2.mp3', + 'audio/skill/qianmeng1.mp3', + 'audio/skill/qianmeng2.mp3', + 'audio/skill/rejixu1.mp3', + 'audio/skill/rejixu2.mp3', + 'audio/skill/weilie1.mp3', + 'audio/skill/weilie2.mp3', + 'audio/skill/xiansi_re_liufeng1.mp3', + 'audio/skill/xiansi_re_liufeng2.mp3', + 'audio/skill/xianwang1.mp3', + 'audio/skill/xianwang2.mp3', + 'audio/skill/xiongrao1.mp3', + 'audio/skill/xiongrao2.mp3', + 'audio/skill/aichen1.mp3', 'audio/skill/aichen2.mp3', 'audio/skill/anguo1.mp3', @@ -5024,6 +5070,12 @@ window.noname_asset_list=[ 'image/card/zhuangshu_trick.png', 'image/card/zhuangshu_equip.png', + 'image/character/bianxi.jpg', + 'image/character/huzhao.jpg', + 'image/character/niufu.jpg', + 'image/character/re_liufeng.jpg', + 'image/character/re_sp_taishici.jpg', + 'image/character/sp_jiben.jpg', 'image/character/shenpei.jpg', 'image/character/re_menghuo.jpg', 'image/character/re_zhurong.jpg', diff --git a/game/game.js b/game/game.js index 3bbc1e3d9..056b9a65d 100644 --- a/game/game.js +++ b/game/game.js @@ -4631,7 +4631,7 @@ init:true, onclick:function(bool){ game.saveConfig('change_identity',bool,this._link.config.mode); - if(!_status.event.getParent().showConfig&&!_status.event.showConfig) return; + if(get.mode()!='identity'||!_status.event.getParent().showConfig&&!_status.event.showConfig) return; var dialog; if(ui.cheat2&&ui.cheat2.backup) dialog=ui.cheat2.backup; else dialog=_status.event.dialog; @@ -4647,7 +4647,7 @@ init:true, onclick:function(bool){ game.saveConfig('change_choice',bool,this._link.config.mode); - if(!_status.event.getParent().showConfig&&!_status.event.showConfig) return; + if(get.mode()!='identity'||!_status.event.getParent().showConfig&&!_status.event.showConfig) return; if(!ui.cheat&&get.config('change_choice')) ui.create.cheat(); else if(ui.cheat&&!get.config('change_choice')){ ui.cheat.close(); @@ -4670,7 +4670,7 @@ init:false, onclick:function(bool){ game.saveConfig('continue_game',bool,this._link.config.mode); - if(get.config('continue_game')){ + if(get.config('continue_game')&&get.mode()=='identity'){ if(!ui.continue_game&&_status.over&&!_status.brawl&&!game.no_continue_game){ ui.continue_game=ui.create.control('再战',game.reloadCurrent); } @@ -4687,7 +4687,7 @@ init:true, onclick:function(bool){ game.saveConfig('dierestart',bool,this._link.config.mode); - if(get.config('dierestart')){ + if(get.config('dierestart')&&get.mode()=='identity'){ if(!ui.restart&&game.me.isDead()&&!_status.connectMode){ ui.restart=ui.create.control('restart',game.reload); } @@ -4703,7 +4703,7 @@ init:false, onclick:function(bool){ game.saveConfig('revive',bool,this._link.config.mode); - if(get.config('revive')){ + if(get.config('revive')&&get.mode()=='identity'){ if(!ui.revive&&game.me.isDead()){ ui.revive=ui.create.control('revive',ui.click.dierevive); } @@ -5050,7 +5050,7 @@ init:true, onclick:function(bool){ game.saveConfig('free_choose',bool,this._link.config.mode); - if(!_status.event.getParent().showConfig&&!_status.event.showConfig) return; + if(get.mode()!='guozhan'||!_status.event.getParent().showConfig&&!_status.event.showConfig) return; if(!ui.cheat2&&get.config('free_choose')) ui.create.cheat2(); else if(ui.cheat2&&!get.config('free_choose')){ ui.cheat2.close(); @@ -5069,7 +5069,7 @@ init:true, onclick:function(bool){ game.saveConfig('change_identity',bool,this._link.config.mode); - if(!_status.event.getParent().showConfig&&!_status.event.showConfig) return; + if(get.mode()!='guozhan'||!_status.event.getParent().showConfig&&!_status.event.showConfig) return; var dialog; if(ui.cheat2&&ui.cheat2.backup) dialog=ui.cheat2.backup; else dialog=_status.event.dialog; @@ -5085,7 +5085,7 @@ init:true, onclick:function(bool){ game.saveConfig('change_choice',bool,this._link.config.mode); - if(!_status.event.getParent().showConfig&&!_status.event.showConfig) return; + if(get.mode()!='guozhan'||!_status.event.getParent().showConfig&&!_status.event.showConfig) return; if(!ui.cheat&&get.config('change_choice')) ui.create.cheat(); else if(ui.cheat&&!get.config('change_choice')){ ui.cheat.close(); @@ -5109,7 +5109,7 @@ intro:'游戏结束后可选择用相同的武将再进行一局游戏', onclick:function(bool){ game.saveConfig('continue_game',bool,this._link.config.mode); - if(get.config('continue_game')){ + if(get.config('continue_game')&&get.mode()=='guozhan'){ if(!ui.continue_game&&_status.over&&!_status.brawl&&!game.no_continue_game){ ui.continue_game=ui.create.control('再战',game.reloadCurrent); } @@ -5125,7 +5125,7 @@ init:true, onclick:function(bool){ game.saveConfig('dierestart',bool,this._link.config.mode); - if(get.config('dierestart')){ + if(get.config('dierestart')&&get.mode()=='guozhan'){ if(!ui.restart&&game.me.isDead()&&!_status.connectMode){ ui.restart=ui.create.control('restart',game.reload); } @@ -5141,7 +5141,7 @@ init:false, onclick:function(bool){ game.saveConfig('revive',bool,this._link.config.mode); - if(get.config('revive')){ + if(get.config('revive')&&get.mode()=='guozhan'){ if(!ui.revive&&game.me.isDead()){ ui.revive=ui.create.control('revive',ui.click.dierevive); } @@ -7663,9 +7663,10 @@ if(!alerted&&window.bannedExtensions.contains(lib.config.extensions[i])){ alerted=true; alert('读取某些扩展时出现问题。'); - }; + } var extcontent=localStorage.getItem(lib.configprefix+'extension_'+lib.config.extensions[i]); if(extcontent){ + var backup_onload=lib.init.onload; _status.evaluatingExtension=true; try{ eval(extcontent); @@ -7673,6 +7674,7 @@ catch(e){ console.log(e); } + lib.init.onload=backup_onload; _status.evaluatingExtension=false; } else if(lib.config.mode!='connect'||(!localStorage.getItem(lib.configprefix+'directstart')&&show_splash)){ @@ -7682,8 +7684,12 @@ } else{ if(lib.config.mode!='connect'||(!localStorage.getItem(lib.configprefix+'directstart')&&show_splash)){ + var alerted=false; for(var i=0;i=8&&get.type(card)!='equip')?-10:0; + var addi=(get.value(card)>=8&&get.type(card)!='equip')?-6:0; if(card.name=='du') addi-=3; var source=_status.event.source; var player=_status.event.player; var getn=function(card){ - if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13; - return get.number(card); + if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13*(event.small?-1:1); + return get.number(card)*(event.small?-1:1); } if(source&&source!=player&&get.attitude(player,source)>1){ return -getn(card)-get.value(card)/2+addi; @@ -19585,12 +19591,12 @@ } var player=get.owner(card); var getn=function(card){ - if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13; - return get.number(card); + if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13*(event.small?-1:1); + return get.number(card)*(event.small?-1:1); } var event=_status.event.getParent(); var to=(player==event.player?event.target:event.player); - var addi=(get.value(card)>=8&&get.type(card)!='equip')?-10:0; + var addi=(get.value(card)>=8&&get.type(card)!='equip')?-6:0; if(card.name=='du') addi-=5; if(player==event.player){ if(get.attitude(player,to)>0&&event.small){ @@ -19599,7 +19605,7 @@ return getn(card)-get.value(card)/2+addi; } else{ - if(get.attitude(player,to)>0&&!event.small){ + if(get.attitude(player,to)>0){ return -getn(card)-get.value(card)/2+addi; } return getn(card)-get.value(card)/2+addi; @@ -29992,7 +29998,9 @@ }, import:function(type,content){ if(type=='extension'){ + var backup_onload=lib.init.onload; game.loadExtension(content); + lib.init.onload=backup_onload; } else{ if(!lib.imported[type]){ @@ -36640,7 +36648,7 @@ roundNumber:0, shuffleNumber:0, }; - window['b'+'ann'+'e'+'dE'+'x'+'ten'+'s'+'i'+'o'+'ns']=['\u5047装\u65e0敌']; + window['b'+'ann'+'e'+'dE'+'x'+'ten'+'s'+'i'+'o'+'ns']=[]; var ui={ updates:[], thrown:[], @@ -51931,7 +51939,7 @@ case 'event': return get.eventInfoOL(item); default: if(typeof level!='number'){ - level=5; + level=8; } if(Array.isArray(item)){ if(level==0){ @@ -53553,7 +53561,7 @@ 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.pointerdiv'); - addFavourite.link=node.link; + addFavourite.link=node.name; if(lib.config.favouriteCharacter.contains(node.name)){ addFavourite.innerHTML='移除收藏'; } diff --git a/game/update.js b/game/update.js index 70a08e759..0fa58c8ed 100644 --- a/game/update.js +++ b/game/update.js @@ -1,10 +1,8 @@ window.noname_update={ - version:'1.9.116.1', - update:'1.9.116', + version:'1.9.116.2', + update:'1.9.116.1', changeLog:[ - '派对浪客、樱庭星罗入选稿公布', - 'OL曹宪曹华、十周年刘巴、陆凯、夏侯令女', - '花色字体显示优化', + '十周年卞喜、胡昭、牛辅、界刘封、界SP太史慈', '技能调整与bug修复', ], files:[ diff --git a/image/character/bianxi.jpg b/image/character/bianxi.jpg new file mode 100644 index 000000000..566a901ef Binary files /dev/null and b/image/character/bianxi.jpg differ diff --git a/image/character/huzhao.jpg b/image/character/huzhao.jpg new file mode 100644 index 000000000..f543cf386 Binary files /dev/null and b/image/character/huzhao.jpg differ diff --git a/image/character/niufu.jpg b/image/character/niufu.jpg new file mode 100644 index 000000000..3831f1411 Binary files /dev/null and b/image/character/niufu.jpg differ diff --git a/image/character/re_liufeng.jpg b/image/character/re_liufeng.jpg new file mode 100644 index 000000000..e8d39e7b7 Binary files /dev/null and b/image/character/re_liufeng.jpg differ diff --git a/image/character/re_sp_taishici.jpg b/image/character/re_sp_taishici.jpg new file mode 100644 index 000000000..e8c1c9dd9 Binary files /dev/null and b/image/character/re_sp_taishici.jpg differ diff --git a/image/character/sp_jiben.jpg b/image/character/sp_jiben.jpg index c51c8418f..4aff44837 100644 Binary files a/image/character/sp_jiben.jpg and b/image/character/sp_jiben.jpg differ