diff --git a/character/rank.js b/character/rank.js index ea3b1c3e5..4ed520396 100644 --- a/character/rank.js +++ b/character/rank.js @@ -967,6 +967,7 @@ window.noname_character_rank={ 'xin_fuhuanghou', 'sp_xunchen', 'zhaozhong', + 'zongyu', ], c:[ 'xiahoudun', diff --git a/character/shenhua.js b/character/shenhua.js index 655ffec9f..60da709e8 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -73,7 +73,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, perfectPair:{ jiaxu:['liqueguosi'], - re_yuanshao:['yanwen'], + re_yuanshao:['yanwen','tianfeng'], menghuo:['zhurong'], sp_zhugeliang:['pangtong','huangyueying'], sunce:['zhouyu','taishici','daqiao'], diff --git a/character/sp.js b/character/sp.js index 5bc697061..491ced2a9 100755 --- a/character/sp.js +++ b/character/sp.js @@ -10,13 +10,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_star:["sp_xiahoushi","jsp_zhaoyun","huangjinleishi","sp_pangtong","sp_daqiao","sp_ganning","sp_xiahoudun","sp_lvmeng","sp_zhangfei","sp_liubei"], sp_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'], sp_guozhan:["zangba","shamoke","ganfuren","yuejin","hetaihou","dingfeng","panfeng","jianggan"], - sp_guozhan2:["mifuren","mateng","tianfeng","chendong","sp_dongzhuo","jiangfei","jiangqing","kongrong","bianfuren","liqueguosi","lvfan","cuimao","jiling","zhangren","zoushi","huaxin","luyusheng"], + sp_guozhan2:["mifuren","mateng","tianfeng","chendong","sp_dongzhuo","jiangfei","jiangqing","kongrong","bianfuren","liqueguosi","lvfan","cuimao","jiling","zhangren","zoushi","huaxin","luyusheng","zongyu"], sp_single:["niujin"], sp_others:["hanba","caiyang"], }, }, characterFilter:{}, character:{ + zongyu:['male','shu',3,['zyqiao','chengshang']], luyusheng:['female','wu',3,['zhente','zhiwei']], ol_xinxianying:['female','wei',3,['xincaishi','xinzhongjian']], huaxin:['male','wei',3,['wanggui','xibing']], @@ -154,6 +155,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //kaisa:["male","western",4,["zhengfu"]], }, characterIntro:{ + zongyu:'宗预(?-264年),字德艳 ,荆州南阳郡安众县(今河南省南阳市)人。三国时期蜀汉官员、将领。曾随张飞入蜀助平益州,又受辟为丞相诸葛亮手下主簿,升任参军、右中郎将。诸葛亮逝世后,宗预受命出使孙吴,得到孙权的赞赏。迁后将军,出督永安,又升任征西大将军,并受封关内侯。公元258年(景耀元年),因病回成都,受任镇军大将军。蜀汉灭亡后,宗预随后主刘禅徙往洛阳,在中途病逝。宗预为人坦率耿直,多次出使孙吴并深得孙权的敬重,为吴、汉两国同盟的巩固作出了一定的贡献。', mifangfushiren:'麋芳(生卒年不详),字子方,东海郡朐县(今江苏省连云港市)人。汉末三国时期蜀国将领,刘备糜夫人的兄弟。麋芳本为徐州牧陶谦部下,曾被曹操表为彭城相。后来辞官,随刘备从徐州辗转至邺城、汝南、新野、长坂坡、江夏等地,奔波多年。傅士仁(生卒年不详),字君义,幽州广阳郡(今北京市)人,刘备手下将领。受到刘备的重用,但被关羽轻慢。
刘备称汉中王时,糜芳为南郡太守,但受到关羽的轻慢。后来,因未完成供给军资的任务而被关羽责骂,心中不安。吕蒙袭取荆州时,将已经投降的傅士仁展示给糜芳,麋芳于是选择投降,导致关羽兵败被杀。此后,在吴国担任将军,并且为吴征伐。', mengda:'孟达(?-228),字子度,本字子敬,因刘备的叔父名叫刘子敬,为避讳而改字。扶风郡郿人,三国时期人物。本为刘璋属下,后降刘备。关羽围樊城、襄阳时因不发兵救关羽而触怒刘备,于是投奔曹魏。此后,劝降刘封,未果。在魏官至散骑常侍、建武将军,封平阳亭侯。此后又欲反曹魏而归蜀汉,事败而死。', luyusheng:'陆郁生(?年-?),三国时期吴国官员陆绩之女。陆郁生的父亲陆绩是吴郡公认的才子,又是当时吴郡陆氏的领袖。陆绩赴任担任郁林太守,遂取此名。陆郁生年少的时候就定下坚贞的志向。建安二十四年(219年),陆绩早亡,她与两个兄弟陆宏、陆睿当时都只有几岁,一起返回吴县,被他们的从兄陆瑁接回抚养。13周岁的陆郁生嫁给同郡出身的张白为妻。出嫁3个月后,张白因为其兄张温一族的案件遭到连坐,被处以流刑,后死于流放地,陆郁生成为了寡妇,其后公开宣言不再改嫁,困难于生计但拒绝了所有提亲,在艰苦中从未停止服侍、照顾张白的姐妹。事情传到朝廷,皇帝褒奖陆郁生,号其为“义姑”。她的表侄姚信在文集中称赞她的义举。', @@ -400,6 +402,64 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //宗预 + zyqiao:{ + audio:2, + trigger:{target:'useCardToTargeted'}, + logTarget:'player', + usable:2, + filter:function(event,player){ + var source=event.player; + if(source==player) return false; + if(get.mode()=='guozhan'&&source.isFriendOf(player)) return false; + return source.countDiscardableCards(player,'he')>0; + }, + check:function(event,player){ + var target=event.player; + if(get.attitude(player,target)>=0) return false; + if(!player.countCards('he',function(card){ + return lib.filter.cardDiscardable(card,player,'zyqiao'); + })) return true; + if(player.countCards('he',(card)=>get.value(card,player)<5)) return true; + if(target.countCards('he',(card)=>get.value(card,target)>6)&&player.countCards('he',(card)=>get.value(card,player)<7)) return true; + return false; + }, + content:function(){ + 'step 0' + player.discardPlayerCard(trigger.player,true,'he'); + 'step 1' + if(player.countCards('he',function(card){ + return lib.filter.cardDiscardable(card,player,'zyqiao'); + })) player.chooseToDiscard('he',true); + }, + }, + chengshang:{ + audio:2, + trigger:{player:'useCardAfter'}, + filter:function(event,player){ + if(!lib.suit.contains(get.suit(event.card,false))||typeof get.number(event.card)!='number') return false; + if(player.getHistory('sourceDamage',function(evt){ + return evt.card==event.card; + }).length) return false; + var phsu=event.getParent('phaseUse'); + if(!phsu||phsu.player!=player) return false; + if(player.getHistory('gain',function(evt){ + return evt.getParent().name=='chengshang'; + }).length) return false; + for(var i of event.targets){ + if(i!=player&&(get.mode()!='guozhan'||i.isEnemyOf(player))) return true; + } + return false; + }, + content:function(){ + var suit=get.suit(trigger.card); + var number=get.number(trigger.card); + var card=get.cardPile2(function(card){ + return card.suit==suit&&card.number==number; + }); + if(card) player.gain(card,'gain2'); + }, + }, //新丁奉 reduanbing:{ audio:2, @@ -16618,6 +16678,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ refenxun:'奋迅', refenxun2:'奋迅', refenxun_info:'出牌阶段限一次,你可以选择一名其他角色,然后本回合你计算与其的距离视为1;结束阶段开始时,若你未对其造成过伤害,你弃一张牌。', + zongyu:'宗预', + zyqiao:'气傲', + zyqiao_info:'每回合限两次。当你成为其他角色使用牌的目标后,你可以弃置其一张牌,然后你弃置一张牌。', + zyqiao_info_guozhan:'每回合限两次。当你成为其他势力的角色使用牌的目标后,你可以弃置其一张牌,然后你弃置一张牌。', + chengshang:'承赏', + chengshang_info:'当你于出牌阶段内使用的牌结算完成后,若此牌未造成过伤害且此牌的目标包含其他角色且你本阶段内未因〖承赏〗获得过牌,则你可以从牌堆中获得一张与此牌花色点数相同的牌。', + chengshang_info_guozhan:'当你于出牌阶段内使用的牌结算完成后,若此牌未造成过伤害且此牌的目标包含其他角色且你本阶段内未因〖承赏〗获得过牌,则你可以从牌堆中获得一张与此牌花色点数相同的牌。', sp_default:"常规", sp_zhongdan:"忠胆英杰", diff --git a/character/sp2.js b/character/sp2.js index 7930f173e..6f0ce2c64 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, character:{ caosong:['male','wei',3,['cslilu','csyizheng']], - re_taoqian:['male','qun',3,['zhaohuo','reyixiang','yirang']], + re_taoqian:['male','qun',3,['zhaohuo','reyixiang','reyirang']], zhaozhong:['male','qun',6,['yangzhong','huangkong']], fanyufeng:['female','qun',3,['bazhan','jiaoying']], ol_lisu:['male','qun',3,['qiaoyan','xianzhu']], @@ -113,6 +113,41 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, skill:{ //陶谦和曹嵩 + reyirang:{ + audio:'yirang', + audioname:['re_taoqian'], + trigger:{player:'phaseUseBegin'}, + direct:true, + filter:function(event,player){ + if(!player.countCards('he',function(card){ + return get.type(card)!='basic'; + })){ + return false; + } + return game.hasPlayer(function(current){ + return current.maxHp>player.maxHp; + }); + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('reyirang'),function(card,player,target){ + return target.maxHp>player.maxHp; + }).set('ai',function(target){ + return (get.attitude(_status.event.player,target)-2)*target.maxHp; + }); + 'step 1' + if(result.bool){ + var cards=player.getCards('he',function(card){ + return get.type(card)!='basic'; + }); + var target=result.targets[0]; + player.logSkill('reyirang',target); + target.gain(cards,player,'give'); + player.gainMaxHp(target.maxHp-player.maxHp,true); + player.recover(cards.length); + } + } + }, cslilu:{ audio:2, trigger:{player:'phaseDrawBegin1'}, @@ -2674,7 +2709,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 1' if(result.bool){ var target=result.targets[0]; - player.logSkill('xinfu_wuniang',target); + player.logSkill('decadewuniang',target); player.line(target,'fire'); player.gainPlayerCard(target,'he',true); target.draw(); @@ -9892,7 +9927,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ duyu:'杜预', sanchen:'三陈', sanchen_info:'出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌。否则你本阶段内不能再发动〖三陈〗。', - sanchen_info_guozhan:'出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌且你获得技能〖破竹〗只到回合结束。否则你本阶段内不能再发动〖三陈〗。', + sanchen_info_guozhan:'出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌且你获得技能〖破竹〗直到回合结束。否则你本阶段内不能再发动〖三陈〗。', zhaotao:'诏讨', zhaotao_info:'觉醒技,准备阶段,若你本局游戏内发动〖三陈〗的次数大于2,则你减1点体力上限并获得〖破竹〗。', pozhu:'破竹', @@ -10002,10 +10037,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ reyixiang_info:'锁定技,其他角色于其出牌阶段内使用的第一张牌对你的伤害-1;其使用的第二张牌若为黑色,则对你无效。', caosong:'曹嵩', cslilu:'礼赂', - cslilu_info:'摸牌阶段,你可以放弃摸牌,改为将手牌摸至X张,然后将至少一张手牌交给一名其他角色。若你以此法给出的牌数大于你上次以此法给出的牌数,则你加1点体力上限并回复1点体力。', + cslilu_info:'摸牌阶段,你可以放弃摸牌,改为将手牌摸至X张(X为你的体力上限和5中的最小值),然后将至少一张手牌交给一名其他角色。若你以此法给出的牌数大于你上次以此法给出的牌数,则你加1点体力上限并回复1点体力。', csyizheng:'翊正', csyizheng2:'翊正', csyizheng_info:'结束阶段开始时,你可以选择一名其他角色。你的下回合开始前,当该角色造成伤害或回复体力时,若其体力上限小于你,则你减1点体力上限,且令此伤害值/回复值+1。', + reyirang:'揖让', + reyirang_info:'出牌阶段开始时,你可以将所有非基本牌交给一名体力上限大于你的其他角色,然后调整体力上限至与该角色相同并回复X点体力(X为你以此法交给其的牌数)。', sp_yingbian:'文德武备', sp_whlw:"文和乱武", diff --git a/character/xianjian.js b/character/xianjian.js index 60d2973ce..9ea21eef4 100644 --- a/character/xianjian.js +++ b/character/xianjian.js @@ -37,7 +37,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ pal_xiahoujinxuan:['male','shu',3,['xuanmo','danqing']], pal_muchanglan:['female','wu',3,['feixia','lueying']], - pal_xia:['female','shu',3,['zongyu','fanling']], + pal_xia:['female','shu',3,['xjzongyu','fanling']], pal_jiangcheng:['male','qun',4,['yanzhan','fenshi']], pal_yuejinzhao:['male','wei',4,['ywuhun','yingfeng']], @@ -1338,7 +1338,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ threaten:1.3 } }, - zongyu:{ + xjzongyu:{ enable:'phaseUse', usable:1, filterCard:{color:'black'}, @@ -4222,8 +4222,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yingfeng_info:'锁定技,每当你使用一张杀结算完毕后,你随机对一名不是此杀目标的敌方角色使用一张杀', fenglue:'风掠', fenglue_info:'你可以放弃出牌阶段,改为指定一名其他角色并选择任意张手牌,依次对该角色使用,若如此做,此阶段内该角色每受到一点伤害,你在结算后摸一张牌', - zongyu:'纵雨', - zongyu_info:'出牌阶段限一次,你可以弃置一张黑色手牌,视为使用一张飞镖,随机指定两名敌方角色为目标', + xjzongyu:'纵雨', + xjzongyu_info:'出牌阶段限一次,你可以弃置一张黑色手牌,视为使用一张飞镖,随机指定两名敌方角色为目标', fanling:'返灵', fanling_info:'锁定技,每当一名角色失去体力,你回复一点体力,每回合只能发动一次', huahu:'化狐', diff --git a/game/asset.js b/game/asset.js index 4d4daf16c..dfeed8355 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.109.3.4', + 'v1.9.109.3.5', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -3857,6 +3857,8 @@ window.noname_asset_list=[ 'image/character/re_taoqian.jpg', 'image/character/re_zhangchunhua.jpg', 'image/character/xin_handang.jpg', + 'image/character/zongyu.jpg', + 'image/character/key_ushio.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', diff --git a/game/game.js b/game/game.js index 3d66d9701..73e660873 100644 --- a/game/game.js +++ b/game/game.js @@ -6224,6 +6224,11 @@ init:true, frequent:true }, + qunxionggeju:{ + name:'群雄割据', + init:true, + frequent:true + }, duzhansanguo:{ name:'毒战三国', init:true, @@ -32877,6 +32882,7 @@ ui.playerids.style.display=''; } + if(mode[lib.config.mode].startBefore) mode[lib.config.mode].startBefore(); game.createEvent('game',false).setContent(mode[lib.config.mode].start); if(lib.mode[lib.config.mode]&&lib.mode[lib.config.mode].fromextension){ var startstr=mode[lib.config.mode].start.toString(); @@ -34900,18 +34906,6 @@ } else button.node.group.style.backgroundColor=get.translation('weiColor'); } - var group=get.is.double(button.link,true); - if(group&&group.length==2){ - var str=''; - for(var i of group){ - str+=get.translation(i); - } - button.node.group.innerHTML=str; - if(button.classList.contains('newstyle')){ - button.node.name.dataset.nature=get.groupnature(group[0]); - button.node.group.dataset.nature=get.groupnature(group[1]); - } - } }, div:function(){ var str,innerHTML,position,position2,style,divposition,listen; @@ -44026,16 +44020,9 @@ } node.link=item; if(type=='character'||type=='characterx'){ - if(type=='characterx'&&item.indexOf('gz_')==0&&lib.character[item]&&lib.character[item][4]){ - for(var ix of lib.character[item][4]){ - if(ix.indexOf('doublegroup:')==0){ - node._replaceButton=true; - node._changeGroup=ix.split(':').slice(1); - break; - } - } - } - else if(type=='characterx'&&lib.characterReplace[node._link]&&lib.characterReplace[node._link].length>1) node._replaceButton=true; + var double=get.is.double(node._link,true); + if(double) node._changeGroup=true; + if(type=='characterx'&&lib.characterReplace[node._link]&&lib.characterReplace[node._link].length>1) node._replaceButton=true; var func=function(node,item){ node.setBackground(item,'character'); if(node.node){ @@ -44067,6 +44054,10 @@ node.node.name.dataset.nature=get.groupnature(infoitem[1]); node.node.group.dataset.nature=get.groupnature(infoitem[1],'raw'); node.classList.add('newstyle'); + if(double&&double.length){ + node.node.name.dataset.nature=get.groupnature(double[0]); + node.node.group.dataset.nature=get.groupnature(double[double.length==2?1:0]); + } ui.create.div(node.node.hp); var textnode=ui.create.div('.text',get.numStr(infoitem[2]),node.node.hp); if(infoitem[2]==0){ @@ -44109,7 +44100,18 @@ lib.setIntro(node); } if(infoitem[1]){ - node.node.group.innerHTML='
'+get.translation(infoitem[1])+'
'; + if(double){ + var str='
'; + if(double.length==2){ + for(var i of double){ + str+=get.translation(i); + } + } + else str+=get.translation(double[0]); + str+='
'; + node.node.group.innerHTML=str; + } + else node.node.group.innerHTML='
'+get.translation(infoitem[1])+'
'; node.node.group.style.backgroundColor=get.translation(infoitem[1]+'Color'); } else{ @@ -44120,23 +44122,7 @@ node.node.replaceButton=intro; intro.innerHTML='切换'; intro._node=node; - if(node._changeGroup) intro.addEventListener(lib.config.touchscreen?'touchend':'click',function(){ - _status.tempNoButton=true; - var node=this._node; - var list=node._changeGroup; - var link=lib.character[node.link][1]; - var index=list.indexOf(link); - if(index==list.length-1) index=0; - else index++; - lib.character[node.link][1]=list[index]; - node.refresh(node,node.link); - game.uncheck(); - game.check(); - setTimeout(function(){ - delete _status.tempNoButton; - },200); - }); - else intro.addEventListener(lib.config.touchscreen?'touchend':'click',function(){ + intro.addEventListener(lib.config.touchscreen?'touchend':'click',function(){ _status.tempNoButton=true; var node=this._node; var list=lib.characterReplace[node._link]; diff --git a/game/update.js b/game/update.js index d9e79d4e4..daf4fe687 100644 --- a/game/update.js +++ b/game/update.js @@ -1,10 +1,10 @@ window.noname_update={ - version:'1.9.109.3.4', - update:'1.9.109.3.3', + version:'1.9.109.3.5', + update:'1.9.109.3.4', changeLog:[ - '界韩当、界张春华', - '曹嵩、陶谦', - '国战徐庶', + '冈崎汐', + '宗预', + '群雄割据', 'bug修复', ], files:[ @@ -21,25 +21,25 @@ window.noname_update={ //'card/yingbian.js', //'card/zhenfa.js', //'card/zhulu.js', - 'character/diy.js', + //'character/diy.js', //'character/extra.js', //'character/hearth.js', //'character/gujian.js', //'character/gwent.js', //'character/hearth.js', - 'character/mobile.js', + //'character/mobile.js', //'character/mtg.js', //'character/old.js', //'character/ow.js', 'character/rank.js', - 'character/refresh.js', - //'character/shenhua.js', + //'character/refresh.js', + 'character/shenhua.js', 'character/sp.js', 'character/sp2.js', //'character/tw.js', //'character/standard.js', //'character/swd.js', - //'character/xianjian.js', + 'character/xianjian.js', //'character/xinghuoliaoyuan.js', 'character/yijiang.js', //'character/yxs.js', @@ -48,7 +48,7 @@ window.noname_update={ //'layout/default/menu.css', //'layout/nova/layout.css', //'mode/boss.js', - //'mode/brawl.js', + 'mode/brawl.js', //'mode/chess.js', //'mode/doudizhu.js', 'mode/guozhan.js', diff --git a/image/character/key_ushio.jpg b/image/character/key_ushio.jpg new file mode 100644 index 000000000..e182b579b Binary files /dev/null and b/image/character/key_ushio.jpg differ diff --git a/image/character/zongyu.jpg b/image/character/zongyu.jpg new file mode 100644 index 000000000..95b2470fd Binary files /dev/null and b/image/character/zongyu.jpg differ diff --git a/mode/brawl.js b/mode/brawl.js index a5c09ead5..5ba00bf17 100644 --- a/mode/brawl.js +++ b/mode/brawl.js @@ -1144,6 +1144,377 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, }, }, + qunxionggeju:{ + name:'群雄割据', + mode:'guozhan', + intro:[ + '开放不同势力组合,以优先亮出的武将牌作为自己的势力,双势力武将则使用列表的第一个势力', + ], + showcase:function(init){ + var node=this; + var list=[ + ['re_yuanshao','re_lidian'], + ['zhangliao','sunquan'], + ['xin_fazheng','lvfan'], + ['sunjian','lvbu'], + ['jin_simashi','re_weiyan'], + ['guanyu','sunce'], + ['zhenji','sp_zhangjiao'], + ['guojia','sp_zhugeliang'], + ]; + list.randomSort(); + var func=function(){ + var card=ui.create.player(null,true); + var name=list.shift(); + card.init(name[0],name[1]); + card.node.marks.remove(); + card.node.count.remove(); + card.node.hp.remove(); + card.classList.remove('unseen'); + node.nodes.push(card); + card.style.position='absolute'; + card.style.zIndex=2; + card.style.transition='all 2s'; + var rand1=Math.round(Math.random()*100); + var rand2=Math.round(Math.random()*100); + var rand3=Math.round(Math.random()*40)-20; + card.style.left='calc('+rand1+'% - '+(rand1*1.5)+'px)'; + card.style.top='calc('+rand2+'% - '+(rand2*1.8)+'px)'; + card.style.transform='scale(0.8) rotate('+rand3+'deg)'; + node.appendChild(card); + ui.refresh(card); + }; + + var list2=['feilongduofeng','taipingyaoshu','dinglanyemingzhu']; + var func2=function(){ + var card=game.createCard(list2.shift(),'noclick'); + node.nodes.push(card); + card.style.position='absolute'; + card.style.zIndex=2; + card.style.transition='all 2s'; + var rand1=Math.round(Math.random()*100); + var rand2=Math.round(Math.random()*100); + var rand3=Math.round(Math.random()*40)-20; + card.style.left='calc('+rand1+'% - '+rand1+'px)'; + card.style.top='calc('+rand2+'% - '+rand2+'px)'; + card.style.transform='rotate('+rand3+'deg)'; + node.appendChild(card); + ui.refresh(card); + }; + if(init){ + node.nodes=[]; + } + else{ + while(node.nodes.length){ + node.nodes.shift().remove(); + } + } + for(var i=0;i<5;i++){ + func(); + } + for(var i=0;i<3;i++){ + func2(); + func(); + } + }, + init:function(){}, + content:{ + chooseCharacterBefore:function(){ + game.chooseCharacter=function(){ + var next=game.createEvent('chooseCharacter',false); + next.showConfig=true; + next.addPlayer=true; + next.ai=function(player,list,back){ + var mainx=list[0]; + var vicex=list[1]; + if(get.guozhanReverse(mainx,vicex)){ + mainx=list[1]; + vicex=list[0]; + } + player.init(mainx,vicex,false); + if(back){ + list.remove(player.name1); + list.remove(player.name2); + for(var i=0;i'; + td.link=i-1; + seats.appendChild(td); + td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){ + if(_status.dragged) return; + if(_status.justdragged) return; + if(_status.cheat_seat){ + _status.cheat_seat.classList.remove('bluebg'); + if(_status.cheat_seat==this){ + delete _status.cheat_seat; + return; + } + } + this.classList.add('bluebg'); + _status.cheat_seat=this; + }); + } + dialog.content.appendChild(seats); + if(game.me==game.zhu){ + seats.previousSibling.style.display='none'; + seats.style.display='none'; + } + + dialog.add(ui.create.div('.placeholder.add-setting')); + dialog.add(ui.create.div('.placeholder.add-setting')); + if(get.is.phoneLayout()) dialog.add(ui.create.div('.placeholder.add-setting')); + }; + var removeSetting=function(){ + var dialog=_status.event.dialog; + if(dialog){ + dialog.style.height=''; + delete dialog._scrollset; + var list=Array.from(dialog.querySelectorAll('.add-setting')); + while(list.length){ + list.shift().remove(); + } + ui.update(); + } + }; + event.addSetting=addSetting; + event.removeSetting=removeSetting; + + var chosen=lib.config.continue_name||[]; + game.saveConfig('continue_name'); + event.chosen=chosen; + + var i; + event.list=[]; + for(i in lib.character){ + if(i.indexOf('gz_shibing')==0) continue; + if(chosen.contains(i)) continue; + if(lib.filter.characterDisabled(i)) continue; + if(get.config('onlyguozhan')){ + if(!lib.characterPack.mode_guozhan[i]) continue; + if(get.is.jun(i)) continue; + } + if(lib.character[i][4].contains('hiddenSkill')) continue; + if(lib.character[i][2]==3||lib.character[i][2]==4||lib.character[i][2]==5) + event.list.push(i); + } + _status.characterlist=event.list.slice(0); + _status.yeidentity=[]; + event.list.randomSort(); + // var list=event.list.splice(0,parseInt(get.config('choice_num'))); + var list=event.list.randomRemove(parseInt(get.config('choice_num'))); + if(_status.auto){ + event.ai(game.me,list); + lib.init.onfree(); + } + else if(chosen.length){ + game.me.init(chosen[0],chosen[1],false); + lib.init.onfree(); + } + else{ + var dialog=ui.create.dialog('选择角色','hidden',[list,'character']); + if(get.config('change_identity')){ + addSetting(dialog); + } + var next=game.me.chooseButton(dialog,true,2).set('onfree',true); + next.filterButton=function(button){ + if(ui.dialog.buttons.length<=10){ + for(var i=0;i0.5?0:1;}).prompt='选择并展示一张武将牌,然后执行军令'; + if(event.showCharacter){ + var list=[]; + if(lib.character[event.current.name1][1]==player.identity) list.push('主将'); + if(lib.character[event.current.name2][1]==player.identity) list.push('副将'); + if(list.length>1) event.current.chooseControl(['主将','副将']).set('ai',function(){ + if(player.name1=='gz_fazheng') return 0; + if(player.name2=='gz_fazheng') return 1; + return Math.random()>0.5?0:1; + }).prompt='选择并展示一张武将牌,然后执行军令'; + else event._result={index:list[0]=='主将'?0:1}; + } } 'step 4' if(!event.list) event.list=[player]; @@ -5693,7 +5710,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ trigger:{player:'phaseZhunbeiBegin'}, forced:true, filter:function(event,player){ - return player.storage.huangjintianbingfu.length==0; + return player.storage.huangjintianbingfu.length==0&&get.population('qun')>0; }, content:function(){ var cards=get.cards(get.population('qun')); @@ -5833,6 +5850,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ // return num>event.num; // }, audio:2, + filter:function(event,player){ + return get.population('qun')>0; + }, content:function(){ 'step 0' var num=get.population('qun'); @@ -7162,7 +7182,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ 'step 0' player.storage._mingzhi3=true; var name=player.name1; - if(!player.isUnseen(0)||name.indexOf('gz_')!=0||!lib.junList.contains(name.slice(3))||!lib.character['gz_jun_'+name.slice(3)]) event.finish(); + if(!player.isUnseen(0)||name.indexOf('gz_')!=0 + ||!lib.junList.contains(name.slice(3))||!lib.character['gz_jun_'+name.slice(3)] + ||(player.identity!='ye'&&player.identity!='unknown'&&lib.character[player.name1][1]!=player.identity)) event.finish(); else{ player.chooseBool("是否将主武将牌替换为君主武将?").ai=function(){return true}; } @@ -7262,6 +7284,47 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } } }, + ushio_huanxin:{ + trigger:{ + player:['damageEnd','useCard'], + source:'damageSource', + }, + frequent:true, + filter:function(event,player,name){ + if(name=='useCard') return get.type(event.card)=='equip'; + if(name=='damageEnd') return true; + return event.getParent().name=='sha'; + }, + content:function(){ + player.judge().set('callback',function(){ + var card=event.judgeResult.card; + if(card&&get.position(card,true)=='o'){ + player.gain(card,'gain2'); + player.chooseToDiscard(true,'he'); + } + }); + }, + }, + ushio_xilv:{ + trigger:{player:'judgeEnd'}, + forced:true, + content:function(){ + player.addTempSkill('ushio_xilv2',{player:'phaseJieshu'}); + player.addMark('ushio_xilv2',1,false); + }, + }, + ushio_xilv2:{ + onremove:true, + charlotte:true, + mod:{ + maxHandcard:function(player,num){ + return num+player.countMark('ushio_xilv2'); + } + }, + intro:{ + content:'手牌上限+#', + }, + }, }, game:{ getCharacterChoice:function(list,num){ @@ -7683,7 +7746,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ lib.init.onfree(); } else{ - var dialog=ui.create.dialog('选择角色','hidden',[list,'characterx']); + var dialog=ui.create.dialog('选择角色','hidden',[list,'character']); if(!_status.brawl||!_status.brawl.noAddSetting){ if(get.config('change_identity')){ addSetting(dialog); @@ -7713,6 +7776,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ return false; }; if(get.is.double(ui.selected.buttons[0].link)) return false; + if(get.is.double(button.link)) return get.is.double(button.link,true).contains(lib.character[ui.selected.buttons[0].link][1]); return (lib.character[button.link][1]==lib.character[ui.selected.buttons[0].link][1]); }; next.switchToAuto=function(){ @@ -7720,7 +7784,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ ui.arena.classList.remove('selecting'); }; var createCharacterDialog=function(){ - event.dialogxx=ui.create.characterDialog('heightset','characterx',function(i){ + event.dialogxx=ui.create.characterDialog('heightset',function(i){ if(i.indexOf('gz_shibing')==0) return true; if(get.config('onlyguozhan')){ if(!lib.characterPack.mode_guozhan[i]) return true; @@ -7790,7 +7854,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ list=game.getCharacterChoice(event.list,parseInt(get.config('choice_num'))); var buttons=ui.create.div('.buttons'); var node=_status.event.dialog.buttons[0].parentNode; - _status.event.dialog.buttons=ui.create.buttons(list,'characterx',buttons); + _status.event.dialog.buttons=ui.create.buttons(list,'character',buttons); _status.event.dialog.content.insertBefore(buttons,node); buttons.animate('start'); node.remove(); @@ -7925,11 +7989,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }; if(!lib.character[button.link]) return false; if(get.is.double(ui.selected.buttons[0].link)) return false; + if(get.is.double(button.link)) return get.is.double(button.link,true).contains(lib.character[ui.selected.buttons[0].link][1]); return (lib.character[button.link][1]==lib.character[ui.selected.buttons[0].link][1]); }; list.randomSort(); for(var i=0;i