'use strict'; game.import('mode',function(lib,game,ui,get,ai,_status){ return { name:'single', changbanCharacter:[ "key_rei","key_yoshino","key_noda","key_nagisa", "re_caocao","re_caozhang","re_diaochan","re_ganning","re_gongsunzan","re_guojia","re_huangyueying","re_lidian","re_lvbu", "re_simayi","sunquan","re_xiahoudun","re_xushu","yuanshu","xf_yiji","re_zhangfei","re_zhangliao","re_xuzhu", "re_zhaoyun","re_zhouyu","re_zhugeliang","ol_xiahouyuan","re_huangzhong","re_weiyan","dianwei","te_yanwen","re_pangde", "re_zhurong","re_sunjian","jiaxu","dengai","re_jiangwei","re_sunben","wangji","wangping","guanqiujian","chendao","ol_yujin", "re_caozhi","xin_masu","re_lingtong","xusheng","re_gaoshun","xunyou","guanzhang","madai","handang","caochong", "re_guohuai","guanping","liufeng","re_zhuran","xin_liru","hanhaoshihuan","guyong","zhuhuan","caoxiu","liuchen","re_zhangyi", "re_quancong","sunxiu","sundeng","guohuanghou","re_jikang","xuezong","qinmi","lvdai","re_zhangliang","lingcao", "sunru","zhuling","sp_caoren","fanchou","fuwan","sp_ganning","guanyinping","guosi","heqi","sp_jiangwei","litong", "re_panfeng","sp_pangde","xf_sufei","xf_tangzi","xiahouba","xujing","yuejin","sp_zhangfei","zhangji","zhangyì","dongcheng", ], singlePile:[ ['spade',5,'sha'], ['spade',7,'sha'], ['spade',8,'sha'], ['spade',10,'sha'], ['heart',10,'sha'], ['heart',11,'sha'], ['club',4,'sha'], ['club',5,'sha'], ['club',6,'sha'], ['club',8,'sha'], ['club',9,'sha'], ['club',10,'sha'], ['club',11,'sha'], ['diamond',6,'sha'], ['diamond',9,'sha'], ['diamond',11,'sha'], ['heart',2,'shan'], ['heart',5,'shan'], ['diamond',2,'shan'], ['diamond',3,'shan'], ['diamond',7,'shan'], ['diamond',8,'shan'], ['diamond',10,'shan'], ['diamond',11,'shan'], ['heart',3,'tao'], ['heart',4,'tao'], ['heart',9,'tao'], ['diamond',12,'tao'], ['club',12,'bingliang'], ['spade',3,'guohe'], ['diamond',12,'guohe'], ['club',3,'guohe'], ['club',1,'juedou'], ['spade',1,'juedou'], ['heart',6,'lebu'], ['spade',1,'nanman'], ['club',7,'shuiyanqijunx'], ['spade',4,'shunshou'], ['spade',11,'shunshou'], ['diamond',4,'shunshou'], ['heart',1,'wanjian'], ['heart',5,'wuxie'], ['club',5,'wuxie'], ['heart',7,'wuzhong'], ['heart',8,'wuzhong'], ['diamond',5,'guanshi'], ['spade',9,'hanbing'], ['spade',6,'qinggang'], ['spade',12,'zhangba'], ['diamond',1,'zhuge'], ['spade',2,'bagua'], ['club',2,'renwang'], ], characterSingle:{ caocao:['male','wei',4,['jianxiong'],['zhu']], simayi:['male','wei',3,['fankui','guicai']], xiahoudun:['male','wei',4,['ganglie']], zhangliao:['male','wei',4,['retuxi']], xuzhu:['male','wei',4,['luoyi','xiechan']], guojia:['male','wei',3,['tiandu','yiji']], zhenji:['female','wei',3,['luoshen','sgqingguo']], liubei:['male','shu',4,['sgrenwang'],['zhu']], guanyu:['male','shu',4,['wusheng','huwei']], zhangfei:['male','shu',4,['paoxiao']], zhugeliang:['male','shu',3,['guanxing','kongcheng']], zhaoyun:['male','shu',4,['longdan']], machao:['male','shu',4,['xiaoxi','tieji']], huangyueying:['female','shu',3,['jizhi','cangji']], sunquan:['male','wu',4,['sgzhiheng'],['zhu']], ganning:['male','wu',4,['qixi']], lvmeng:['male','wu',4,['shenju','botu']], huanggai:['male','wu',4,['kurou']], zhouyu:['male','wu',3,['yingzi','fanjian']], daqiao:['female','wu',3,['guose','wanrong']], luxun:['male','wu',3,['qianxun','lianying']], sunshangxiang:['female','wu',3,['xiaoji','yinli']], //huatuo:['male','qun',3,['qingnang','jijiu']], lvbu:['male','qun',4,['wushuang']], diaochan:['female','qun',3,['pianyi','biyue']], xiahouyuan:['male','wei',4,['shensu','suzi']], old_caoren:['male','wei',4,['jushou']], huangzhong:['male','shu',4,['liegong']], weiyan:['male','shu',4,['sgkuanggu']], xiaoqiao:['female','wu',3,['tianxiang','hongyan']], old_zhoutai:['male','wu',4,['gzbuqu']], zhangjiao:['male','qun',3,['leiji','guidao'],['zhu']], dianwei:['male','wei',4,['qiangxi']], yanwen:['male','qun',4,['shuangxiong']], pangde:['male','qun',4,['xiaoxi','mengjin']], menghuo:['male','shu',4,['manyi','zaiqi']], zhurong:['female','shu',4,['manyi','lieren']], xuhuang:['male','wei',4,['sgduanliang']], sunjian:['male','wu',4,['gzyinghun']], jiangwei:['male','shu',4,['tiaoxin']], hejin:['male','qun',4,['mouzhu','yanhuo']], hansui:['male','qun',4,['xiaoxi','niluan']], niujin:['male','wei',4,['cuorui','liewei']], jin_zhangchunhua:['female','jin',3,['huishi','qingleng']], jin_simayi:['male','jin',3,['smyyingshi','xiongzhi','quanbian']], jin_wangyuanji:['female','jin',3,['yanxi']], jin_simazhao:['male','jin',3,['choufa','zhaoran']], jin_xiahouhui:['female','jin',3,['jyishi','shiduo']], jin_simashi:['male','jin','3/4',['yimie','tairan']], zhanghuyuechen:['male','jin',4,['xijue']], duyu:['male','jin',4,['sanchen','zhaotao']], }, startBefore:function(){ }, onreinit:function(){ _status.mode=_status.connectMode?lib.configOL.single_mode:get.config('single_mode'); if(_status.mode!='normal') return; for(var i in lib.characterSingle){ lib.character[i]=lib.characterSingle[i]; if(!lib.character[i][4]){ lib.character[i][4]=[]; } } for(var j in lib.singleTranslate) lib.translate[j]=lib.singleTranslate[j]; }, start:function(){ "step 0" _status.mode=_status.connectMode?lib.configOL.single_mode:get.config('single_mode'); var playback=localStorage.getItem(lib.configprefix+'playback'); if(playback){ ui.create.me(); ui.arena.style.display='none'; ui.system.style.display='none'; _status.playback=playback; localStorage.removeItem(lib.configprefix+'playback'); var store=lib.db.transaction(['video'],'readwrite').objectStore('video'); store.get(parseInt(playback)).onsuccess=function(e){ if(e.target.result){ game.playVideoContent(e.target.result.video); } else{ alert('播放失败:找不到录像'); game.reload(); } } event.finish(); } else if(!_status.connectMode){ game.prepareArena(2); } "step 1" if(_status.connectMode){ game.waitForPlayer(function(){ lib.configOL.number=2; }); } "step 2" if(_status.mode=='normal'){ lib.card.list=lib.singlePile.slice(0); game.fixedPile=true; game.broadcastAll(function(singleTranslate,characterSingle,jin){ _status.mode='normal'; for(var j in singleTranslate) lib.translate[j]=singleTranslate[j]; _status.characterlist=[]; for(var i in characterSingle){ if(!jin&&characterSingle[i][1]=='jin') continue; lib.character[i]=characterSingle[i]; if(!lib.character[i][4]){ lib.character[i][4]=[]; } _status.characterlist.push(i); } },lib.singleTranslate,lib.characterSingle,_status.connectMode?lib.configOL.enable_jin:get.config('enable_jin')); } else if(_status.mode=='changban'){ _status.characterlist=[]; for(var i=0;i_status.characterlist=list,list); } if(_status.connectMode){ lib.configOL.number=2; game.randomMapOL(); } else{ for(var i=0;itrue, addRecord:function(bool){ if(typeof bool=='boolean'){ var mode=_status.mode; var data=lib.config.gameRecord.single.data; if(!get.is.object(data[mode])) data[mode]={}; var data2=data[mode] var identity=game.me.identity; if(!data2[identity]){ data2[identity]=[0,0]; } if(bool){ data2[identity][0]++; } else{ data2[identity][1]++; } var list=['zhu','fan']; var str=''; for(var j in data){ str+=get.translation(j+2)+':
'; for(var i=0;i'; } } } lib.config.gameRecord.single.str=str; game.saveConfig('gameRecord',lib.config.gameRecord); } }, getState:function(){ var state={}; for(var i in lib.playerOL){ var player=lib.playerOL[i]; state[i]={identity:player.identity}; } return state; }, updateState:function(state){ for(var i in state){ var player=lib.playerOL[i]; if(player){ player.identity=state[i].identity; } } }, getRoomInfo:function(uiintro){ if(lib.configOL.single_mode=='normal') uiintro.add('
晋势力武将:'+(lib.configOL.enable_jin?'开启':'关闭')); if(lib.configOL.bannedcards.length){ uiintro.add('
禁用卡牌:'+get.translation(lib.configOL.bannedcards)); } uiintro.style.paddingBottom='8px'; }, getVideoName:function(){ var str=get.translation(game.me.name); if(game.me.name2){ str+='/'+get.translation(game.me.name2); } var name=[ str, get.translation(_status.mode+2)+' - '+lib.translate[game.me.identity+'2'] ]; return name; }, showIdentity:function(){}, checkResult:function(){ game.over((game.me._trueMe||game.me).isAlive()); }, checkOnlineResult:function(player){ return player.isAlive(); }, chooseCharacterDianjiang:function(){ var next=game.createEvent('chooseCharacter'); next.showConfig=true; next.setContent(function(){ "step 0" ui.arena.classList.add('choose-character'); lib.init.onfree(); "step 1" game.me.chooseControl('先手','后手').prompt='请选择自己的行动顺序'; "step 2" var map=result.control=='先手'?['zhu','fan']:['fan','zhu']; game.me.identity=map[0]; game.me.next.identity=map[1]; game.me.showIdentity(); game.me.next.showIdentity(); "step 3" event.flipassign=true; event.videoId=lib.status.videoId++; var list=[]; for(var i in lib.character){ if(lib.filter.characterDisabled(i)) continue; list.push(i); } _status.characterlist=list; var filter=function(name){ return !_status.characterlist.includes(name); }; var dialog=ui.create.characterDialog('heightset',filter).open(); dialog.videoId=event.videoId; game.me.chooseButton(true).set('ai',function(button){ return Math.random(); }).set('dialog',event.videoId); "step 4" game.me.init(result.links[0]); _status.characterlist.remove(result.links[0]); game.addRecentCharacter(result.links[0]); game.me.chooseButton(true).set('ai',function(button){ return Math.random(); }).set('dialog',event.videoId); "step 5" game.broadcastAll('closeDialog',event.videoId); game.me.next.init(result.links[0]); _status.characterlist.remove(result.links[0]); game.addRecentCharacter(result.links[0]); setTimeout(function(){ ui.arena.classList.remove('choose-character'); },500); }); }, chooseCharacterWuxianhuoli(){ const next=game.createEvent('chooseCharacter'); next.showConfig=true; next.setContent(function(){ 'step 0' ui.arena.classList.add('choose-character'); lib.init.onfree(); var num=[0,1].randomGet(); game.players[num].identity='zhu'; game.players[1-num].identity='fan'; game.broadcastAll(function(p,t){ p.enemy=t;t.enemy=p; },game.players[0],game.players[1]); for(var i=0;i本局游戏Buff
', ]; game.globalBuff.forEach((buff,ind)=>{ dialog.add(`
「${ind===0?'固定':'随机'}」 ${get.translation(buff)}:${get.skillInfoTranslation(buff)}
`); }); dialog.add([_status.characterChoice[game.me.identity],'character']); game.me.chooseButton(true,dialog); 'step 2' game.me.init(result.links[0]); _status.characterChoice[game.me.identity].removeArray(result.links); var list=_status.characterChoice[game.me.enemy.identity].randomRemove(1); game.me.enemy.init(list[0]); [game.me,game.me.enemy].forEach(current=>{ if(current.storage.nohp||lib.character[current.name1][4].includes('hiddenSkill')&&!current.noclick){ current.storage.rawHp=1; current.storage.rawMaxHp=1; } current.hp=10; current.maxHp=10; current.hujia=0; current.update(); }); game.globalBuff.forEach(buff=>{ game.addGlobalSkill(buff); }); game.addGlobalSkill('wuxianhuoli_task'); _status.wuxianhuoliProgress=0; _status.wuxianhuoliLevel=0; const func=()=>{ ui.wuxianhuoliProgress=get.is.phoneLayout()?ui.create.div('.touchinfo.left',ui.window):ui.create.div(ui.gameinfo); ui.wuxianhuoliProgress.innerHTML='任务进度(0/3)'; const showTasks=()=>{ if(ui.wuxianhuoliInfo) return; ui.wuxianhuoliInfo=ui.create.system('无限火力·信息',null,true); ui.wuxianhuoliInfo.currentProgress=0; ui.wuxianhuoliInfo.currentLevel=0; lib.setPopped(ui.wuxianhuoliInfo,()=>{ var uiintro=ui.create.dialog('hidden'); uiintro.add(`
任务列表
`); if(typeof _status.wuxianhuoliLevel!=='number'){ uiintro.add(`
未获取当前进度,请于一名角色受伤后再查看
`); } else if(_status.wuxianhuoliLevel<2){ uiintro.add(`
全场角色造成${_status.wuxianhuoliLevel===0?3:5}点伤害(当前${_status.wuxianhuoliProgress}点)
\
奖励:获得一个技能,摸两张牌
`); } else{ uiintro.add(`
所有任务已完成,无后续任务
`); } uiintro.add(`
全局Buff
`); uiintro.add(`
${game.globalBuff.map((buff,ind)=>{ return get.translation(buff)+':'+get.skillInfoTranslation(buff); }).join('
')}
`); var ul=uiintro.querySelector('ul'); if(ul) ul.style.width='180px'; uiintro.add(ui.create.div('.placeholder')); return uiintro; },250); }; showTasks(); var dialog=ui.create.dialog('hidden','forcebutton'); dialog.add(`任务一`); dialog.addText(`任务:全场角色共计造成3点伤害
奖励:获得一个技能,摸两张牌`); dialog.add(`任务二
(完成任务一后解锁)
\
任务:全场角色共计造成5点伤害
奖励:获得一个技能,摸两张牌
`); dialog.open(); setTimeout(()=>{ dialog.close(); },3000); }; game.broadcastAll(func); game.delay(0,3000); 'step 3' _status.characterlist.addArray(Object.values(_status.characterChoice).flat()); setTimeout(function(){ ui.arena.classList.remove('choose-character'); },500); }); }, chooseCharacter:function(){ if(_status.mode=='dianjiang'){ game.chooseCharacterDianjiang(); return; } if(_status.mode=='wuxianhuoli'){ game.chooseCharacterWuxianhuoli(); return; } var next=game.createEvent('chooseCharacter'); next.showConfig=true; next.setContent(function(){ "step 0" ui.arena.classList.add('choose-character'); var num=[0,1].randomGet(); game.players[num].identity='zhu'; game.players[1-num].identity='fan'; game.broadcastAll(function(p,t){ p.enemy=t;t.enemy=p; },game.players[0],game.players[1]); for(var i=0;i{game.globalBuff=buff}; game.broadcast(setBuff,game.globalBuff); if(!_status.postReconnect.wuxianhuoliBuff) _status.postReconnect.wuxianhuoliBuff=[setBuff,[]]; _status.postReconnect.wuxianhuoliBuff[1].addArray(game.globalBuff); 'step 1' _status.characterChoice={ zhu:_status.characterlist.randomRemove(6), fan:_status.characterlist.randomRemove(6), }; const list=['zhu','fan'].map(identity=>{ const dialog=[ '请选择出场武将', '
本局游戏Buff
', ]; game.globalBuff.forEach((buff,ind)=>{ dialog.add(`
「${ind===0?'固定':'随机'}」 ${get.translation(buff)}:${get.skillInfoTranslation(buff)}
`); }); dialog.add([_status.characterChoice[identity],'character']); return [game[identity],true,dialog]; }); game.me.chooseButtonOL(list,function(player,result){ if(game.online||player==game.me){ player.init(result.links[0]); player.hp=10; player.maxHp=10; player.hujia=0; player.update(); } }); 'step 2' for(var i in result){ var current=lib.playerOL[i]; if(result[i]=='ai'){ result[i]=_status.characterChoice[current.identity].randomGets(1); } else{ result[i]=result[i].links; } _status.characterChoice[current.identity].removeArray(result[i]); if(!current.name){ current.init(result[i][0]); if(current.storage.nohp||lib.character[current.name1][4].includes('hiddenSkill')&&!current.noclick){ current.storage.rawHp=1; current.storage.rawMaxHp=1; } current.hp=10; current.maxHp=10; current.hujia=0; current.update(); } } game.broadcast(function(result){ for(var i in result){ const current=lib.playerOL[i]; if(!current.name){ current.init(result[i][0]); if(current.storage.nohp||lib.character[current.name1][4].includes('hiddenSkill')&&!current.noclick){ current.storage.rawHp=1; current.storage.rawMaxHp=1; } current.hp=10; current.maxHp=10; current.hujia=0; current.update(); } } setTimeout(function(){ ui.arena.classList.remove('choose-character'); },500); },result); game.globalBuff.forEach(buff=>{ game.addGlobalSkill(buff); }); game.addGlobalSkill('wuxianhuoli_task'); game.broadcastAll(()=>{ _status.wuxianhuoliProgress=0; _status.wuxianhuoliLevel=0; }); const func=()=>{ ui.wuxianhuoliProgress=get.is.phoneLayout()?ui.create.div('.touchinfo.left',ui.window):ui.create.div(ui.gameinfo); ui.wuxianhuoliProgress.innerHTML='任务进度(0/3)'; const showTasks=()=>{ if(ui.wuxianhuoliInfo) return; ui.wuxianhuoliInfo=ui.create.system('无限火力·信息',null,true); ui.wuxianhuoliInfo.currentProgress=0; ui.wuxianhuoliInfo.currentLevel=0; lib.setPopped(ui.wuxianhuoliInfo,()=>{ var uiintro=ui.create.dialog('hidden'); uiintro.add(`
任务列表
`); if(typeof _status.wuxianhuoliLevel!=='number'){ uiintro.add(`
未获取当前进度,请于一名角色受伤后再查看
`); } else if(_status.wuxianhuoliLevel<2){ uiintro.add(`
全场角色造成${_status.wuxianhuoliLevel===0?3:5}点伤害(当前${_status.wuxianhuoliProgress}点)
\
奖励:获得一个技能,摸两张牌
`); } else{ uiintro.add(`
所有任务已完成,无后续任务
`); } uiintro.add(`
全局Buff
`); uiintro.add(`
${game.globalBuff.map((buff,ind)=>{ return get.translation(buff)+':'+get.skillInfoTranslation(buff); }).join('
')}
`); var ul=uiintro.querySelector('ul'); if(ul) ul.style.width='180px'; uiintro.add(ui.create.div('.placeholder')); return uiintro; },250); }; showTasks(); if(!_status.postReconnect.wuxianhuoliShowTasks) _status.postReconnect.wuxianhuoliShowTasks=[showTasks,[]]; const dialog=ui.create.dialog('hidden','forcebutton'); dialog.add(`任务一`); dialog.addText(`任务:全场角色共计造成3点伤害
奖励:获得一个技能,摸两张牌`); dialog.add(`任务二
(完成任务一后解锁)
\
任务:全场角色共计造成5点伤害
奖励:获得一个技能,摸两张牌
`); dialog.open(); setTimeout(()=>{ dialog.close(); },3000); }; game.broadcastAll(func); game.delay(0,3000); 'step 3' _status.characterlist.addArray(Object.values(_status.characterChoice).flat()); setTimeout(function(){ ui.arena.classList.remove('choose-character'); },500); }); }, chooseCharacterOL:function(){ if(_status.mode=='dianjiang'){ game.chooseCharacterDianjiangOL(); return; } if(_status.mode=='wuxianhuoli'){ game.chooseCharacterWuxianhuoliOL(); return; } var next=game.createEvent('chooseCharacter'); next.setContent(function(){ "step 0" ui.arena.classList.add('choose-character'); var num=[0,1].randomGet(); game.players[num].identity='zhu'; game.players[1-num].identity='fan'; game.broadcastAll(function(p,t){ p.enemy=t;t.enemy=p; },game.players[0],game.players[1]); for(var i=0;i=12; })&&get.effect(target,{name:'juedou'},player,player)>0) return -1; return 0; }, }, }, }, huwei:{ audio:2, trigger:{ player:'enterGame', global:'gameDrawAfter', }, direct:true, content:function(){ player.chooseUseTarget('shuiyanqijunx',get.prompt('huwei'),'视为使用一张【水淹七军】').logSkill='huwei'; }, }, sgkuanggu:{ audio:'kuanggu', trigger:{source:'damageSource'}, frequent:true, filter:function(event,player){ return player.isDamaged(); }, content:function(){ 'step 0' player.judge(function(result){ return get.color(result)=='black'?2:-2; }); 'step 1' if(result.bool==true) player.recover(); }, }, suzi:{ inherit:'xingshang', }, cangji:{ trigger:{player:'die'}, filter:function(event,player){ return player.countCards('e')>0; }, forceDie:true, skillAnimation:true, animationColor:'orange', content:function(){ var cards=player.getCards('e'); player.cangji_yozuru=cards; player.lose(cards,ui.special); player.addSkill('cangji_yozuru'); }, subSkill:{ yozuru:{ sub:true, charlotte:true, superCharlotte:true, trigger:{player:'enterGame'}, forced:true, popup:false, //onremove:true, content:function(){ var cards=player.cangji_yozuru.slice(0); for(var i=0;i{ if(evt.name!=='damage') return false; return evt.card&&evt.card.name==='sha'; }).indexOf(event)===0; }, forced:true, silent:true, popup:true, charlotte:true, async content(_,trigger){ trigger.increase('num'); }, }, wuxianhuoli_liuanhuaming:{ trigger:{ player:'loseAfter', global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'], }, filter(event,player){ if(player===_status.currentPhase) return false; const evt=event.getl(player); return evt.cards2&&evt.cards2.length>0; }, forced:true, silent:true, popup:true, charlotte:true, usable:2, async content(_,__,player){ player.draw(); }, }, wuxianhuoli_mianmianjudao:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, silent:true, popup:true, charlotte:true, async content(_,__,player){ const cards=[]; for(const type of ['basic','trick']){ const card=get.cardPile(card=>{ const typex=get.type2(card,false); return type===typex; }); if(card) cards.add(card); } if(cards.length) player.gain(cards,'gain2'); }, }, wuxianhuoli_task:{ trigger:{source:'damageAfter'}, forced:true, popup:false, silent:true, charlotte:true, async content(event,trigger,player){ if(!_status.wuxianhuoliProgress) _status.wuxianhuoliProgress=0; if(!_status.wuxianhuoliLevel) _status.wuxianhuoliLevel=0; if(_status.wuxianhuoliLevel>1) return; _status.wuxianhuoliProgress+=trigger.num; game.broadcastAll((num,level)=>{ _status.wuxianhuoliProgress=num; _status.wuxianhuoliLevel=level; if(!ui.wuxianhuoliProgress){ ui.wuxianhuoliProgress=get.is.phoneLayout()?ui.create.div('.touchinfo.left',ui.window):ui.create.div(ui.gameinfo); } ui.wuxianhuoliProgress.innerHTML='任务进度('+num+'/'+(level===0?3:5)+')'; },_status.wuxianhuoliProgress,_status.wuxianhuoliLevel); if(_status.wuxianhuoliProgress<(_status.wuxianhuoliLevel===0?3:5)) return; game.broadcastAll(()=>{ _status.wuxianhuoliProgress=0; _status.wuxianhuoliLevel++; }); let next; const send=(skills,refreshable,stop=false)=>{ let next=game.createEvent('wuxianhuoli_reward',false); next.setContent(lib.skill.wuxianhuoli_task.contentx); next.set('skills',skills); next.set('refreshable',refreshable); next.set('includeOut',true); if(!stop) game.resume(); return next; }; const sendback=(result,player)=>{ if(!result) result={}; if(!result.control&&(typeof result.index!=='number'||result.index<0)){ result.index=0; } results.push([player,result]); }; const ai_targets=[],results=[],players=game.players.slice(),skillsMap={}; let withme=false,withol=false,withai=false; for(const current of players){ if(_status.connectMode) current.showTimer(); const skills=get.info('wuxianhuoli_task').getSkills(); const refreshable=!current.storage.wuxianhuoli_refreshed; skillsMap[current.playerid]=skills; if(current.isOnline()){ withol=true; current.send(send,skills,refreshable); current.wait(sendback); } else if(current==game.me){ withme=true; next=send(skills,refreshable,true); if(_status.connectMode) game.me.wait(sendback); } else{ ai_targets.push(current); } } if(ai_targets.length){ for(let i=0;i{ const interval=setInterval(()=>{ if(results.length===players.length){ resolve(); clearInterval(interval); } },4); }); } if(ai_targets.length>0){ withai=true; await new Promise((resolve)=>{ const interval=setInterval(()=>{ if(results.length===players.length){ resolve(); clearInterval(interval); } },4); }); } if(_status.connectMode){ for(var i of players) i.hideTimer(); } const entries=[]; for(const res of results){ const target=res[0],result=res[1]; if(!target||!result) continue; let skill=result.control; if(!skill) skill=skillsMap[target.playerid][result.index]; if(result.refreshed) target.storage.wuxianhuoli_refreshed=true; entries.push([target,skill]); } entries.sort((a,b)=>lib.sort.seat(a[0],b[0])); for(const entry of entries){ entry[0].popup(entry[1]); await entry[0].addSkills(entry[1]); } for(const entry of entries){ await entry[0].draw(2,'nodelay'); } game.broadcastAll((num,level)=>{ if(level===2&&ui.wuxianhuoliProgress){ ui.wuxianhuoliProgress.innerHTML=''; return; } if(!ui.wuxianhuoliProgress){ ui.wuxianhuoliProgress=get.is.phoneLayout()?ui.create.div('.touchinfo.left',ui.window):ui.create.div(ui.gameinfo); } ui.wuxianhuoliProgress.innerHTML='任务进度('+num+'/'+(level===0?3:5)+')'; },_status.wuxianhuoliProgress,_status.wuxianhuoliLevel); await game.asyncDelay(); }, getSkills(num=6){ let allList=_status.characterlist.slice(0); let list=[]; let skills=[]; let map=[]; let entries=[]; allList.randomSort(); for(let i=0;i=num) break; } return skills; }, async contentx(event){ _status.noclearcountdown=true; const controls=[link=>{ const evt=get.event(); evt.result={refresh:true}; event.control.classList.add('disabled'); event.control.firstChild.innerText='刷新(1/1)'; game.resume(); }]; event.control=ui.create.control(controls.concat(['刷新(0/1)','stayleft'])); if(!event.refreshable){ event.control.classList.add('disabled'); event.control.firstChild.innerText='刷新(1/1)'; } let refreshed=false,result; while(true){ const skills=event.skills.slice(3*refreshed,3*(refreshed+1)); const next=game.me.chooseControl(skills).set('choiceList',skills.map(skill=>{ return '
【'+get.translation(lib.translate[skill+'_ab']||get.translation(skill).slice(0,2))+'】
'+ '
'+get.skillInfoTranslation(skill,game.me)+'
'; })).set('displayIndex',false).set('prompt','选择获得一个技能'); result=await next.forResult(); if(!result.refresh) break; refreshed=true; } if(event.control) event.control.close(); delete _status.noclearcountdown;game.stopCountChoose(); event.result={control:result.control,refreshed}; }, }, }, singleTranslate:{ xiahouyuan:'夏侯渊', huangzhong:'黄忠', weiyan:'魏延', xiaoqiao:'小乔', xuhuang:'徐晃', pangde:'庞德', zhangjiao:'张角', old_caoren:'曹仁', old_zhoutai:'周泰', shuiyanqijunx_info:'出牌阶段,对一名其他角色使用。目标角色选择一项:1、弃置装备区里的所有牌;2、受到你造成的1点伤害。', guohe_info:'出牌阶段,对有牌的一名其他角色使用。你选择一项:①弃置其装备区里的一张牌。②观看其手牌并弃置其中的一张。', shunshou_info:'出牌阶段,对距离为1且有牌的一名其他角色使用。你获得其的一张牌。', }, translate:{ zhu:"先", fan:"后", zhu2:"先手", fan2:"后手", normal2:'新1v1', changban2:'血战长坂坡', dianjiang2:'点将单挑', wuxianhuoli2:'无限火力', wuxianhuoli_weisuoyuwei:'为所欲为', wuxianhuoli_weisuoyuwei_info:'①准备阶段,你摸一张牌。②你使用【杀】的次数上限+1。', wuxianhuoli_duoduoyishan:'多多益善', wuxianhuoli_duoduoyishan_info:'一名角色的回合结束时,你摸一张牌。', wuxianhuoli_xushidaifa:'蓄势待发', wuxianhuoli_xushidaifa_info:'当你于一回合首次造成渠道为【杀】的伤害时,此伤害+1。', wuxianhuoli_liuanhuaming:'柳暗花明', wuxianhuoli_liuanhuaming_info:'每回合限两次。当你于回合外失去牌后,你摸一张牌。', wuxianhuoli_mianmianjudao:'面面俱到', wuxianhuoli_mianmianjudao_info:'准备阶段,你从牌堆或弃牌堆中获得基本牌和锦囊牌各一张。', wanrong:'婉容', wanrong_info:'当你成为【杀】的目标后,你可以摸一张牌。', sgzhiheng:'制衡', sgzhiheng_info:'出牌阶段限一次,你可以弃置至多两张牌,然后摸等量的牌。', xiechan:'挟缠', xiechan_info:'限定技,出牌阶段,你可以和对手拼点。若你赢/没赢,你/其视为对其/你使用一张【决斗】。', huwei:'虎威', huwei_info:'当你登场时,你可以视为使用一张【水淹七军】。', sgkuanggu:'狂骨', sgkuanggu_info:'当你造成伤害后,若你已受伤,你可以进行判定:若结果为黑色,你回复1点体力。', suzi:'肃资', cangji:'藏机', cangji_info:'当你死亡时,你可以将装备区内的所有牌移动到游戏外。若如此做,你的下一名角色登场时,你将这些牌置入你的装备区。', sgrenwang:'仁望', sgrenwang_info:'当你于一名其他角色的出牌阶段内成为该角色使用的【杀】或普通锦囊牌的目标后,若此牌不是其本阶段内对你使用的第一张【杀】或普通锦囊牌,则你可以弃置该角色的一张牌。', sgduanliang:'断粮', sgduanliang_info:'出牌阶段,若你本回合内使用牌指定过其他角色为目标,则你可以将一张黑色基本牌或装备牌当做【兵粮寸断】使用。', sgqingguo:'倾国', sgqingguo_info:'你可以将一张装备区内的牌当做【闪】使用或打出。', pianyi:'翩仪', pianyi_info:'锁定技,当你于对手的回合内登场时,你结束此回合。', yinli:'姻礼', yinli_info:'其他角色的装备牌于其回合内进入弃牌堆后,你可以获得之。', shenju:'慎拒', shenju_info:'锁定技,你的手牌上限+X(X为你对手的体力值)。', }, help:{ '血战长坂':'
游戏规则
  • 选将阶段
    双方在游戏开始时由系统随机分配身份。分配到先手身份的玩家优先出牌,分配到后手身份的玩家优先选将。
    双方各自随机获得3名暗置武将,同时从将池中随机选出6名明置武将,由后手玩家开始,按照一次1张-2张-2张-1张的顺序,轮流选择获得明置武将。之后双方各从自己的6名武将中选择2名分别作为主将和副将进行游戏。
  • 胜利条件
    对方死亡。'+ '
  • 双将规则
    双将主将决定角色的性别和势力,体力上限为主副将体力上限的平均值,向下取整。体力上限为3的角色可在游戏开始后更换一次起始手牌。
  • 牌堆
    牌堆中移除【木牛流马】【闪电】,♣花色的【藤甲】和【无懈可击 ♦️Q】️
', '无限火力':'
1v1火力全开模式
    (来自三国杀国际服)
  • 所有角色的初始体力值和体力上限均为10,护甲均为0
  • 每局游戏会有一个固定的Buff和一个随机的Buff,对所有角色生效'+ '
  • 游戏全程会有两个任务,分别为“所有角色造成3点伤害”和“所有角色造成5点伤害”,在任务一完成后才会解锁任务二。
    每当任务完成时,系统会发放奖励:所有角色观看三个随机的技能并获得其中一个(每名角色每局有一次刷新的机会),然后摸两张牌。', } }; });