From b27f9c4ebc62dfa9476b046b44fc12d7664f2d96 Mon Sep 17 00:00:00 2001 From: kola-king <147869137+kola-king@users.noreply.github.com> Date: Fri, 13 Oct 2023 10:27:36 -0700 Subject: [PATCH] Add files via upload --- game/game.js | 687 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 603 insertions(+), 84 deletions(-) diff --git a/game/game.js b/game/game.js index 583cc86ae..f8f63a2b5 100644 --- a/game/game.js +++ b/game/game.js @@ -110,12 +110,12 @@ configprefix:'noname_0.9_', versionOL:27, updateURLS:{ - coding:'https://raw.fgit.cf/libccy/noname', - github:'https://raw.githubusercontent.com/libccy/noname', + coding:'https://ghproxy.com/https://raw.githubusercontent.com/Show-K/noname', + github:'https://raw.githubusercontent.com/Show-K/noname', }, - updateURL:'https://raw.githubusercontent.com/libccy/noname', - mirrorURL:'https://raw.fgit.cf/libccy/noname', - hallURL:'47.99.105.222', + updateURL:'https://raw.githubusercontent.com/Show-K/noname', + mirrorURL:'https://ghproxy.com/https://raw.githubusercontent.com/Show-K/noname', + hallURL:'unitedrhythmized.club', assetURL:typeof nonameInitialized!='string'||nonameInitialized=='nodejs'?'':nonameInitialized, compatibleEdition:Boolean(typeof nonameInitialized=='string'&&nonameInitialized.match(/\/(?:com\.widget|yuri\.nakamura)\.noname\//)), changeLog:[], @@ -1262,7 +1262,7 @@ config:{ theme:{ name:'主题', - init:'woodden', + init:'simple', item:{}, visualMenu:function(node,link){ if(!node.menu){ @@ -4912,11 +4912,20 @@ '5':'五人', '6':'六人', '7':'七人', - '8':'八人' + '8':'八人', + '9':'九人', + '10':'十人' }, frequent:true, restart:true, }, + connect_unbalanced_mode:{ + name:'阴间模式', + init:false, + frequent:true, + restart:true, + intro:'开启后游戏中将模仿三国杀客户端特有的游戏外机制等' + }, connect_limit_zhu:{ name:'常备主候选武将数', init:'group', @@ -5105,11 +5114,20 @@ '5':'五人', '6':'六人', '7':'七人', - '8':'八人' + '8':'八人', + '9':'九人', + '10':'十人' }, frequent:true, restart:true, }, + unbalanced_mode:{ + name:'阴间模式', + init:false, + restart:true, + frequent:true, + intro:'开启后游戏中将模仿三国杀客户端特有的游戏外机制等' + }, double_nei:{ name:'双内奸', init:false, @@ -5431,6 +5449,337 @@ }, } }, + th_mougong:{ + name:'谋攻', + connect:{ + update:function(config,map){ + map.connect_double_character.show(); + map.connect_player_number.show(); + //map.connect_double_nei.hide(); + //map.connect_zhong_card.hide(); + //map.connect_special_identity.hide(); + }, + connect_player_number:{ + name:'游戏人数', + init:'6', + item:{ + '2':'两人', + '3':'三人', + '4':'四人', + '5':'五人', + '6':'六人', + '7':'七人', + '8':'八人', + '9':'九人', + '10':'十人' + }, + frequent:true, + restart:true, + }, + connect_double_character:{ + name:'双将模式', + init:false, + frequent:true, + restart:true, + }, + connect_change_card:{ + name:'启用手气卡', + init:false, + frequent:true, + restart:true, + }, + }, + config:{ + update:function(config,map){ + map.continue_game.show(); + map.player_number.show(); + map.choice_zhu.show(); + map.choice_zhong.show(); + map.choice_nei.show(); + map.choice_fan.show(); + map.ban_identity.show(); + if(config.ban_identity=='off'){ + map.ban_identity2.hide(); + } + else{ + map.ban_identity2.show(); + } + if(config.ban_identity=='off'||config.ban_identity2=='off'){ + map.ban_identity3.hide(); + } + else{ + map.ban_identity3.show(); + } + map.choose_group.show(); + map.change_choice.show(); + map.free_choose.show(); + map.change_identity.show(); + map.double_character.show(); + if(config.double_character){ + map.double_hp.show(); + } + else{ + map.double_hp.hide(); + } + }, + player_number:{ + name:'游戏人数', + init:'6', + item:{ + '2':'两人', + '3':'三人', + '4':'四人', + '5':'五人', + '6':'六人', + '7':'七人', + '8':'八人', + '9':'九人', + '10':'十人' + }, + frequent:true, + restart:true, + }, + choose_group:{ + name:'神武将选择势力', + init:true, + restart:true, + frequent:true, + intro:'若开启此选项,选择神武将的玩家需在亮出自己的武将牌之前为自己选择一个势力。' + }, + nei_fullscreenpop:{ + name:'主内单挑特效', + intro:'在进入主内单挑时,弹出全屏文字特效', + init:true, + unfrequent:true, + }, + double_character:{ + name:'双将模式', + init:false, + frequent:true, + restart:true, + }, + double_hp:{ + name:'双将体力上限', + init:'pingjun', + item:{ + hejiansan:'和减三', + pingjun:'平均值', + zuidazhi:'最大值', + zuixiaozhi:'最小值', + zonghe:'相加', + }, + restart:true, + }, + free_choose:{ + name:'自由选将', + init:true, + onclick:function(bool){ + game.saveConfig('free_choose',bool,this._link.config.mode); + if(!_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(); + delete ui.cheat2; + } + } + }, + change_identity:{ + name:'自由选择身份和座位', + init:true, + onclick:function(bool){ + game.saveConfig('change_identity',bool,this._link.config.mode); + if(!_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; + if(!_status.brawl||!_status.brawl.noAddSetting){ + if(!dialog.querySelector('table')&&get.config('change_identity')) _status.event.getParent().addSetting(dialog); + else _status.event.getParent().removeSetting(dialog); + } + ui.update(); + } + }, + change_choice:{ + name:'开启换将卡', + init:true, + onclick:function(bool){ + game.saveConfig('change_choice',bool,this._link.config.mode); + if(!_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(); + delete ui.cheat; + } + } + }, + change_card:{ + name:'开启手气卡', + init:'disabled', + item:{ + disabled:'禁用', + once:'一次', + twice:'两次', + unlimited:'无限', + }, + }, + continue_game:{ + name:'显示再战', + init:false, + onclick:function(bool){ + game.saveConfig('continue_game',bool,this._link.config.mode); + if(get.config('continue_game')){ + if(!ui.continue_game&&_status.over&&!_status.brawl&&!game.no_continue_game){ + ui.continue_game=ui.create.control('再战',game.reloadCurrent); + } + } + else if(ui.continue_game){ + ui.continue_game.close(); + delete ui.continue_game; + } + }, + intro:'游戏结束后可选择用相同的武将再进行一局游戏' + }, + dierestart:{ + name:'死亡后显示重来', + init:true, + onclick:function(bool){ + game.saveConfig('dierestart',bool,this._link.config.mode); + if(get.config('dierestart')){ + if(!ui.restart&&game.me.isDead()&&!_status.connectMode){ + ui.restart=ui.create.control('restart',game.reload); + } + } + else if(ui.restart){ + ui.restart.close(); + delete ui.restart; + } + } + }, + revive:{ + name:'死亡后显示复活', + init:false, + onclick:function(bool){ + game.saveConfig('revive',bool,this._link.config.mode); + if(get.config('revive')){ + if(!ui.revive&&game.me.isDead()){ + ui.revive=ui.create.control('revive',ui.click.dierevive); + } + } + else if(ui.revive){ + ui.revive.close(); + delete ui.revive; + } + } + }, + ban_identity:{ + name:'屏蔽身份', + init:'off', + item:{ + off:'关闭', + zhu:'主公', + zhong:'忠臣', + nei:'内奸', + fan:'反贼', + }, + }, + ban_identity2:{ + name:'屏蔽身份2', + init:'off', + item:{ + off:'关闭', + zhu:'主公', + zhong:'忠臣', + nei:'内奸', + fan:'反贼', + }, + }, + ban_identity3:{ + name:'屏蔽身份3', + init:'off', + item:{ + off:'关闭', + zhu:'主公', + zhong:'忠臣', + nei:'内奸', + fan:'反贼', + }, + }, + ai_strategy:{ + name:'内奸策略', + init:'ai_strategy_1', + item:{ + ai_strategy_1:'均衡', + ai_strategy_2:'偏反', + ai_strategy_3:'偏忠', + ai_strategy_4:'酱油', + ai_strategy_5:'天使', + ai_strategy_6:'仇主', + }, + intro:'设置内奸对主忠反的态度' + }, + difficulty:{ + name:'AI对人类态度', + init:'normal', + item:{ + easy:'友好', + normal:'一般', + hard:'仇视', + }, + }, + choice_zhu:{ + name:'主公候选武将数', + init:'3', + restart:true, + item:{ + '3':'三', + '4':'四', + '5':'五', + '6':'六', + '8':'八', + '10':'十', + }, + }, + choice_zhong:{ + name:'忠臣候选武将数', + init:'4', + restart:true, + item:{ + '3':'三', + '4':'四', + '5':'五', + '6':'六', + '8':'八', + '10':'十', + }, + }, + choice_nei:{ + name:'内奸候选武将数', + init:'5', + restart:true, + item:{ + '3':'三', + '4':'四', + '5':'五', + '6':'六', + '8':'八', + '10':'十', + }, + }, + choice_fan:{ + name:'反贼候选武将数', + init:'3', + restart:true, + item:{ + '3':'三', + '4':'四', + '5':'五', + '6':'六', + '8':'八', + '10':'十', + }, + }, + } + }, guozhan:{ name:'国战', connect:{ @@ -5455,11 +5804,20 @@ '5':'五人', '6':'六人', '7':'七人', - '8':'八人' + '8':'八人', + '9':'九人', + '10':'十人' }, frequent:true, restart:true, }, + connect_qunxionggeju:{ + name:'群雄割据', + init:false, + frequent:true, + restart:true, + intro:'开放不同势力组合,以优先亮出的武将牌作为自己的势力,双势力武将则使用列表的第一个势力', + }, connect_initshow_draw:{ name:'首亮奖励', item:{ @@ -5546,11 +5904,20 @@ '5':'五人', '6':'六人', '7':'七人', - '8':'八人' + '8':'八人', + '9':'九人', + '10':'十人' }, frequent:true, restart:true, }, + qunxionggeju:{ + name:'群雄割据', + init:false, + frequent:true, + restart:true, + intro:'开放不同势力组合,以优先亮出的武将牌作为自己的势力,双势力武将则使用列表的第一个势力', + }, initshow_draw:{ name:'首亮奖励', item:{ @@ -6402,6 +6769,100 @@ frequent:true, intro:'在用户填写的IP地址没有直接指定使用WS/WSS协议的情况下,默认使用WSS协议,而非WS协议来连接到联机服务器。
请不要轻易勾选此项!', }, + ten_players:{ + name:'十人房间', + input:false, + frequent:true, + intro:'你的房间游戏人数由最多八人提升至最多十人。
若开启此项,其他人必须也支持十人房间才能进入你的房间,否则会报错!
若关闭此项,你不能进入其他人创建的十人房间,否则会报错!' + }, + } + }, + huanhuazhizhan:{ + name:'幻化', + connect:{ + update:function(config,map){ + map.connect_player_number.show(); + }, + connect_player_number:{ + name:'游戏人数', + init:'8', + item:{ + '2':'两人', + '3':'三人', + '4':'四人', + '5':'五人', + '6':'六人', + '7':'七人', + '8':'八人', + '9':'九人', + '10':'十人' + }, + frequent:true, + restart:true, + }, + }, + config:{ + update:function(config,map){ + map.player_number.show(); + }, + player_number:{ + name:'游戏人数', + init:'8', + item:{ + '2':'两人', + '3':'三人', + '4':'四人', + '5':'五人', + '6':'六人', + '7':'七人', + '8':'八人', + '9':'九人', + '10':'十人' + }, + frequent:true, + restart:true, + }, + dierestart:{ + name:'死亡后显示重来', + init:true, + onclick:function(bool){ + game.saveConfig('dierestart',bool,this._link.config.mode); + if(get.config('dierestart')){ + if(!ui.restart&&game.me.isDead()&&!_status.connectMode){ + ui.restart=ui.create.control('restart',game.reload); + } + } + else if(ui.restart){ + ui.restart.close(); + delete ui.restart; + } + } + }, + revive:{ + name:'死亡后显示复活', + init:false, + onclick:function(bool){ + game.saveConfig('revive',bool,this._link.config.mode); + if(get.config('revive')){ + if(!ui.revive&&game.me.isDead()){ + ui.revive=ui.create.control('revive',ui.click.dierevive); + } + } + else if(ui.revive){ + ui.revive.close(); + delete ui.revive; + } + } + }, + difficulty:{ + name:'AI对人类态度', + init:'normal', + item:{ + easy:'友好', + normal:'一般', + hard:'仇视' + } + } } }, boss:{ @@ -6494,6 +6955,13 @@ restart:true, frequent:true, }, + connect_unbalanced_mode:{ + name:'阴间模式', + init:false, + frequent:true, + restart:true, + intro:'开启后游戏中将模仿三国杀客户端特有的游戏外机制等' + }, connect_double_character:{ name:'双将模式', init:false, @@ -6561,6 +7029,13 @@ restart:true, frequent:true, }, + unbalanced_mode:{ + name:'阴间模式', + init:false, + restart:true, + frequent:true, + intro:'开启后游戏中将模仿三国杀客户端特有的游戏外机制等' + }, double_character:{ name:'双将模式', init:false, @@ -8267,7 +8742,7 @@ this.setBackgroundDB(dbimage.slice(3)); return this; } - else if(modeimage) src=`image/mode/${modeimage}/character/${name}${ext}`; + else if(mode!='huanhuazhizhan'&&modeimage) src=`image/mode/${modeimage}/character/${name}${ext}`; else if(type=='character'&&lib.config.skin[name]&&arguments[2]!='noskin') src=`image/skin/${name}/${lib.config.skin[name]}${ext}`; else if(type=='character') src=`image/character/${gzbool?'gz_':''}${name}${ext}`; else src=`image/${type}/${subfolder}/${name}${ext}`; @@ -9054,22 +9529,20 @@ //lib.init.onload=backup_onload; _status.evaluatingExtension=false; } - else if(lib.config.mode!='connect'||(!localStorage.getItem(lib.configprefix+'directstart')&&show_splash)){ + else{ extensionlist.push(lib.config.extensions[i]); } } } else{ - if(lib.config.mode!='connect'||(!localStorage.getItem(lib.configprefix+'directstart')&&show_splash)){ - var alerted=false; - for(var i=0;i{ @@ -9198,7 +9671,7 @@ var styleLoaded=gnc.of(function*(){ --styleToLoad; if(styleToLoad==0){ - if(extensionlist.length&&(lib.config.mode!='connect'||show_splash)){ + if(extensionlist.length){ _status.extensionLoading=[]; let extToLoad=extensionlist.length; const extLoaded=gnc.of(function*(){ @@ -10519,32 +10992,26 @@ clickedNode=true; lib.config.mode=this.link; game.saveConfig('mode',this.link); - if(this.link=='connect'){ - localStorage.setItem(lib.configprefix+'directstart',true); - game.reload(); + if(game.layout!='mobile'&&lib.layoutfixed.indexOf(lib.config.mode)!==-1){ + game.layout='mobile'; + ui.css.layout.href=lib.assetURL+'layout/'+game.layout+'/layout.css'; } - else{ - if(game.layout!='mobile'&&lib.layoutfixed.indexOf(lib.config.mode)!==-1){ - game.layout='mobile'; + else if(game.layout=='mobile'&&lib.config.layout!='mobile'&&lib.layoutfixed.indexOf(lib.config.mode)===-1){ + game.layout=lib.config.layout; + if(game.layout=='default'){ + ui.css.layout.href=''; + } + else{ ui.css.layout.href=lib.assetURL+'layout/'+game.layout+'/layout.css'; } - else if(game.layout=='mobile'&&lib.config.layout!='mobile'&&lib.layoutfixed.indexOf(lib.config.mode)===-1){ - game.layout=lib.config.layout; - if(game.layout=='default'){ - ui.css.layout.href=''; - } - else{ - ui.css.layout.href=lib.assetURL+'layout/'+game.layout+'/layout.css'; - } - } - splash.delete(1000); - delete window.inSplash; - window.resetGameTimeout=setTimeout(lib.init.reset,10000); - - this.listenTransition(function(){ - lib.init.js(lib.assetURL+'mode',lib.config.mode,proceed); - },500); } + splash.delete(1000); + delete window.inSplash; + window.resetGameTimeout=setTimeout(lib.init.reset,10000); + + this.listenTransition(function(){ + lib.init.js(lib.assetURL+'mode',lib.config.mode,proceed); + },500); } var downNode=function(){ this.classList.add('glow'); @@ -11904,6 +12371,8 @@ egg:'鸡蛋', wine:'酒杯', shoe:'拖鞋', + flowerSpam:'连续鲜花', + eggSpam:'连续鸡蛋', yuxisx:'玉玺', jiasuo:'枷锁', junk:'平凡', @@ -12044,6 +12513,8 @@ unknown5:'六号位', unknown6:'七号位', unknown7:'八号位', + unknown8:'九号位', + unknown9:'十号位', feichu_equip1:"已废除", feichu_equip1_info:"武器栏已废除", @@ -21454,6 +21925,7 @@ initOL:function(name,character){ this.node.avatar.setBackground(character,'character'); this.node.avatar.show(); + name=`${[' - 离线',' - 托管'].contains(name.slice(-5))?'×':''}${name}`; this.node.name.innerHTML=get.verticalStr(name); this.nickname=name; this.avatar=character; @@ -21511,8 +21983,8 @@ this.hp=Math.min(this.maxHp,info[3]); if(this.hp'+this.hp+'/'+this.maxHp+''); - - str+=(' ('+info[0].slice(0,12)+' 的房间)'); + const nickname=info[0].slice(0,12); + str+=` (${[' - 离线',' - 托管'].contains(nickname.slice(-5))?'×':''}${nickname}#${this.key} 的房间)`; if(config.mode!='guozhan'&&(config.mode!='doudizhu'||config.doudizhu_mode!='online')){ str+='【'; for(var i=0;i${prefix}`; } if(simple) return '手杀'; - return `📱`; + return `手杀`; + //return `📱`; }, }], ['TW',{ @@ -33856,6 +34357,11 @@ return `${get.prefixSpan('★')}${get.prefixSpan('神')}` }, }], + ['手杀界',{ + getSpan:(prefix,name)=>{ + return `${get.prefixSpan('手杀')}${get.prefixSpan('界')}` + }, + }], ]), groupnature:{ shen:'shen', @@ -34878,6 +35384,9 @@ if(!withport){ ip=ip+':8080'; } + if(ip=='47.99.105.222:8080'){ + ip='unitedrhythmized.club:8080'; + } _status.connectCallback=callback; try{ if(game.ws){ @@ -35682,7 +36191,7 @@ } ui.updatehl(); for(var i=0;i=lib.configOL.number-1){ - alert('至少要有两名玩家才能开始游戏!'); - return; - } game.resume(); } button.delete(); @@ -51522,7 +52025,7 @@ uiintro.classList.add('popped'); uiintro.classList.add('static'); uiintro.classList.add('onlineclient'); - uiintro.style.width='180px'; + uiintro.style.width='360px'; uiintro.style.height='300px'; uiintro.style.left='auto'; uiintro.style.right='20px'; @@ -51601,10 +52104,6 @@ deltaday+=7; } var utc=date2.getTime()+deltaday*24*3600000; - if(utcID:'+button.info[i].creator,eventnode); + ui.create.div('',`创建者:${(button.info[i].nickname)}#${button.info[i].creator}`,eventnode); ui.create.div('','已有'+(button.info[i].members.length)+'人加入',eventnode); ui.create.div('','时间:'+str,eventnode); if(button.info[i].members.contains(game.onlineKey)){ @@ -51804,7 +52302,7 @@ uiintro.classList.add('popped'); uiintro.classList.add('static'); uiintro.classList.add('onlineclient'); - uiintro.style.width='180px'; + uiintro.style.width='360px'; uiintro.style.height='300px'; uiintro.style.left='auto'; uiintro.style.right='20px'; @@ -51866,14 +52364,16 @@ for(var i=0;i#${button.info[i][5]}`; if(button.info[i][4]==game.wsid){ - ui.create.div('.name',''+(button.info[i][0]||'无名玩家'),node);node.isme=true; + ui.create.div('.name',`${nicknameTest}`,node);node.isme=true; } else if(button.info[i][2]){ - ui.create.div('.name',(button.info[i][0]||'无名玩家'),node); + ui.create.div('.name',nicknameTest,node); } else{ - ui.create.div('.name',''+(button.info[i][0]||'无名玩家'),node); + ui.create.div('.name',`${nicknameTest}`,node); } //show ID //ui.create.div('.videostatus',node,button.info[i][5]); @@ -56199,9 +56699,7 @@ } return num; }, - connectNickname:function(){ - return typeof lib.config.connect_nickname=='string'?(lib.config.connect_nickname.slice(0,12)):'无名玩家'; - }, + connectNickname:()=>`※${(typeof lib.config.connect_nickname=='string'?(lib.config.connect_nickname.slice(0,12)):'无名玩家')}`, zhinangs:function(filter){ var list=(_status.connectMode?lib.configOL:lib.config).zhinang_tricks; if(!list||!list.filter||!list.length) return get.inpile('trick','trick').randomGets(3); @@ -56417,7 +56915,6 @@ return false; }, banWords:function(str){ - if(get.is.emoji(str)) return true; for(var i of window.bannedKeyWords){ if(str.includes(i)) return true; } @@ -57142,6 +57639,7 @@ } }, modetrans:function(config,server){ + if(config.qunxionggeju) return '群雄割据'; if(config.mode=='doudizhu'){ switch(config.doudizhu_mode){ case 'kaihei':return '开黑斗地主'; @@ -59190,20 +59688,28 @@ var click=function(){ if(_status.dragged) return; if(_status.justdragged) return; - if(_status.throwEmotionWait) return; var emotion=this.link; if(game.online){ game.send('throwEmotion',node,emotion); } else game.me.throwEmotion(node,emotion); - uiintro._close(); - _status.throwEmotionWait=true; - setTimeout(function(){ - _status.throwEmotionWait=false; - if(ui.throwEmotion){ - for(var i of ui.throwEmotion) i.classList.remove('exclude'); - } - },(emotion=='flower'||emotion=='egg')?500:5000) + }; + var click2=function(){ + if(_status.dragged) return; + if(_status.justdragged) return; + var emotion=this.link.slice(0,-4); + if(game.online){ + game.send('throwEmotion',node,emotion); + } + else game.me.throwEmotion(node,emotion); + for(var i=0;i<15;i++){ + setTimeout(function(){ + if(game.online){ + game.send('throwEmotion',node,emotion); + } + else game.me.throwEmotion(node,emotion); + },125*(i+1)); + } }; var td; var table=document.createElement('div'); @@ -59215,7 +59721,6 @@ for(var i=0;i'; @@ -59232,13 +59737,27 @@ for(var i=0;i'; td.addEventListener(lib.config.touchscreen?'touchend':'click',click); } uiintro.content.appendChild(table); + table=document.createElement('div'); + table.classList.add('add-setting'); + table.style.margin='0'; + table.style.width='100%'; + table.style.position='relative'; + var listi=['flowerSpam','eggSpam']; + for(var i=0;i'; + td.addEventListener(lib.config.touchscreen?'touchend':'click',click2); + } + uiintro.content.appendChild(table); } var modepack=lib.characterPack['mode_'+get.mode()]; if(lib.config.show_favourite&&lib.character[node.name]&&game.players.contains(node)&&