diff --git a/card/guozhan.js b/card/guozhan.js index eb3d536d5..df898de89 100644 --- a/card/guozhan.js +++ b/card/guozhan.js @@ -465,6 +465,15 @@ game.import('card',function(lib,game,ui,get,ai,_status){ event.finish(); }, ai:{ + canLink:function(player,target,card){ + if(player.hasSkill('jueqing')||target.hasSkill('gangzhi')||target.hasSkill('gangzhi')) return false; + var es=target.countCards('e'); + if(!es) return true; + if(target.hp>=3&&es>=2){ + return true; + } + return false; + }, order:6, value:4, useful:2, @@ -486,8 +495,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){ return 0; }, result:{ - target:function(player,target){ - return -1-target.countCards('e'); + target:function(player,target,card,isLink){ + if(isLink) return -1.5; + var es=target.getCards('e'); + if(!es.length) return -1.5; + var val=0; + for(var i of es) val+=get.value(i,target); + return -Math.min(1.5,val/5); } } } diff --git a/character/diy.js b/character/diy.js index 63aeb3ca6..406687971 100755 --- a/character/diy.js +++ b/character/diy.js @@ -75,6 +75,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']], key_kamome:['female','key',3,['kamome_yangfan','kamome_huanmeng','kamome_jieban']], key_nao:['female','key',3,['nao_duyin','nao_wanxin','nao_shouqing']], + key_yuuki:['female','key',3,['yuuki_yicha']], + key_kyouko:['female','key',3,['kyouko_rongzhu','kyouko_gongmian']], ns_huangchengyan:['male','shu',3,['nslongyue','nszhenyin']], ns_sunchensunjun:['male','wu',5,['nsxianhai','nsxingchu']], @@ -184,7 +186,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ diy:{ diy_yijiang:["key_kud","key_misuzu","key_kamome","key_nao", "ns_huangchengyan","ns_sunchensunjun","ns_yuanxi","ns_caoshuang"], - diy_yijiang2:[ + diy_yijiang2:["key_yuuki","key_kyouko", "ns_chentai","ns_huangwudie","ns_sunyi","ns_zhangning","ns_yanghu"], diy_tieba:["ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua","ns_luyusheng"], diy_fakenews:["diy_wenyang","ns_zhangwei","ns_caimao","ns_chengpu"], @@ -276,6 +278,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_misuzu:'#b长发及腰黑长直', key_kamome:'#b仿生纱', key_nao:'#b潮鸣', + key_yuuki:'#b4399司命', + key_kyouko:'#g阿阿啊687', ns_huangchengyan:'#g竹邀月', ns_sunchensunjun:'#gVenusjeu', @@ -447,6 +451,378 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_lucia:['key_shizuru'], }, skill:{ + kyouko_rongzhu:{ + trigger:{global:'gainEnd'}, + filter:function(event,player){ + if(player==event.player||event.getParent().name=='kyouko_rongzhu') return false; + var evt=event.getl(player); + return evt&&evt.cards2&&evt.cards2.length>0; + }, + logTarget:'player', + check:function(event,player){ + return get.attitude(player,event.player)>0; + }, + content:function(){ + 'step 0' + player.draw(); + 'step 1' + var target=trigger.player; + if(player.countCards('he')>0&&target.isIn()){ + player.chooseCard('he',true,'将一张牌交给'+get.translation(target)); + } + else event.finish(); + 'step 2' + if(result.bool){ + trigger.player.gain(result.cards,player,'giveAuto'); + var target=_status.currentPhase; + var name; + if(target==player){ + name='kyouko_rongzhu_me'; + player.addTempSkill(name); + player.addMark(name,1,false); + } + else if(target==trigger.player){ + name='kyouko_rongzhu_notme'; + player.addTempSkill(name); + player.addMark(name,1,false); + } + } + }, + subSkill:{ + me:{ + mod:{ + maxHandcard:function(player,num){ + return num+player.countMark('kyouko_rongzhu_me'); + }, + }, + intro:{content:'手牌上限+#'}, + onremove:true, + }, + notme:{ + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num+player.countMark('kyouko_rongzhu_notme'); + }, + }, + intro:{content:'使用杀的次数上限+#'}, + onremove:true, + }, + }, + }, + kyouko_gongmian:{ + enable:'phaseUse', + prompt:'出牌阶段,你可以选择一名未以此法选择过的角色,若其手牌:大于你,你获得其一张牌,然后交给其一张牌;小于你,其交给你一张牌,然后你交给其一张牌;等于你,你与其各摸一张牌。', + filter:function(event,player){ + return game.hasPlayer(function(current){ + return current!=player&&lib.skill.kyouko_gongmian.filterTarget(null,player,current); + }); + }, + filterTarget:function(card,kyouko,hina){ + if(kyouko==hina||kyouko.getStorage('kyouko_gongmian').contains(hina)) return false; + var hs=hina.countCards('he'); + if(hs==0) return kyouko.countCards('h')==0; + return true; + }, + content:function(){ + 'step 0' + player.markAuto('kyouko_gongmian',targets); + var hs=player.countCards('h'),ts=target.countCards('h'); + player.getHistory('custom').push({kyouko_gongmian:true}); + if(hs>ts){ + event.utype=1; + target.chooseCard('he',true,'交给'+get.translation(player)+'一张牌'); + } + else if(hs==ts){ + game.asyncDraw([player,target]); + event.utype=2; + } + else{ + event.utype=3; + player.gainPlayerCard(target,true,'he'); + } + 'step 1' + if(event.utype==2){ + game.delayx(); + event.finish(); + } + else if(!result.bool) event.finish(); + else if(event.utype==1) player.gain(result.cards,target,'giveAuto'); + 'step 2' + if(player.countCards('he')>0){ + player.chooseCard('he',true,'交给'+get.translation(target)+'一张牌'); + } + else event.finish(); + 'step 3' + if(result.bool) target.gain(result.cards,player,'giveAuto'); + }, + intro:{ + content:'已与$共勉', + }, + group:['kyouko_gongmian_use','kyouko_gongmian_discard'], + ai:{ + order:6, + result:{ + target:function(player,target){ + if(player.getHistory('custom',function(evt){ + return evt.kyouko_gongmian==true; + }).length) return 0; + return 1; + }, + }, + }, + }, + kyouko_gongmian_use:{ + trigger:{player:'phaseUseEnd'}, + direct:true, + filter:function(event,player){ + return player.getHistory('custom',function(evt){ + return evt.kyouko_gongmian==true; + }).length>0&&game.hasPlayer(function(current){ + return current!=player&¤t.countGainableCards(player,'hej')>0; + }); + }, + content:function(){ + 'step 0' + event.num=player.getHistory('custom',function(evt){ + return evt.kyouko_gongmian==true; + }).length; + player.chooseTarget(get.prompt('kyouko_gongmian'),'获得一名其他角色的至多'+get.cnNumber(event.num)+'张牌,然后交给其等量的牌',function(card,player,target){ + return target!=player&&target.countGainableCards(player,'hej')>0; + }).set('ai',function(target){ + var player=_status.event.player,att=get.attitude(player,target); + if(att>0) return att; + var he=player.getCards('he'); + if(target.countCards('he',function(card){ + return get.value(card,target)>7; + })&&he.length>0) return -att+5-Math.min.apply(Math,he.map(function(card){ + return get.value(card,player); + })); + return 0; + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('kyouko_gongmian',target); + player.gainPlayerCard(target,'hej',true,[1,num]); + } + else event.finish(); + 'step 2' + if(target.isIn()&&result.bool&&result.cards&&result.cards.length&&player.countCards('he')>0){ + var num=result.cards.length,hs=player.getCards('he'); + if(hs.length<=num) event._result={bool:true,cards:hs}; + else player.chooseCard('he',true,num,'交给'+get.translation(target)+get.cnNumber(num)+'张牌'); + } + else event.finish(); + 'step 3' + if(result.bool&&result.cards&&result.cards.length){ + target.gain(result.cards,player,'giveAuto') + } + }, + }, + kyouko_gongmian_discard:{ + trigger:{player:'phaseDiscardBegin'}, + direct:true, + filter:function(event,player){ + var hs=player.countCards('h'); + return hs>0&&player.getHistory('custom',function(evt){ + return evt.kyouko_gongmian==true; + }).length>=player.hp&&game.hasPlayer(function(current){ + return current!=player&¤t.countCards('h')0) player.gain(hs,target,'giveAuto','bySelf'); + } + else event.finish(); + 'step 2' + if(target.isIn()&&player.countCards('h')>0){ + var hs=player.getCards('h'),num=Math.ceil(hs.length/2); + if(hs.length<=num) event._result={bool:true,cards:hs}; + else player.chooseCard('he',true,num,'交给'+get.translation(target)+get.cnNumber(num)+'张牌'); + } + else event.finish(); + 'step 3' + if(result.bool&&result.cards&&result.cards.length){ + target.gain(result.cards,player,'giveAuto') + } + }, + }, + yuuki_yicha:{ + trigger:{player:'phaseUseBegin'}, + frequent:true, + createDialog:function(id){ + var dialog=ui.create.dialog('hidden'); + (dialog.textPrompt=dialog.add('异插')).style.textAlign='center'; + dialog.cards=[]; + dialog.rawButtons=[]; + dialog.videoId=id; + var cards=[]; + for(var i=0;i<3;i++){ + var card=ui.create.card(null,null,true); + card.pos=i; + card.pos_x=i; + card.pos_y=0; + cards.push(card); + dialog.rawButtons.push(card); + } + dialog.add(cards); + cards=[]; + for(var i=0;i<3;i++){ + var card=ui.create.card(null,null,true); + card.pos=i+3; + card.pos_x=i; + card.pos_y=1; + cards.push(card); + dialog.rawButtons.push(card); + } + dialog.add(cards); + for(var i of dialog.buttons){ + i.pos_x=i.link.pos_x; + i.pos_y=i.link.pos_y; + i.link=i.link.pos; + } + dialog.open(); + }, + addCard:function(card,id,pos){ + var dialog=get.idDialog(id); + if(!dialog) return; + for(var i=0;i0){ + var color=get.color(list[0],false); + if(list.length>1){ + for(var i=1;i0) event.goto(3); + 'step 6' + game.broadcastAll('closeDialog',event.videoId); + player.chooseTarget('令一名角色获得'+get.translation(cards),true).set('ai',function(target){ + return get.attitude(_status.event.player,target); + }); + 'step 7' + if(result.bool&&result.targets&&result.targets.length){ + var target=result.targets[0]; + player.line(target,'green'); + target.gain(cards,'gain2'); + } + }, + }, kotomi_qinji:{ trigger:{player:'phaseUseBegin'}, filter:function(event,player){ @@ -14425,6 +14801,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ nao_shouqing2:'守情', nao_shouqing3:'守情', nao_shouqing_info:'其他角色的出牌阶段内可以对你使用【桃】。若如此做,其摸一张牌且本局游戏内的手牌上限+1。', + key_yuuki:'冰室忧希', + yuuki_yicha:'异插', + yuuki_yicha_info:'出牌阶段开始时,你可依次进行两次判定并将判定牌依次置入两行三列方阵的两个随机位置中。然后你依次进行四次判定,每次可将当前判定牌置入空方格,且须与相邻方格的牌颜色均不同。若如此做,你令一名角色获得方阵内的所有牌。', + key_kyouko:'伊座并杏子', + kyouko_rongzhu:'容助', + kyouko_rongzhu_info:'其他角色不因此技能而获得你的牌后,你可摸一张牌,然后交给其一张牌。若其是当前回合角色,则其本回合使用【杀】的次数上限+1;若你是当前回合角色,则你本回合的手牌上限+1。', + kyouko_gongmian:'共勉', + kyouko_gongmian_use:'共勉', + kyouko_gongmian_exchange:'共勉', + kyouko_gongmian_info:'①出牌阶段,你可以选择一名未以此法选择过的角色,若其手牌:大于你,你获得其一张牌,然后交给其一张牌;小于你,其交给你一张牌,然后你交给其一张牌;等于你,你与其各摸一张牌。②出牌阶段结束时,你可以获得一名其他角色区域内的至多X张牌,然后交给其等量的牌。③弃牌阶段开始时,若X不小于你的体力值,你可以获得一名手牌数少于你的角色的所有手牌,然后将手牌数的一半(向上取整)交给该角色。(X为你本回合内发动过〖共勉①〗的次数)', noname:"小无", noname_zhuyuan:"祝愿", diff --git a/character/mobile.js b/character/mobile.js index fba71fd66..d5452f495 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -1431,13 +1431,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } if(num%5==0){ var card=get.cardPile2(function(card){ - return card.name=='tao'||card.name=='jiu'; + return ['tao','jiu','zong','xionghuangjiu'].contains(card.name); }); if(card) cards.push(card); } if(num%8==0){ var card=get.cardPile2(function(card){ - return card.name=='juedou'||card.name=='wuzhong'; + return ['juedou','wuzhong','zengbin','sadouchengbing','dongzhuxianji','tongzhougongji'].contains(card.name); }); if(card) cards.push(card); } @@ -8544,7 +8544,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_handang:'手杀韩当', luotong:'骆统', qinzheng:'勤政', - qinzheng_info:'锁定技,当你使用或打出牌时,若你本局游戏内使用或打出过的牌数和:为3的倍数,你从牌堆中获得一张【杀】或【闪】;为5的倍数,你从牌堆中获得一张【桃】或【酒】;为8的倍数,你从牌堆中获得一张【决斗】或【无中生有】。', + qinzheng_info:'锁定技,当你使用或打出牌时,若你本局游戏内使用或打出过的牌数和:为3的倍数,你从牌堆中获得一张【杀】或【闪】;为5的倍数,你从牌堆中获得一张【桃】或【酒】;为8的倍数,你从牌堆中获得一张【决斗】或【无中生有】(可获得对应的衍生替换牌)。', sp_duyu:'SP杜预', spwuku:'武库', spwuku_info:'锁定技,当有角色使用装备牌时,若你的“武库”数小于3,则你获得一个“武库”。', diff --git a/character/rank.js b/character/rank.js index 954dc44e1..b44f1fe25 100644 --- a/character/rank.js +++ b/character/rank.js @@ -101,6 +101,7 @@ window.noname_character_rank={ 'key_shiina', 'key_kud', 'key_yukito', + 'key_yuuki', ], a:[ 'diy_zaozhirenjun', @@ -672,6 +673,7 @@ window.noname_character_rank={ 'wujing', 'nanhualaoxian', 'ns_sunyi', + 'key_kyouko', ], b:[ 'diy_feishi', @@ -999,6 +1001,7 @@ window.noname_character_rank={ 'sp_jiben', 'sp_fuwan', 're_chengpu', + 're_niujin', ], c:[ 'xiahoudun', @@ -1371,6 +1374,8 @@ window.noname_character_rank={ 'key_chihaya', 'key_yukito', 'key_kotomi', + 'key_yuuki', + 'key_kyouko', 'kaisa', ], rare:[ diff --git a/character/refresh.js b/character/refresh.js index 284717279..992db2f5d 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -208,6 +208,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{global:['turnOverAfter','linkAfter']}, logTarget:'player', + check:function(event,player){ + return get.attitude(player,event.player)>0; + }, content:function(){ trigger.player.draw(); }, diff --git a/character/shenhua.js b/character/shenhua.js index 2ae452301..c6ff64c8b 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -2070,7 +2070,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ enable:'phaseUse', usable:1, filter:function(event,player){ - return player.countCards('h')>0&&player.storage.nzry_shenshi!=true; + return player.countCards('he')>0&&player.storage.nzry_shenshi!=true; }, discard:false, line:true, diff --git a/character/sp.js b/character/sp.js index 8012ca797..6b372d445 100755 --- a/character/sp.js +++ b/character/sp.js @@ -12,7 +12,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'], sp_guozhan:["zangba","shamoke","ganfuren","yuejin","hetaihou","dingfeng","panfeng","jianggan"], sp_guozhan2:["mateng","tianfeng","chendong","sp_dongzhuo","jiangfei","jiangqing","kongrong","liqueguosi","lvfan","cuimao","jiling","zhangren","zoushi","huaxin","luyusheng","zongyu"], - sp_single:["niujin"], + //sp_single:["niujin"], sp_others:["hanba","caiyang"], }, }, @@ -45,7 +45,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yuantanyuanshang:['male','qun',4,['neifa']], xujing:['male','shu',3,['yuxu','xjshijian']], - niujin:['male','wei',4,['cuorui','liewei']], + //niujin:['male','wei',4,['cuorui','liewei']], jianggan:["male","wei",3,["weicheng","daoshu"]], caoying:["female","wei",4,["xinfu_lingren","xinfu_fujian"],[]], @@ -3169,7 +3169,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{global:'phaseJieshuBegin'}, filter:function(event,player){ return event.player!=player&&(event.player.hp>player.hp||event.player.getHistory('useCard',function(card){ - return card.name=='sha'; + return card.card.name=='sha'; }).length>0); }, direct:true, @@ -9497,7 +9497,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ result:{ target:function(player,target){ if(target.countCards('j',function(card){ - return get.value(target,{ + return get.effect(target,{ name:card.viewAs||card.name, cards:[card], },target,target)<0; @@ -9511,14 +9511,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'phaseJudgeBegin'}, forced:true, filter:function(event,player){ - return player.countCards('j')>0; + return player.countCards('j')>0&&player.hasJudge('yanxiao_card'); }, content:function(){ player.gain(player.getCards('j'),'gain2'); }, ai:{ effect:{ - target:function(card){ + target:function(card,player,target){ if(get.type(card)=='delay'&&target.hasJudge('yanxiao_card')) return [0,0,0,0.1]; } } diff --git a/character/sp2.js b/character/sp2.js index 0dd12a196..54c829488 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ + re_niujin:['male','wei',4,['recuorui','reliewei']], zhangmiao:['male','qun',4,['mouni','zongfan']], liangxing:['male','qun',4,['lulve','lxzhuixi'],['unseen']], ruanyu:['male','wei',3,['xingzuo','miaoxian']], @@ -96,7 +97,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_huangjin:['liuhong','zhujun','re_hejin','re_hansui','liubian'], sp_fadong:['ol_dingyuan','wangrong','re_quyi','hanfu'], sp_xuzhou:['re_taoqian','caosong'], - sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_yujin','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','zhaozhong','ruanyu','liangxing','zhangmiao'], + sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_yujin','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','zhaozhong','ruanyu','liangxing','zhangmiao','re_niujin'], sp_mini:["mini_sunquan","mini_zuoci","mini_jiangwei","mini_diaochan","mini_zhangchunhua"], sp_luanwu:["ns_lijue","ns_zhangji","ns_fanchou"], sp_yongjian:["ns_chendao","yj_caoang"], @@ -104,6 +105,51 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, skill:{ + //牛金 + recuorui:{ + audio:'cuorui', + trigger:{player:'phaseBegin'}, + skillAnimation:true, + animationColor:'thunder', + filter:function(event,player){ + return player.phaseNumber==1&&player.hp>0&&game.hasPlayer(function(current){ + return current!=player&¤t.countGainableCards(player,'h')>0; + }) + }, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget([1,player.hp],get.prompt('recuorui'),'获得至多'+get.cnNumber(player.hp)+'名角色的各一张手牌',function(card,player,current){ + return current!=player&¤t.countGainableCards(player,'h')>0; + }).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(target.hasSkill('tuntian')) return att/10; + return 1-att; + }); + 'step 1' + if(result.bool){ + var targets=result.targets; + player.logSkill('recuorui',targets); + targets.sortBySeat(); + player.gainMultiple(targets); + } + }, + }, + reliewei:{ + audio:'liewei', + trigger:{global:'dying'}, + frequent:true, + filter:function(event,player){ + var evt=event.getParent(); + return evt&&evt.name=='damage'&&evt.source==player&&player.getHistory('custom',function(evt){ + return evt&&evt.reliewei==true; + }).length0; - },'兴作:是否令一他角色将其手牌与牌堆底的三张牌替换?').set('ai',function(target){ + },'兴作:是否令一名角色将其手牌与牌堆底的三张牌替换?').set('ai',function(target){ var player=_status.event.player,att=get.attitude(player,target),hs=target.getCards('h'),num=hs.length; var getv=function(list,target){ var num=0; @@ -8954,6 +9000,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zongfan_info:'觉醒技,结束阶段,若你本回合内因〖谋逆〗使用过【杀】且未跳过本回合的出牌阶段,则你将任意张牌交给一名其他角色,然后加X点体力上限并回复X点体力(X为你以此法给出的牌数)。最后失去〖谋逆〗并获得〖战孤〗。', zhangu:'战孤', zhangu_info:'锁定技,准备阶段,若你的体力上限大于1且没有手牌/装备区内没有牌,则你减1点体力上限,然后从牌堆中获得三张类型不同的牌。', + re_niujin:'牛金', + recuorui:'摧锐', + recuorui_info:'你的第一个回合开始时,你可以依次获得至多X名角色的各一张手牌(X为你的体力值)。', + reliewei:'裂围', + reliewei_info:'每回合限X次(X为你的体力值),当有其他角色因你造成伤害而进入濒死状态时,你可以摸一张牌。', sp_whlw:"文和乱武", sp_zlzy:"逐鹿中原", diff --git a/character/yingbian.js b/character/yingbian.js index 54187dc84..82d6f72b2 100644 --- a/character/yingbian.js +++ b/character/yingbian.js @@ -1810,6 +1810,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, + g_hidden_ai:{ + charlotte:true, + ai:{ + threaten:function(player,target){ + if(get.mode()!='guozhan'&&target.isUnseen(2)) return 0.0001; + return 1; + }, + }, + }, }, card:{ cheliji_sichengliangyu:{ diff --git a/game/asset.js b/game/asset.js index 14ebd89f0..1f0d3fb80 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.110.7', + 'v1.9.110.7.1', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -4061,6 +4061,10 @@ window.noname_asset_list=[ 'image/character/ns_zhangning.jpg', 'image/character/ns_yanghu.jpg', 'image/character/re_chenqun.jpg', + 'image/character/gz_miheng.jpg', + 'image/character/key_kyouko.jpg', + 'image/character/key_yuuki.jpg', + 'image/character/re_niujin.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', diff --git a/game/config.js b/game/config.js index 84f102979..d93fb08c2 100644 --- a/game/config.js +++ b/game/config.js @@ -1,4 +1,9 @@ window.config={ + extension_sources:{ + Coding:'https://nakamurayuri.coding.net/p/noname-extension/d/noname-extension/git/raw/master/', + GitHub:'https://raw.githubusercontent.com/libccy/noname-extension/master/', + }, + extension_source:'Coding', forbidai:['ns_liuzhang','yuji','re_yuji'], forbidai_user:[], forbidall:[], diff --git a/game/game.js b/game/game.js index 826b92375..5f743e203 100644 --- a/game/game.js +++ b/game/game.js @@ -538,6 +538,100 @@ lib.updateURL=lib.updateURLS[item]||lib.updateURLS.coding; }, }, + extension_source:{ + name:'获取扩展地址', + init:'Coding', + unfrequent:true, + item:{}, + intro:function(){ + return '获取在线扩展时的地址。当前地址:
'+lib.config.extension_sources[lib.config.extension_source]; + }, + onclick:function(item){ + game.saveConfig('extension_source',item); + }, + }, + extension_create:{ + name:'添加获取扩展地址', + clear:true, + unfrequent:true, + onclick:function(){ + game.prompt('请输入地址名称',function(str){ + if(str){ + var map=lib.config.extension_sources; + game.prompt('请输入'+str+'的地址',function(str2){ + if(str2){ + delete map[str]; + map[str]=str2; + game.saveConfig('extension_sources',map); + game.saveConfig('extension_source',str); + var nodexx=ui.extension_source; + nodexx.updateInner(); + var nodeyy=nodexx._link.menu; + var nodezz=nodexx._link.config; + for(var i=0;i',importExtension); - var extensionURL=lib.updateURL.replace(/noname/g,'noname-extension')+'/master/'; + var extensionURL; + var source=lib.config.extension_sources,index=lib.config.extension_source; + if(source&&source[index]) extensionURL=source[index]; + else extensionURL=lib.updateURL.replace(/noname/g,'noname-extension')+'/master/'; var reloadnode=ui.create.div('.config.toggle.pointerdiv','重新启动',page,game.reload); reloadnode.style.display='none'; diff --git a/game/update.js b/game/update.js index 5217ca555..5982c8dba 100644 --- a/game/update.js +++ b/game/update.js @@ -1,9 +1,10 @@ window.noname_update={ - version:'1.9.110.7', - update:'1.9.110.6.1', + version:'1.9.110.7.1', + update:'1.9.110.7', changeLog:[ - '界陈群', - '国战势力锦囊', + '冰室忧希、伊座并杏子', + '自定义在线扩展源', + '牛金', 'bug修复', ], files:[ @@ -32,7 +33,7 @@ window.noname_update={ //'character/ow.js', 'character/rank.js', 'character/refresh.js', - //'character/shenhua.js', + 'character/shenhua.js', 'character/sp.js', 'character/sp2.js', //'character/tw.js', @@ -41,7 +42,7 @@ window.noname_update={ //'character/xianjian.js', //'character/xinghuoliaoyuan.js', 'character/yingbian.js', - 'character/yijiang.js', + //'character/yijiang.js', //'character/yxs.js', //'extension/boss/extension.js', //'layout/default/layout.css', @@ -60,7 +61,7 @@ window.noname_update={ 'game/game.js', //'game/keyWords.js', //'game/NoSleep.js', - //'game/config.js', + 'game/config.js', //'game/package.js', //'game/asset.js', //'game/source.js', diff --git a/image/character/gz_miheng.jpg b/image/character/gz_miheng.jpg new file mode 100644 index 000000000..2da7dfdd1 Binary files /dev/null and b/image/character/gz_miheng.jpg differ diff --git a/image/character/key_kyouko.jpg b/image/character/key_kyouko.jpg new file mode 100644 index 000000000..4d0352220 Binary files /dev/null and b/image/character/key_kyouko.jpg differ diff --git a/image/character/key_yuuki.jpg b/image/character/key_yuuki.jpg new file mode 100644 index 000000000..03b7538cb Binary files /dev/null and b/image/character/key_yuuki.jpg differ diff --git a/image/character/re_niujin.jpg b/image/character/re_niujin.jpg new file mode 100644 index 000000000..80ea41457 Binary files /dev/null and b/image/character/re_niujin.jpg differ diff --git a/mode/guozhan.js b/mode/guozhan.js index 3a4e0d793..43c77bdfe 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -490,7 +490,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gz_huaxin:['male','wei',3,['wanggui','xibing']], gz_luyusheng:['female','wu',3,['zhente','zhiwei']], gz_zongyu:['male','shu',3,['zyqiao','chengshang']], - gz_miheng:['male','qun',3,['gzkuangcai','gzshejian']], + gz_miheng:['male','qun',3,['gzkuangcai','gzshejian'],['gzskin']], gz_cuimao:['male','wei',3,['gzzhengbi','gzfengying'],[]], gz_yujin:['male','wei',4,['gzjieyue'],['gzskin']], @@ -883,10 +883,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ zhenfa:'inline', trigger:{player:'phaseJieshuBegin'}, filter:function(event,player){ + var bool=player.hasSkill('fengyang'); return game.hasPlayer(function(current){ return current!=player&¤t.inline(player); })&&game.hasPlayer(function(current){ - return current.inline(player)&¤t.countCards('e')>0; + return (current==player||bool)&¤t.inline(player)&¤t.countCards('e')>0; }); }, direct:true, @@ -897,7 +898,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }).sortBySeat(); 'step 1' var target=event.list.shift(); - if(target.countCards('e')){ + if((target==player||player.hasSkill('fengyang'))&&target.countCards('e')){ event.target=target; target.chooseToDiscard('e',get.prompt('fengyang'),'弃置装备区内的一张牌并摸两张牌').set('ai',function(card){ return 5.5-get.value(card);