import { game } from '../noname.js'; game.import('character',function(lib,game,ui,get,ai,_status){ return { name:'old', connect:true, characterSort:{ old:{ old_standard:['ol_yuanshu'], old_shenhua:['old_shen_zhaoyun','old_caocao',"yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","old_xiaoqiao","pangde","xuhuang",'junk_sunquan',"huangzhong","new_caoren",'old_chendao'], old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong",'old_guanyu'], old_yijiang1:["masu","xushu","xin_yujin","old_xusheng","old_lingtong","fazheng",'old_gaoshun','re_yujin'], old_yijiang2:["old_zhonghui","madai",'old_handang','old_liubiao','oldre_liubiao','old_guanzhang','old_wangyi'], old_yijiang3:["liru","old_zhuran","old_fuhuanghou","old_caochong"], old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan",'old_caorui'], old_yijiang5:["old_caoxiu","old_zhuzhi"], old_yijiang67:["ol_zhangrang",'old_huanghao','old_liyan'], old_sp:['old_shixie',"panfeng","old_wanglang","old_maliang","old_zhangxingcai","old_wangyun",'old_dingfeng','old_guanyinping'], old_yingbian:['junk_simayi','old_yangyan','old_yangzhi'], old_mobile:["old_caochun"], }, }, character:{ old_shixie:['male','qun',3,['biluan','lixia']], panfeng:['male','qun',4,['kuangfu']], old_shen_zhaoyun:['male','shen',2,['oldjuejing','oldlonghun'],['shu']], old_guanyinping:['female','shu',3,['xueji_old','oldhuxiao','oldwuji']], old_caocao:['male','shen',3,['junkguixin','feiying'],['die_audio']], old_chendao:['male','shu',4,['drlt_wanglie']], old_liyan:['male','shu',3,['duliang','fulin']], old_guanzhang:['male','shu',4,['old_fuhun']], new_caoren:['male','wei',4,['moon_jushou','jiewei']], huangzhong:['male','shu',4,['liegong']], junk_sunquan:['male','shen',4,['dili','yuheng'],['wei']], old_dingfeng:['male','wu',4,['fenxun','duanbing']], old_huanghao:['male','shu',3,['oldqinqing','oldhuisheng']], oldre_liubiao:['male','qun',3,['zishou','zongshi']], old_liubiao:['male','qun',4,['oldzishou','zongshi']], old_gaoshun:['male','qun',4,['xianzhen','jinjiu']], old_caorui:['male','wei',3,['huituo','oldmingjian','xingshuai'],['zhu']], old_handang:['male','wu',4,['oldgongji','oldjiefan']], old_yangzhi:['female','jin',3,['wanyi','maihuo']], old_yangyan:['female','jin',3,['xuanbei','xianwan']], madai:['male','shu',4,['mashu','oldqianxi']], xuhuang:['male','wei',4,['gzduanliang']], junk_simayi:['male','jin',3,['buchen','smyyingshi','xiongzhi','quanbian'],['hiddenSkill']], fazheng:['male','shu',3,['enyuan','xuanhuo']], ol_yuanshu:['male','qun',4,['wangzun','tongji']], pangde:['male','qun',4,['mashu','mengjin']], ol_huaxiong:["male","qun",6,["new_reyaowu"]], old_wangyun:['male','qun',4,['wylianji','moucheng'],['clan:太原王氏']], old_xiaoqiao:['female','wu',3,['tianxiang','hongyan']], weiyan:['male','shu',4,['kuanggu']], xiahouyuan:['male','wei',4,['shensu']], old_zhangxingcai:['female','shu',3,['oldshenxian','qiangwu']], old_fuhuanghou:['female','qun',3,['oldzhuikong','oldqiuyuan']], old_caochong:['male','wei',3,['oldrenxin','oldchengxiang']], yuji:['male','qun',3,['old_guhuo']], zhangjiao:['male','qun',3,['leiji','guidao','huangtian'],['zhu']], old_zhangfei:['male','shu',4,['new_repaoxiao','new_tishen']], old_zhaoyun:['male','shu',4,['longdan','new_yajiao']], old_huatuo:['male','qun',3,['jijiu','chulao']], old_guanyu:['male','shu',4,['wusheng','yijue']], old_caochun:['male','wei',4,['shanjia']], masu:['male','shu',3,['xinzhan','huilei']], xushu:['male','shu',3,['xswuyan','jujian'],['border:wei']], liru:['male','qun',3,['juece','mieji','fencheng']], xin_yujin:['male','wei',4,['jieyue']], //lusu:['male','wu',3,['haoshi','dimeng']], //yuanshao:['male','qun',4,['luanji','xueyi'],['zhu']], old_zhonghui:['male','wei',3,['zzhenggong','zquanji','zbaijiang'],['clan:颍川钟氏']], old_xusheng:['male','wu',4,['pojun']], old_zhuran:['male','wu',4,['olddanshou']], old_lingtong:['male','wu',4,['oldxuanfeng']], old_caoxiu:['male','wei',4,['taoxi']], old_caozhen:['male','wei',4,['sidi']], old_maliang:['male','shu',3,['xiemu','naman']], old_chenqun:['male','wei',3,['dingpin','oldfaen']], old_zhuhuan:['male','wu',4,['youdi']], old_zhuzhi:['male','wu',4,['anguo']], old_zhugezhan:["male","shu",3,["old_zuilun","old_fuyin"]], ol_zhangrang:['male','qun',3,['xintaoluan'],['sex:male_castrated']], //ol_manchong:['male','wei',3,['yuce','junxing']], old_guanqiujian:["male","wei",4,["drlt_zhenrong","drlt_hongju"],[]], old_wanglang:['male','wei',3,['gushe','jici']], old_wangyi:['female','wei',3,['oldzhenlie','oldmiji']], re_yujin:['male','wei',4,['yizhong']], }, skill:{ //山包初版神赵 oldjuejing:{ audio:'xinjuejing', trigger:{player:'phaseDrawBegin2'}, filter:function(event,player){ return !event.numFixed&&player.getHp()num+2, }, }, oldlonghun:{ audio:'relonghun', inherit:'xinlonghun', prompt:()=>`将${get.cnNumber(Math.max(1,get.player().getHp()))}张♦牌当做杀,♥牌当做桃,♣牌当做闪,♠牌当做无懈可击使用或打出`, selectCard:()=>Math.max(1,get.player().getHp()), complexCard:true, precontent:function(){ delete event.result.skill; player.logSkill('oldlonghun'); }, ai:{ respondSha:true, respondShan:true, skillTagFilter:function(player,tag){ var name; switch(tag){ case 'respondSha':name='diamond';break; case 'respondShan':name='club';break; case 'save':name='heart';break; } if(!player.countCards('hes',{suit:name})) return false; }, order:function(item,player){ if(player&&_status.event.type=='phase'){ var max=0; var list=['sha','tao']; var map={sha:'diamond',tao:'heart'} for(var i=0;i=Math.max(1,player.getHp())&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){ var temp=get.order({name:name,nature:name=='sha'?'fire':null}); if(temp>max) max=temp; } } max/=1.1; return max; } return 2; }, }, hiddenCard:function(player,name){ if(name=='wuxie'&&_status.connectMode&&player.countCards('hes')>0) return true; if(name=='wuxie') return player.countCards('hes',{suit:'spade'})>=Math.max(1,get.player().getHp()); if(name=='tao') return player.countCards('hes',{suit:'heart'})>=Math.max(1,get.player().getHp()); }, }, //魏武帝 junkguixin:{ init:function(){ if(!_status.junkguixin){ _status.junkguixin=[]; if(!_status.characterlist){ lib.skill.pingjian.initList(); } for(const name of _status.characterlist){ if(!lib.character[name][3]) continue; _status.junkguixin.addArray(lib.character[name][3].filter(skill=>{ var info=get.info(skill); return info&&info.zhuSkill&&(!info.ai||!info.ai.combo); })); } } }, unique:true, audio:'guixin', trigger:{player:'phaseEnd'}, direct:true, content:function(){ 'step 0' var controls=['获得技能','修改势力','cancel2']; if(!_status.junkguixin.some(skill=>!player.hasSkill(skill,null,false,false))) controls.shift(); player.chooseControl(controls).set('prompt',get.prompt2('junkguixin')).set('ai',()=>_status.event.controls.length==3?'获得技能':'cancel2'); 'step 1' if(result.control!='cancel2'){ var next=game.createEvent('junkguixinx'); next.player=player; next.setContent(lib.skill.junkguixin['content_'+result.control]); } }, content_获得技能:function(){ 'step 0' var list=_status.junkguixin.slice().filter(skill=>!player.hasSkill(skill,null,false,false)); if(!list.length){event.finish();return;} list=list.map(skill=>{ return [ skill, '', ]; }); player.chooseButton([ '归心:选择获得一个主公技', [list,'textbutton'], ],true).set('ai',button=>1+Math.random()); 'step 1' if(result.bool){ player.logSkill('junkguixin'); player.addSkills(result.links[0]); } }, content_修改势力:function(){ 'step 0' player.chooseTarget('请选择【归心】的目标','更改一名其他角色的势力',lib.filter.notMe,true).set('ai',target=>1+Math.random()); 'step 1' if(result.bool){ var target=result.targets[0]; event.target=target; player.logSkill('junkguixin',target); var list=lib.group.slice(); list.removeArray(['shen',target.group]); player.chooseControl(list).set('prompt','请选择'+get.translation(target)+'变更的势力').set('ai',()=>_status.event.controls.randomGet()); } else event.finish(); 'step 2' if(result.control){ player.popup(get.translation(result.control+'2')); target.changeGroup(result.control); } }, }, oldqinqing:{ audio:'qinqing', mode:['identity','versus'], available:function(mode){ if(mode=='versus'&&_status.mode!='four') return false; if(mode=='identity'&&_status.mode=='purple') return false; }, trigger:{player:'phaseJieshuBegin'}, direct:true, filter:function(event,player){ var zhu=get.zhu(player); if(!zhu||!zhu.isZhu) return false; return game.hasPlayer(function(current){ return current!=zhu&¤t!=player&¤t.inRange(zhu); }); }, content:function(){ 'step 0' player.chooseTarget(get.prompt2('dcqinqing'),function(card,player,target){ var zhu=get.zhu(player); return target!=player&&target.inRange(zhu); }).set('ai',function(target){ var zhu=get.zhu(player); var he=target.countCards('he'); if(get.attitude(_status.event.player,target)>0){ if(target.countCards('h')>zhu.countCards('h')+1) return 0.1; } else{ if(he>zhu.countCards('h')+1) return 2; if(he>0) return 1; } return 0; }); 'step 1' if(result.bool){ var target=result.targets[0]; event.target=target; player.logSkill('dcqinqing',target); if(target.countDiscardableCards(player,'he')) player.discardPlayerCard(target,'he',true); target.draw(); } else{ event.finish(); } 'step 2' var zhu=get.zhu(player); if(zhu&&zhu.isIn()){ if(target.countCards('h')>zhu.countCards('h')) player.draw(); } } }, oldhuisheng:{ audio:'huisheng', trigger:{player:'damageBegin4'}, direct:true, filter:function(event,player){ if(!player.countCards('he')) return false; if(!event.source||event.source==player||!event.source.isIn()) return false; if(player.storage.oldhuisheng&&player.storage.oldhuisheng.includes(event.source)) return false; return true; }, init:function(player){ if(player.storage.oldhuisheng) player.storage.oldhuisheng=[]; }, content:function(){ 'step 0' if(!player.storage.oldhuisheng) player.storage.oldhuisheng=[]; player.storage.oldhuisheng.push(trigger.source); var att=(get.attitude(player,trigger.source)>0); var goon=false; if(player.hp==1){ goon=true; } else{ var he=player.getCards('he'); var num=0; for(var i=0;i=2){ goon=true;break; } } } } player.chooseCard('he',[1,player.countCards('he')],get.prompt2('oldhuisheng',trigger.source)).set('ai',function(card){ if(_status.event.att){ return 10-get.value(card); } if(_status.event.goon){ return 8-get.value(card); } if(!ui.selected.cards.length){ return 7-get.value(card); } return 0; }).set('goon',goon).set('att',att); 'step 1' if(result.bool){ player.logSkill('oldhuisheng',trigger.source); game.delay(); event.num=result.cards.length; var goon=false; if(event.num>2||get.attitude(trigger.source,player)>=0){ goon=true; } var forced=false; var str='获得其中一张牌并防止伤害'; if(trigger.source.countCards('he')=2)||player.skipList.includes('phaseUse'); }, filter:function(event,player){ return !event.numFixed&&player.isDamaged(); }, content:function(){ trigger.num+=player.getDamagedHp(); player.skip('phaseUse'); }, ai:{ threaten:1.5 } }, oldgongji:{ audio:'gongji', enable:['chooseToUse','chooseToRespond'], locked:false, filterCard:{type:'equip'}, position:'hes', viewAs:{ name:'sha', storage:{oldgongji:true} }, viewAsFilter:function(player){ if(!player.countCards('hes',{type:'equip'})) return false; }, prompt:'将一张装备牌当无距离限制的【杀】使用或打出', check:function(card){ var val=get.value(card); if(_status.event.name=='chooseToRespond') return 1/Math.max(0.1,val); return 5-val; }, mod:{ targetInRange:function(card){ if(card.storage&&card.storage.oldgongji) return true; }, }, ai:{ respondSha:true, skillTagFilter:function(player){ if(!player.countCards('hes',{type:'equip'})) return false; }, }, }, oldjiefan:{ audio:'jiefan', enable:'chooseToUse', filter:function(event,player){ return event.type=='dying'&&_status.currentPhase&&_status.currentPhase.isIn(); }, direct:true, content:function(){ player.chooseToUse(function(card,player,event){ if(get.name(card)!='sha') return false; return lib.filter.filterCard.apply(this,arguments); },get.prompt2('oldjiefan')).set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){ if(target!=_status.currentPhase&&!ui.selected.targets.includes(_status.currentPhase)) return false; return lib.filter.filterTarget.apply(this,arguments); }).set('logSkill','oldjiefan').set('oncard',function(){ _status.event.player.addTempSkill('oldjiefan_recover'); }).set('custom',{ add:{}, replace:{ window:()=>{ ui.click.cancel(); } }, }); }, ai:{ save:true, order:3, result:{player:1} }, subSkill:{ recover:{ // audio:'jiefan', trigger:{source:'damageBegin2'}, filter:function(event,player){ return event.getParent(4).name=='oldjiefan'; }, forced:true, popup:false, charlotte:true, content:function(){ trigger.cancel(); var evt=event.getParent('_save'); var card={name:'tao',isCard:true}; if(evt&&evt.dying&&player.canUse(card,evt.dying)){ player.useCard(card,evt.dying,'oldjiefan_recover'); } } } } }, oldmingjian:{ audio:'mingjian', trigger:{player:'phaseUseBefore'}, filter:function(event,player){ return player.countCards('h'); }, direct:true, content:function(){ 'step 0' player.chooseTarget(get.prompt('oldmingjian'),'跳过出牌阶段并将所有手牌交给一名其他角色,你结束此回合,然后其于此回合后获得一个额外的出牌阶段',lib.filter.notMe).set('ai',target=>{ var player=_status.event.player,att=get.attitude(player,target); if(target.hasSkillTag('nogain')) return 0.01*att; if(player.countCards('h')==player.countCards('h','du')) return -att; if(target.hasJudge('lebu')) att*=1.25; if(get.attitude(player,target)>3){ var basis=get.threaten(target)*att; if(player==get.zhu(player)&&player.hp<=2&&player.countCards('h','shan')&&!game.hasPlayer(function(current){ return get.attitude(current,player)>3&¤t.countCards('h','tao')>0; })) return 0; if(target.countCards('h')+player.countCards('h')>target.hp+2) return basis*0.8; return basis; } return 0; }); 'step 1' if(result.bool){ var target=result.targets[0]; event.target=target; player.logSkill('oldmingjian',target); player.give(player.getCards('h'),target); trigger.cancel(); } else event.finish(); 'step 2' var evt=trigger.getParent('phase'); if(evt){ game.log(player,'结束了回合'); evt.finish(); } var next=target.insertPhase(); next._noTurnOver=true; next.phaseList=['phaseUse']; //next.setContent(lib.skill.oldmingjian.phase); }, phase:function(){ 'step 0' player.phaseUse(); 'step 1' game.broadcastAll(function(){ if(ui.tempnowuxie){ ui.tempnowuxie.close(); delete ui.tempnowuxie; } }); }, }, oldshenxian:{ audio:'shenxian', inherit:'shenxian', }, old_guhuo:{ audio:2, enable:['chooseToUse','chooseToRespond'], hiddenCard:function(player,name){ return (lib.inpile.includes(name)&&player.countCards('hs')>0); }, filter:function(event,player){ if(!player.countCards('hs')) return false; for(var i of lib.inpile){ var type=get.type(i); if((type=='basic'||type=='trick')&&event.filterCard({name:i},player,event)) return true; if(i=='sha'){ for(var j of lib.inpile_nature){ if(event.filterCard({name:i,nature:j},player,event)) return true; } } } return false; }, chooseButton:{ dialog:function(event,player){ var list=[]; for(var i of lib.inpile){ if(event.type!='phase') if(!event.filterCard({name:i},player,event)) continue; var type=get.type(i); if(type=='basic'||type=='trick') list.push([type,'',i]); if(i=='sha'){ if(event.type!='phase') if(!event.filterCard({name:i,nature:j},player,event)) continue; for(var j of lib.inpile_nature) list.push(['基本','','sha',j]); } } return ui.create.dialog('蛊惑',[list,'vcard']); }, filter:function(button,player){ var evt=_status.event.getParent(); return evt.filterCard({name:button.link[2],nature:button.link[3]},player,evt); }, check:function(button){ var player=_status.event.player; var order=Math.max(0,get.order(card)+1); var enemyNum=game.countPlayer(function(current){ return current!=player&&(get.realAttitude||get.attitude)(current,player)<0&¤t.hp>0; }); var card={name:button.link[2],nature:button.link[3]}; if(player.isDying()&&!player.hasCard(function(cardx){ if(get.suit(cardx)!='heart') return false; var mod2=game.checkMod(cardx,player,'unchanged','cardEnabled2',player); if(mod2!='unchanged') return mod2; var mod=game.checkMod(cardx,player,player,'unchanged','cardSavable',player); if(mod!='unchanged') return mod; var savable=get.info(cardx).savable; if(typeof savable=='function') savable=savable(card,player,player); return savable; },'hs')){ if(!player.getStorage('old_guhuo_cheated').includes(card.name+card.nature)&&Math.random()<0.4) return 1; return 0; } var val=_status.event.getParent().type=='phase'?player.getUseValue(card):1; if(player.getStorage('old_guhuo_cheated').includes(card.name+card.nature)&&!player.hasCard(function(cardx){ if(card.name==cardx.name){ if(card.name!='sha') return true; return get.is.sameNature(card,cardx); } return false; },'hs')&&Math.random()<0.7) return 0; if(val<=0) return 0; if(enemyNum){ if(!player.hasCard(function(cardx){ if(card.name==cardx.name){ if(card.name!='sha') return true; return get.is.sameNature(card,cardx); } return false; },'hs')){ if(get.value(card,player,'raw')<6) return Math.sqrt(val)*(0.25+Math.random()/1.5); if(enemyNum<=2) return Math.sqrt(val)/1.5+order*10; return 0; } return 3*val+order*10; } return val+order*10; }, backup:function(links,player){ return { filterCard:function(card,player,target){ var result=true; var suit=card.suit,number=card.number; card.suit='none';card.number=null; var mod=game.checkMod(card,player,'unchanged','cardEnabled2',player); if(mod!='unchanged') result=mod; card.suit=suit;card.number=number; return result; }, selectCard:1, position:'hs', ignoreMod:true, aiUse:Math.random(), viewAs:{ name:links[0][2], nature:links[0][3], suit:'none', number:null }, ai1:function(card){ var player=_status.event.player; var enemyNum=game.countPlayer(function(current){ return current!=player&&(get.realAttitude||get.attitude)(current,player)<0&¤t.hp>0; }); var cardx=lib.skill.old_guhuo_backup.viewAs; if(enemyNum){ if(card.name==cardx.name&&(card.name!='sha'||get.is.sameNature(card,cardx))||player.getStorage('old_guhuo_cheated').includes(card.name+card.nature)) return (get.suit(card)=='heart'?8:4)+Math.random()*3; else if(lib.skill.old_guhuo_backup.aiUse<0.5&&!player.isDying()) return 0; } return get.value(cardx)-get.value(card); }, precontent:function(){ player.logSkill('old_guhuo'); player.addTempSkill('old_guhuo_guess'); var card=event.result.cards[0]; event.result.card.suit=get.suit(card); event.result.card.number=get.number(card); }, } }, prompt:function(links,player){ return '将一张手牌当做'+(links[0][3]?get.translation(links[0][3]):'')+'【'+get.translation(links[0][2])+'】'+(_status.event.name=='chooseToRespond'?'打出':'使用'); }, }, ai:{ save:true, respondSha:true, respondShan:true, fireAttack:true, skillTagFilter:function(player){ if(!player.countCards('hs')) return false; }, threaten:1.2, order:10, result:{player:1}, }, subSkill:{ cheated:{ trigger:{ player:'gainAfter', global:'loseAsyncAfter', }, charlotte:true, forced:true, silent:true, popup:false, firstDo:true, onremove:true, filter:function(event,player){ if(event.getParent().name=='draw') return true; var cards=event.getg(player); if(!cards.length) return false; return game.hasPlayer(current=>{ if(current==player) return false; var evt=event.getl(current); if(evt&&evt.cards&&evt.cards.length) return true; return false; }); }, content:function(){ player.removeSkill('old_guhuo_cheated'); } } } }, old_guhuo_guess:{ audio:'old_guhuo', trigger:{ player:['useCardBefore','respondBefore'], }, forced:true, silent:true, popup:false, firstDo:true, charlotte:true, filter:function(event,player){ return event.skill&&event.skill.indexOf('old_guhuo_')==0; }, content:function(){ 'step 0' event.fake=false; event.goon=true; event.betrayers=[]; var card=trigger.cards[0]; if(card.name!=trigger.card.name||(card.name=='sha'&&!get.is.sameNature(trigger.card,card))) event.fake=true; if(event.fake){ player.addSkill('old_guhuo_cheated'); player.markAuto('old_guhuo_cheated',[trigger.card.name+trigger.card.nature]); } player.popup(trigger.card.name,'metal'); player.lose(card,ui.ordering).relatedEvent=trigger; trigger.throw=false; trigger.skill='old_guhuo_backup'; game.log(player,'声明',trigger.targets&&trigger.targets.length?'对':'',trigger.targets||'',trigger.name=='useCard'?'使用':'打出',trigger.card); event.prompt=get.translation(player)+'声明'+(trigger.targets&&trigger.targets.length?'对'+get.translation(trigger.targets):'')+ (trigger.name=='useCard'?'使用':'打出')+(get.translation(trigger.card.nature)||'')+get.translation(trigger.card.name)+',是否质疑?'; event.targets=game.filterPlayer(i=>i!=player&&i.hp>0).sortBySeat(_status.currentPhase); game.broadcastAll(function(card,player){ _status.old_guhuoNode=card.copy('thrown'); if(lib.config.cardback_style!='default'){ _status.old_guhuoNode.style.transitionProperty='none'; ui.refresh(_status.old_guhuoNode); _status.old_guhuoNode.classList.add('infohidden'); ui.refresh(_status.old_guhuoNode); _status.old_guhuoNode.style.transitionProperty=''; } else{ _status.old_guhuoNode.classList.add('infohidden'); } _status.old_guhuoNode.style.transform='perspective(600px) rotateY(180deg) translateX(0)'; player.$throwordered2(_status.old_guhuoNode); },trigger.cards[0],player); event.onEnd01=function(){ _status.old_guhuoNode.removeEventListener('webkitTransitionEnd',_status.event.onEnd01); setTimeout(function(){ _status.old_guhuoNode.style.transition='all ease-in 0.3s'; _status.old_guhuoNode.style.transform='perspective(600px) rotateY(270deg)'; var onEnd=function(){ _status.old_guhuoNode.classList.remove('infohidden'); _status.old_guhuoNode.style.transition='all 0s'; ui.refresh(_status.old_guhuoNode); _status.old_guhuoNode.style.transform='perspective(600px) rotateY(-90deg)'; ui.refresh(_status.old_guhuoNode); _status.old_guhuoNode.style.transition=''; ui.refresh(_status.old_guhuoNode); _status.old_guhuoNode.style.transform=''; _status.old_guhuoNode.removeEventListener('webkitTransitionEnd',onEnd); } _status.old_guhuoNode.listenTransition(onEnd); },300); }; if(!event.targets.length) event.goto(3); 'step 1' event.target=event.targets.shift(); event.target.chooseButton([event.prompt,[['reguhuo_ally','reguhuo_betray'],'vcard']],true).set('ai',function(button){ var player=_status.event.player; var evt=_status.event.getParent('old_guhuo_guess'),evtx=evt.getTrigger(); if(!evt) return Math.random(); var card={name:evtx.card.name,nature:evtx.card.nature,isCard:true}; var ally=button.link[2]=='reguhuo_ally'; if(ally&&(player.hp<=1||get.attitude(player,evt.player)>=0)) return 1.1; if(!ally&&get.effect(player,{name:'losehp'},player,player)>=0) return 10; if(!ally&&get.attitude(player,evt.player)<0){ if(evtx.name=='useCard'){ var eff=0; var targetsx=evtx.targets||[]; for(var target of targetsx){ var isMe=target==evt.player; eff+=get.effect(target,card,evt.player,player)/(isMe?1.35:1); } eff/=(1.5*targetsx.length)||1; if(eff>0) return 0; if(eff<-7) return (Math.random()+Math.pow(-(eff+7)/8,2))/Math.sqrt(evt.betrayers.length+1)+(player.hp-3)*0.05+Math.max(0,4-evt.player.hp)*0.05-(player.hp==1&&!get.tag(card,'damage')?0.2:0); return Math.pow((get.value(card,evt.player,'raw')-4)/(eff==0?3.1:10),2)/Math.sqrt(evt.betrayers.length||1)+(player.hp-3)*0.05+Math.max(0,4-evt.player.hp)*0.05; } if(evt.player.getStorage('old_guhuo_cheated').includes(card.name+card.nature)) return Math.random()+0.3; } return Math.random(); }); 'step 2' if(result.links[0][2]=='reguhuo_betray'){ target.addExpose(0.2); game.log(target,'#y质疑'); target.popup('质疑!','fire'); event.betrayers.push(target); } else{ game.log(target,'#g不质疑'); target.popup('不质疑','wood'); } if(targets.length) event.goto(1); 'step 3' game.delayx(); game.broadcastAll(function(onEnd){ _status.event.onEnd01=onEnd; if(_status.old_guhuoNode) _status.old_guhuoNode.listenTransition(onEnd,300); },event.onEnd01); 'step 4' game.delay(2); 'step 5' if(!event.betrayers.length){ event.goto(7); } 'step 6' if(event.fake){ for(var target of event.betrayers){ target.popup('质疑正确','wood'); } event.goon=false; } else{ for(var target of event.betrayers){ target.popup('质疑错误','fire'); target.loseHp(); } if(get.suit(trigger.cards[0],player)!='heart'){ event.goon=false; } } 'step 7' if(!event.goon){ game.log(player,'声明的',trigger.card,'作废了'); trigger.cancel(); trigger.getParent().goto(0); trigger.line=false; } 'step 8' game.delay(); 'step 9' if(!event.goon){ if(event.fake) game.asyncDraw(event.betrayers); game.broadcastAll(ui.clear); } }, }, old_zuilun:{ audio:'xinfu_zuilun', subSkill:{ e:{}, h:{}, }, enable:"phaseUse", usable:2, filterTarget:function(card,player,target){ if(player==target) return false; var pos='he'; if(player.hasSkill('old_zuilun_h')) pos='e'; if(player.hasSkill('old_zuilun_e')) pos='h'; return target.countGainableCards(player,pos)>0; }, content:function(){ 'step 0' var pos='he'; if(player.hasSkill('old_zuilun_h')) pos='e'; if(player.hasSkill('old_zuilun_e')) pos='h'; player.gainPlayerCard(target,pos,true); 'step 1' if(result.bool&&result.cards&&result.cards.length){ target.draw(); var pos=result.cards[0].original; if(pos=='h'||pos=='e') player.addTempSkill('old_zuilun_'+pos,'phaseUseAfter'); } }, ai:{ order:7, result:{ target:-1, }, }, }, old_fuyin:{ mod:{ targetEnabled:function(card,player,target){ if((card.name=='juedou'||card.name=='sha'||card.name=='huogong')&&player!=target&&player.countCards('h')>=target.countCards('h')&&target.hasEmptySlot(2)) return false; }, }, }, old_jijun:{ marktext:"方", audio:"xinfu_jijun", intro:{ content:"expansion", markcount:'expansion', }, onremove:function(player,skill){ var cards=player.getExpansions(skill); if(cards.length) player.loseToDiscardpile(cards); }, enable:"phaseUse", filterCard:true, selectCard:[1,Infinity], filter:function(event,player){ return player.countCards('h')>0; }, check:function(card){ var player=_status.event.player; if((36-player.getExpansions('old_jijun').length)<=player.countCards('h')) return 1; return 5-get.value(card); }, discard:false, lose:false, content:function(){ player.addToExpansion(cards,player,'give').gaintag.add('old_jijun'); }, ai:{order:1,result:{player:1}}, }, old_fangtong:{ trigger:{ player:"phaseJieshuBegin", }, audio:"xinfu_fangtong", forced:true, skillAnimation:true, animationColor:'metal', filter:function(event,player){ return (player.getExpansions('old_jijun').length>35); }, content:function(){ var winners=player.getFriends(); game.over(player==game.me||winners.includes(game.me)); }, }, oldanxu:{ enable:'phaseUse', usable:1, multitarget:true, audio:2, filterTarget:function(card,player,target){ if(player==target) return false; var num=target.countCards('h'); if(ui.selected.targets.length){ return numplayers[i].countCards('h')) return true; } return false; }, selectTarget:2, content:function(){ 'step 0' var gainner,giver; if(targets[0].countCards('h')0) return -1; var players=game.filterPlayer(); for(var i=0;i=0&&num20; }, logTarget:'player', content:function(){ trigger.player.draw(); }, ai:{ expose:0.2 } }, oldxuanfeng:{ audio:'xuanfeng', trigger:{ player:['loseAfter'], global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'], }, direct:true, filter:function(event,player){ var evt=event.getl(player); return evt&&evt.es&&evt.es.length>0; }, content:function(){ 'step 0' player.chooseTarget(get.prompt('oldxuanfeng'),function(card,player,target){ if(target==player) return false; return get.distance(player,target)<=1||player.canUse('sha',target,false); }).set('ai',function(target){ if(get.distance(player,target)<=1){ return get.damageEffect(target,player,player)*2; } else{ return get.effect(target,{name:'sha'},player,player); } }); 'step 1' if(result.bool){ player.logSkill('oldxuanfeng',result.targets); var target=result.targets[0]; var distance=get.distance(player,target); if(distance<=1&&player.canUse('sha',target,false)){ player.chooseControl('出杀','造成伤害').set('ai',function(){ return '造成伤害'; }); event.target=target; } else if(distance<=1){ target.damage(); event.finish(); } else{ player.useCard({name:'sha',isCard:true},target,false).animate=false; game.delay(); event.finish(); } } else{ event.finish(); } 'step 2' var target=event.target; if(result.control=='出杀'){ player.useCard({name:'sha',isCard:true},target,false).animate=false; game.delay(); } else{ target.damage(); } }, ai:{ effect:{ target:function(card,player,target,current){ if(get.type(card)=='equip') return [1,3]; } }, reverseEquip:true, noe:true } }, }, translate:{ old_zhangxingcai:'旧张星彩', old_zhangxingcai_prefix:'旧', old_xusheng:'旧徐盛', old_xusheng_prefix:'旧', old_lingtong:'旧凌统', old_lingtong_prefix:'旧', old_zhuran:'旧朱然', old_zhuran_prefix:'旧', old_caoxiu:'旧曹休', old_caoxiu_prefix:'旧', old_caozhen:'旧曹真', old_caozhen_prefix:'旧', old_maliang:'旧马良', old_maliang_prefix:'旧', old_chenqun:'旧陈群', old_chenqun_prefix:'旧', old_zhuhuan:'旧朱桓', old_zhuhuan_prefix:'旧', old_zhuzhi:'旧朱治', old_zhuzhi_prefix:'旧', old_zhugezhan:'旧诸葛瞻', old_zhugezhan_prefix:'旧', yuji:'旧于吉', yuji_prefix:'旧', old_zhangfei:'新杀张飞', old_zhangfei_prefix:'新杀', old_huatuo:'OL华佗', old_huatuo_prefix:'OL', old_guanyu:'旧关羽', old_guanyu_prefix:'旧', ol_zhangrang:'旧张让', ol_zhangrang_prefix:'旧', ol_liaohua:'OL廖化', ol_liaohua_prefix:'OL', ol_zhuran:'OL朱然', ol_zhuran_prefix:'OL', ol_manchong:'OL满宠', ol_manchong_prefix:'OL', old_fuhuanghou:'旧伏寿', old_fuhuanghou_prefix:'旧', old_caochong:'旧曹冲', old_caochong_prefix:'旧', old_guanqiujian:'旧毌丘俭', old_guanqiujian_prefix:'旧', old_wangyun:'旧王允', old_wangyun_prefix:'旧', old_zhaoyun:'新杀赵云', old_zhaoyun_prefix:'新杀', ol_huaxiong:'旧华雄', ol_huaxiong_prefix:'旧', old_xiaoqiao:'旧小乔', old_xiaoqiao_prefix:'旧', old_wanglang:'旧王朗', old_wanglang_prefix:'旧', old_wangyi:'旧王异', old_wangyi_prefix:'旧', xin_yujin:'节钺于禁', xin_yujin_prefix:'节钺', re_yujin:'毅重于禁', re_yujin_prefix:'毅重', old_guhuo:"蛊惑", old_guhuo_info:"你可以扣置一张手牌当做一张基本牌或普通锦囊牌使用或打出,体力值不为0的其他角色依次选择是否质疑。然后,若有质疑的角色,你展示此牌:若为假,此牌作废,这些角色摸一张牌;若为真,这些角色失去1点体力,且若此牌不为♥,此牌作废。", old_guhuo_guess:"蛊惑", old_jijun:"集军", old_jijun_info:"出牌阶段,你可以将任意张手牌置于武将牌上,称为“方”。", old_fangtong:"方统", old_fangtong_info:"锁定技。结束阶段,若你的“方”数目不小于36,则以你的阵营胜利结束本局游戏。", old_zuilun:"罪论", old_zuilun_info:"出牌阶段,你可以获得一名其他角色的一张牌(手牌、装备区各一次),然后该角色摸一张牌。", old_fuyin:"父荫", old_fuyin_info:"锁定技。若你的装备区里没有防具牌,你不能成为手牌数不小于你的其他角色使用【杀】、【决斗】或【火攻】的目标。", oldanxu:'安恤', oldanxu_info:'出牌阶段限一次。你可以选择手牌数不相等的两名其他角色,其中手牌少的角色获得手牌多的角色的一张手牌并展示之,然后若此牌不为黑桃,你摸一张牌。', oldfaen:'法恩', oldfaen_info:'当一名角色翻面或横置后,你可以令其摸一张牌。', oldxuanfeng:'旋风', oldxuanfeng_info:'当你失去装备区里的牌后,你可以选择一项:1.视为对一名其他角色使用一张【杀】;2.对一名距离为1的角色造成1点伤害。', ol_yuanshu:'旧袁术', ol_yuanshu_prefix:'旧', fazheng:'旧法正', fazheng_prefix:'旧', junk_simayi:'旧晋司马懿', junk_simayi_prefix:'旧晋', madai:'旧马岱', madai_prefix:'旧', old_yangzhi:'旧杨芷', old_yangzhi_prefix:'旧', old_yangyan:'旧杨艳', old_yangyan_prefix:'旧', old_caorui:'旧曹叡', old_caorui_prefix:'旧', oldmingjian:'明鉴', oldmingjian_info:'出牌阶段开始前,你可以跳过此阶段并将所有手牌交给一名其他角色。若如此做,你结束当前回合,然后其获得一个额外的回合(仅包含出牌阶段)。', old_handang:'旧韩当', old_handang_prefix:'旧', oldgongji:'弓骑', oldgongji_info:'你可以将一张装备牌当做无距离限制的【杀】使用或打出。', oldjiefan:'解烦', oldjiefan_info:'当一名角色A于你的回合外处于濒死状态时,你可以对当前回合角色使用一张【杀】。当此【杀】造成伤害时,你防止此伤害,视为对A使用一张【桃】。', old_gaoshun:'旧高顺', old_gaoshun_prefix:'旧', old_liubiao:'旧刘表', old_liubiao_prefix:'旧', oldre_liubiao:'RE刘表', oldre_liubiao_prefix:'RE', oldzishou:'自守', oldzishou_info:'摸牌阶段,若你已受伤,你可令额定摸牌数+X(X为你已损失的体力值),然后跳过下一个出牌阶段。', old_huanghao:'旧黄皓', old_huanghao_prefix:'旧', oldqinqing:'寝情', oldqinqing_info:'结束阶段,你可以选择一名攻击范围内含有主公的其他角色,然后你弃置该角色的一张牌(无牌则不弃),并令其摸一张牌。若该角色的手牌数大于主公,你摸一张牌。', oldhuisheng:'贿生', oldhuisheng_info:'每名角色限一次。当你受到其他角色对你造成的伤害时,你可以令其观看你任意数量的牌并令其选择一项:1.获得这些牌中的一张并防止此伤害;2.弃置等量的牌。', old_dingfeng:'旧丁奉', old_dingfeng_prefix:'旧', junk_sunquan:'旧神孙权', junk_sunquan_prefix:'旧神', new_caoren:'旧曹仁', new_caoren_prefix:'旧', old_liyan:'旧李严', old_liyan_prefix:'旧', old_chendao:'旧陈到', old_chendao_prefix:'旧', old_caocao:'旧神曹操', old_caocao_prefix:'旧神', junkguixin:'归心', junkguixin_info:'回合结束时,你可以选择一项:①获得剩余武将牌堆的所有主公技的其中一个技能;②更改一名其他角色的势力。', old_caochun:'旧曹纯', old_caochun_prefix:'旧', old_guanyinping:'旧关银屏', old_guanyinping_prefix:'旧', old_shen_zhaoyun:'旧神赵云', old_shen_zhaoyun_prefix:'旧神', oldjuejing:'绝境', oldjuejing_info:'锁定技。①摸牌阶段,你令额定摸牌数+X(X为你已损失的体力值)。②你的手牌上限+2。', oldlonghun:'龙魂', oldlonghun_info:'你可以将花色相同的Y张牌按下列规则使用或打出:♥当【桃】,♦当火【杀】,♣当【闪】,♠当普【无懈可击】(Y为你的体力值且至少为1)。', panfeng:'旧潘凤', panfeng_prefix:'旧', old_shixie:'旧士燮', old_shixie_prefix:'旧', old_standard:'标准包', old_shenhua:'神话再临', old_refresh:'界限突破', old_yijiang1:'一将成名2011', old_yijiang2:'一将成名2012', old_yijiang3:'一将成名2013', old_yijiang4:'一将成名2014', old_yijiang5:'一将成名2015', old_yijiang67:'原创设计', old_sp:'SP', old_yingbian:'文德武备', old_mobile:'移动版', } }; });