From 725fc305c9bc735998bd9fb98587234969dfb40e Mon Sep 17 00:00:00 2001 From: copcap Date: Tue, 19 Mar 2024 21:33:54 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=B8=BA=E6=97=A0=E5=90=8D=E6=9D=80?= =?UTF-8?q?=E5=8D=95=E6=8C=91=E6=A8=A1=E5=BC=8F=E4=B8=AD=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=B5=B7=E5=A4=96=E6=9C=8D=E6=97=A0=E9=99=90=E7=81=AB=E5=8A=9B?= =?UTF-8?q?=E7=9A=84=E5=89=AF=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mode/single.js | 584 ++++++++++++++++++++++++++++++ noname/get/index.js | 1 + noname/library/element/content.js | 9 +- noname/library/index.js | 32 ++ 4 files changed, 623 insertions(+), 3 deletions(-) diff --git a/mode/single.js b/mode/single.js index d5cd5775b..c137e7c62 100644 --- a/mode/single.js +++ b/mode/single.js @@ -207,6 +207,23 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ card[2]=='wuxie'&&card[0]=='diamond'&&card[1]==12) lib.card.list.splice(i--,1); } } + else if(_status.mode=='wuxianhuoli'){ + var list=[]; + if(_status.connectMode) list=get.charactersOL(); + else{ + var list=[]; + for(var i in lib.character){ + if(!lib.filter.characterDisabled2(i)&&!lib.filter.characterDisabled(i)) list.push(i); + } + } + game.countPlayer2(function(current){ + list.remove(current.name); + list.remove(current.name1); + list.remove(current.name2); + }); + _status.characterlist=list; + game.broadcast(list=>_status.characterlist=list,list); + } if(_status.connectMode){ lib.configOL.number=2; game.randomMapOL(); @@ -242,6 +259,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ game.gameDraw(game.zhu,function(player){ if(_status.mode=='dianjiang') return 4; + if(_status.mode=='wuxianhuoli') return 4; if(_status.mode=='normal') return player==game.zhu?3:4; if(_status.mode=='changban') return player==game.fan?5:4; if(player.hasSkill('cuorui')){ @@ -250,6 +268,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } return player.maxHp; }); + if(_status.connectMode&&lib.configOL.change_card) game.replaceHandcards(game.players.slice(0)); + 'step 4' game.phaseLoop(game.zhu); }, game:{ @@ -375,11 +395,121 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ },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=>{ + 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(){ @@ -612,11 +742,160 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ },game.fan,result.links[0],event.videoId); }); }, + chooseCharacterWuxianhuoliOL(){ + 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]); + 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]); + 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" @@ -1138,6 +1417,297 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } }, }, + wuxianhuoli_weisuoyuwei:{ + trigger:{player:'phaseZhunbeiBegin'}, + forced:true, + silent:true, + popup:true, + charlotte:true, + async content(_,__,player){ + player.draw(); + }, + mod:{ + cardUsable(card,player,num){ + if(card.name=='sha') return num+1; + }, + }, + }, + wuxianhuoli_duoduoyishan:{ + trigger:{global:'phaseEnd'}, + forced:true, + silent:true, + popup:true, + charlotte:true, + async content(_,__,player){ + player.draw(); + }, + }, + wuxianhuoli_xushidaifa:{ + trigger:{source:'damageBegin1'}, + filter(event,player){ + if(!event.card||event.card.name!=='sha') return false; + return game.getGlobalHistory('everything',evt=>{ + 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:'夏侯渊', @@ -1161,6 +1731,18 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ 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:'当你成为【杀】的目标后,你可以摸一张牌。', @@ -1191,6 +1773,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ help:{ '血战长坂':'
游戏规则
  • 选将阶段
    双方在游戏开始时由系统随机分配身份。分配到先手身份的玩家优先出牌,分配到后手身份的玩家优先选将。
    双方各自随机获得3名暗置武将,同时从将池中随机选出6名明置武将,由后手玩家开始,按照一次1张-2张-2张-1张的顺序,轮流选择获得明置武将。之后双方各从自己的6名武将中选择2名分别作为主将和副将进行游戏。
  • 胜利条件
    对方死亡。'+ '
  • 双将规则
    双将主将决定角色的性别和势力,体力上限为主副将体力上限的平均值,向下取整。体力上限为3的角色可在游戏开始后更换一次起始手牌。
  • 牌堆
    牌堆中移除【木牛流马】【闪电】,♣花色的【藤甲】和【无懈可击 ♦️Q】️
', + '无限火力':'
1v1火力全开模式
    (来自三国杀国际服)
  • 所有角色的初始体力值和体力上限均为10,护甲均为0
  • 每局游戏会有一个固定的Buff和一个随机的Buff,对所有角色生效'+ + '
  • 游戏全程会有两个任务,分别为“所有角色造成3点伤害”和“所有角色造成5点伤害”,在任务一完成后才会解锁任务二。
    每当任务完成时,系统会发放奖励:所有角色观看三个随机的技能并获得其中一个(每名角色每局有一次刷新的机会),然后摸两张牌。', } }; }); diff --git a/noname/get/index.js b/noname/get/index.js index d7ade0a30..f30dbe47e 100644 --- a/noname/get/index.js +++ b/noname/get/index.js @@ -1021,6 +1021,7 @@ export class Get extends Uninstantable { case 'normal': return '新1v1'; case 'changban': return '血战长坂坡'; case 'dianjiang': return '点将单挑'; + case 'wuxianhuoli': return '无限火力'; } } if (config.mode == 'identity') { diff --git a/noname/library/element/content.js b/noname/library/element/content.js index bfeb938ea..eb1df0a3e 100644 --- a/noname/library/element/content.js +++ b/noname/library/element/content.js @@ -1922,9 +1922,12 @@ export const Content = { } while (player != end); event.changeCard = get.config('change_card'); - if (_status.connectMode || (lib.config.mode == 'doudizhu' && _status.mode == 'online') || lib.config.mode != 'identity' && lib.config.mode != 'guozhan' && lib.config.mode != 'doudizhu') { - event.changeCard = 'disabled'; - } + if (_status.connectMode || + (lib.config.mode == 'single' && _status.mode != 'wuxianhuoli') || + (lib.config.mode == 'doudizhu' && _status.mode == 'online') || + lib.config.mode != 'identity' && lib.config.mode != 'guozhan' && lib.config.mode != 'doudizhu' && lib.config.mode != 'single') { + event.changeCard = 'disabled'; + } "step 1"; if (event.changeCard != 'disabled' && !_status.auto) { event.dialog = ui.create.dialog('是否使用手气卡?'); diff --git a/noname/library/index.js b/noname/library/index.js index 7fdf3cd31..69bbfa30f 100644 --- a/noname/library/index.js +++ b/noname/library/index.js @@ -6933,9 +6933,11 @@ export class Library extends Uninstantable { normal: '新1v1', dianjiang: '点将单挑', changban: '血战长坂坡', + wuxianhuoli: '无限火力', }, restart: true, frequent: true, + intro: '血战长坂坡和无限火力模式详见帮助', }, connect_enable_jin: { name: '启用晋势力武将', @@ -6943,6 +6945,12 @@ export class Library extends Uninstantable { restart: true, frequent: true, }, + connect_change_card: { + name: '启用手气卡', + init: false, + frequent: true, + restart: true, + }, update: function (config, map) { if (config.connect_single_mode != 'normal') { map.connect_enable_jin.hide(); @@ -6950,6 +6958,12 @@ export class Library extends Uninstantable { else { map.connect_enable_jin.show(); } + if (config.connect_single_mode != 'wuxianhuoli') { + map.connect_change_card.hide(); + } + else { + map.connect_change_card.show(); + } }, }, config: { @@ -6960,9 +6974,11 @@ export class Library extends Uninstantable { normal: '新1v1', dianjiang: '点将单挑', changban: '血战长坂坡', + wuxianhuoli: '无限火力', }, restart: true, frequent: true, + intro: '血战长坂坡和无限火力模式详见帮助', }, enable_jin: { name: '启用晋势力武将', @@ -6970,6 +6986,16 @@ export class Library extends Uninstantable { restart: true, frequent: true, }, + change_card: { + name: '开启手气卡', + init: 'disabled', + item: { + disabled: '禁用', + once: '一次', + twice: '两次', + unlimited: '无限', + } + }, update: function (config, map) { if (config.single_mode != 'normal') { map.enable_jin.hide(); @@ -6977,6 +7003,12 @@ export class Library extends Uninstantable { else { map.enable_jin.show(); } + if (config.single_mode != 'wuxianhuoli') { + map.change_card.hide(); + } + else { + map.change_card.show(); + } }, } }, From 27abca2adc9e746948d89e18d94291e713435d77 Mon Sep 17 00:00:00 2001 From: copcap Date: Tue, 19 Mar 2024 22:57:15 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=97=A0=E9=99=90=E7=81=AB=E5=8A=9B?= =?UTF-8?q?=E9=9A=90=E5=8C=BF=E5=B0=86=E4=BD=93=E5=8A=9B=E5=80=BC=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mode/single.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mode/single.js b/mode/single.js index c137e7c62..461751717 100644 --- a/mode/single.js +++ b/mode/single.js @@ -439,6 +439,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ 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; @@ -806,6 +810,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ _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; @@ -817,6 +825,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ 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;