diff --git a/audio/die/re_zhoucang.mp3 b/audio/die/re_zhoucang.mp3 new file mode 100644 index 000000000..ef0c80e56 Binary files /dev/null and b/audio/die/re_zhoucang.mp3 differ diff --git a/audio/die/xiahoujie.mp3 b/audio/die/xiahoujie.mp3 new file mode 100644 index 000000000..0a0afffa5 Binary files /dev/null and b/audio/die/xiahoujie.mp3 differ diff --git a/audio/skill/liedan1.mp3 b/audio/skill/liedan1.mp3 new file mode 100644 index 000000000..32d5c7ccc Binary files /dev/null and b/audio/skill/liedan1.mp3 differ diff --git a/audio/skill/liedan2.mp3 b/audio/skill/liedan2.mp3 new file mode 100644 index 000000000..50af9a600 Binary files /dev/null and b/audio/skill/liedan2.mp3 differ diff --git a/audio/skill/rezhongyong1.mp3 b/audio/skill/rezhongyong1.mp3 new file mode 100644 index 000000000..817e0cbe5 Binary files /dev/null and b/audio/skill/rezhongyong1.mp3 differ diff --git a/audio/skill/rezhongyong2.mp3 b/audio/skill/rezhongyong2.mp3 new file mode 100644 index 000000000..014e0114f Binary files /dev/null and b/audio/skill/rezhongyong2.mp3 differ diff --git a/audio/skill/zhuangdan1.mp3 b/audio/skill/zhuangdan1.mp3 new file mode 100644 index 000000000..a83a82b77 Binary files /dev/null and b/audio/skill/zhuangdan1.mp3 differ diff --git a/audio/skill/zhuangdan2.mp3 b/audio/skill/zhuangdan2.mp3 new file mode 100644 index 000000000..ea74400aa Binary files /dev/null and b/audio/skill/zhuangdan2.mp3 differ diff --git a/card/guozhan.js b/card/guozhan.js index 0ce4e539e..91acec800 100644 --- a/card/guozhan.js +++ b/card/guozhan.js @@ -711,8 +711,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ enable:true, filterTarget:function(card,player,target){ if(get.mode()=='guozhan'){ - if(player.identity=='unknown'||player.identity=='ye') return player==target; - return player.identity==target.identity; + return target.isFriendOf(player); } else if(get.is.versus()){ return player.side==target.side; diff --git a/card/standard.js b/card/standard.js index c253644a9..b910f0ae4 100644 --- a/card/standard.js +++ b/card/standard.js @@ -1744,7 +1744,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){ cardEnabled2:function(card,player){ if(!_status.event.addCount_extra||player.hasSkill('zhuge_skill',null,false)) return; if(card&&card==player.getEquip('zhuge')){ - var cardz=get.card(); + try{ + var cardz=get.card(); + } + catch(e){ + return; + } if(!cardz||cardz.name!='sha') return; _status.zhuge_temp=true; var bool=lib.filter.cardUsable(get.autoViewAs({name:'sha'},ui.selected.cards.concat([card])),player); diff --git a/character/diy.js b/character/diy.js index 23f2c3709..718be1cdc 100755 --- a/character/diy.js +++ b/character/diy.js @@ -148,6 +148,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ns_xinnanhua:['male','qun',3,['ns_xiandao','ns_xiuzheng','ns_chuanshu'],[]], ns_caimao:['male','qun',4,['nsdingzhou']], ns_luyusheng:['female','wu',3,['nshuaishuang','nsfengli']], + ns_chengpu:['male','wu',4,['decadelihuo','decadechunlao']], old_jiakui:['male','wei',4,['tongqu','xinwanlan']], ol_guohuai:['male','wei',3,['rejingce']], @@ -179,7 +180,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ diy_yijiang:["key_kud","key_misuzu","key_kamome","key_nao", "ns_huangchengyan","ns_sunchensunjun","ns_yuanxi","ns_caoshuang"], 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"], + diy_fakenews:["diy_wenyang","ns_zhangwei","ns_caimao","ns_chengpu"], diy_default:["diy_feishi","diy_liuyan","diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji","diy_liufu","diy_xizhenxihong","diy_liuzan","diy_zaozhirenjun","diy_yangyi","diy_tianyu"], diy_noname:['noname'], diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan","key_yuu","key_ryoichi","key_kotori","key_jojiro","key_shiroha","key_shizuku","key_hiroto","key_sakuya","key_youta","key_rumi","key_chihaya","key_yukito","key_asara","key_kotomi"], @@ -13976,6 +13977,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ diy_trashbin:'垃圾桶', old_jiakui:'贾逵重制', ol_guohuai:'三血郭淮', + ns_chengpu:'铁索程普', + ns_chengpu_ab:'程普', }, }; }); diff --git a/character/mobile.js b/character/mobile.js index 781852b13..e298ee0d8 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -576,7 +576,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ for(var i of result.targets) i.addSkill('yufeng2'); if(event.score>result.targets.length) player.draw(event.score-result.targets.length); } - else player.draw(result.score); + else player.draw(event.score); }, ai:{ order:10, @@ -2169,7 +2169,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ charlotte:true, filter:function(event,player){ if(event.name!='gain'&&event.player!=player.storage.jinglve2) return false; - return event.name=='die'||(event.cards.contains(player.storage.jinglve3)&&(event.name=='gain'||event.position!=ui.ordering)); + return event.name=='die'||(event.cards.contains(player.storage.jinglve3)&&(event.name=='gain'||event.position!=ui.ordering&&event.position!=ui.discardPile)); }, content:function(){ player.removeSkill('jinglve2'); @@ -2183,7 +2183,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(event.player&&event.player!=player.storage.jinglve2) return false; if(event.name=='phase') return event.player.getCards('hej').contains(player.storage.jinglve3); if(!event.cards.contains(player.storage.jinglve3)) return false; - return event.name=='useCard'||get.position(player.storage.jinglve3,true)=='d'; + return event.name=='useCard'||get.position(player.storage.jinglve3,true)=='d'||event.position==ui.discardPile; }, forced:true, charlotte:true, @@ -2194,8 +2194,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger.targets.length=0; } else{ - var next=player.gain(player.storage.jinglve3,trigger.name=='phase'?'giveAuto':'gain2'); - if(trigger.name=='phase') next.source=trigger.player; + if(trigger.name=='phase'){ + player.gain(player.storage.jinglve3,trigger.player,'giveAuto'); + } + else if(get.position(player.storage.jinglve3,true)=='d') player.gain(player.storage.jinglve3,'gain2'); } player.removeSkill('jinglve2'); }, @@ -4476,7 +4478,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ cardEnabled2:function(card,player){ if(!_status.event.addCount_extra||player.hasSkill('rw_zhuge_skill',null,false)) return; if(card&&card==player.getEquip('rewrite_zhuge')){ - var cardz=get.card(); + try{ + var cardz=get.card(); + } + catch(e){ + return; + } if(!cardz||cardz.name!='sha') return; _status.rw_zhuge_temp=true; var bool=lib.filter.cardUsable(get.autoViewAs({name:'sha'},ui.selected.cards.concat([card])),player); @@ -6608,7 +6615,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, derivation:'yizan_rewrite', }, - xinfu_jingxie:{audio:2}, + xinfu_jingxie:{ + audio:2, + video:function(player,info){ + var l2=player.getCards(info[0]?'e':'h'),l1=info[1]; + for(var j=0;j1||player.getHistory('useCard').indexOf(event)==0)&&(player.hp>1||player.getStorage('rechunlao').length)&&game.hasPlayer(function(current){ + return !event.targets.contains(current)&&player.canUse(event.card,current) + &&get.attitude(player,current)<0&&!current.hasShan() + &&get.effect(current,{name:'sha',nature:'fire'},player,player)>0; + }); + }, + content:function(){ + trigger.card.nature='fire'; + trigger.lihuo_changed=true; + }, + group:['ollihuo2','ollihuo3','ollihuo4'], + ai:{ + fireAttack:true, + }, + }, + ollihuo2:{ + trigger:{player:'useCard2'}, + filter:function(event,player){ + if(event.card.name!='sha'||event.card.nature!='fire') return false; + return game.hasPlayer(function(current){ + return !event.targets.contains(current)&&player.canUse(event.card,current); + }); + }, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('ollihuo'),'为'+get.translation(trigger.card)+'增加一个目标',function(card,player,target){ + return !_status.event.sourcex.contains(target)&&player.canUse(_status.event.card,target); + }).set('sourcex',trigger.targets).set('card',trigger.card).set('ai',function(target){ + var player=_status.event.player; + return get.effect(target,_status.event.card,player,player); + }); + 'step 1' + if(result.bool){ + if(!event.isMine()&&!_status.connectMode) game.delayx(); + event.target=result.targets[0]; + } + else{ + event.finish(); + } + 'step 2' + player.logSkill('ollihuo',event.target); + trigger.targets.push(event.target); + }, + }, + ollihuo3:{ + trigger:{player:'useCardEnd'}, + filter:function(event,player){ + return event.lihuo_changed==true&&player.getHistory('sourceDamage',function(evt){ + return evt.card==event.card; + }).length>0; + }, + forced:true, + audio:'lihuo', + audioname:['re_chengpu'], + content:function(){ + player.loseHp(); + } + }, + ollihuo4:{ + trigger:{player:'useCardAfter'}, + frequent:true, + audio:'lihuo', + audioname:['re_chengpu'], + filter:function(event,player){ + return event.card.name=='sha'&&player.getHistory('useCard').indexOf(event)==0&&event.cards.filterInD().length>0; + }, + content:function(){ + var cards=trigger.cards.filterInD(); + player.markAuto('rechunlao',cards); + player.$gain2(cards,false); + game.log(player,'将',cards,'放在了武将牌上'); + game.cardsGotoSpecial(cards); + game.delay(); + }, + }, + rezhongyong:{ + trigger:{player:'useCardAfter'}, + audio:2, + direct:true, + filter:function(event,player){ + return event.card.name=='sha'; + }, + content:function(){ + "step 0" + event.cards=trigger.cards.filterInD(); + game.countPlayer2(function(current){ + current.getHistory('useCard',function(evt){ + if(evt.card.name=='shan'&&evt.getParent(3)==trigger) event.cards.addArray(evt.cards.filterInD('od')); + }); + }); + if(!event.cards.length) event.finish(); + player.chooseTarget(get.prompt2('rezhongyong'),'令一名其他角色获得'+get.translation(event.cards),function(card,player,target){ + return !_status.event.source.contains(target)&&target!=player; + }).set('ai',function(target){ + return get.attitude(_status.event.player,target); + }).set('source',trigger.targets); + "step 1" + if(result.bool){ + var target=result.targets[0]; + player.logSkill('rezhongyong',target); + target.gain(cards,'gain2'); + var red=false,black=false; + for(var i of cards){ + var color=get.color(i,false); + if(color=='red') red=true; + if(color=='black') black=true; + if(red&&black) break; + } + if(red) target.chooseToUse('是否使用一张杀?',{name:'sha'}).set('filterTarget',function(card,player,target){ + return target!=_status.event.sourcex&&_status.event.sourcex.inRange(target)&&lib.filter.targetEnabled.apply(this,arguments); + }).set('sourcex',player).set('addCount',false); + if(black) target.draw(); + } + } + }, //长标 changbiao:{ audio:2, @@ -2918,14 +3053,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, rechunlao:{ - trigger:{player:'phaseJieshuBegin'}, + trigger:{player:'phaseUseEnd'}, direct:true, audio:2, filter:function(event,player){ - return player.countCards('h')>0&&(_status.connectMode||player.countCards('h','sha')>0)&&!player.storage.rechunlao.length; - }, - init:function(player){ - if(!player.storage.rechunlao) player.storage.rechunlao=[]; + return player.countCards('h')>0&&(_status.connectMode||player.countCards('h','sha')>0)&&!player.getStorage('rechunlao').length; }, intro:{ content:'cards', @@ -2940,29 +3072,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ 'step 0' - player.chooseCard([1,Math.max(1,player.countCards('h','sha'))],get.prompt('rechunlao'),{name:'sha'}).set('ai',function(){ + player.chooseCard([1,Math.max(1,player.countCards('h','sha'))],get.prompt('rechunlao'),'将任意张【杀】置于武将牌上作为“醇”',{name:'sha'}).set('ai',function(){ return 1; }); 'step 1' if(result.bool){ player.logSkill('rechunlao'); - player.storage.rechunlao=player.storage.rechunlao.concat(result.cards); - player.syncStorage('rechunlao'); - player.markSkill('rechunlao'); + player.markAuto('rechunlao',result.cards); player.lose(result.cards,ui.special,'toStorage'); player.$give(result.cards,player,false); } }, ai:{ - effect:{ - player:function(card,player,target){ - if(_status.currentPhase!=player) return; - if(card.name=='sha'&&!player.needsToDiscard()&& - !player.storage.rechunlao.length&&target.hp>1){ - return 'zeroplayertarget'; - } - } - }, threaten:1.4 }, group:'rechunlao2' @@ -2970,7 +3091,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rechunlao2:{ enable:'chooseToUse', filter:function(event,player){ - return event.type=='dying'&&event.dying&&event.dying.hp<=0&&player.storage.rechunlao.length>0; + return event.type=='dying'&&event.dying&&event.dying.hp<=0&&player.getStorage('rechunlao').length>0; }, filterTarget:function(card,player,target){ return target==_status.event.dying; @@ -3004,7 +3125,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ order:6, skillTagFilter:function(player){ - return player.storage.rechunlao.length>0; + return player.getStorage('rechunlao').length>0; }, save:true, result:{ @@ -9062,7 +9183,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_chengpu:'界程普', rechunlao:'醇醪', rechunlao2:'醇醪', - rechunlao_info:'结束阶段开始时,若你没有“醇”,你可以将至少一张【杀】置于你的武将牌上,称为“醇”。当一名角色处于濒死状态时,你可以移去一张“醇”,视为该角色使用一张【酒】,然后若此“醇”的属性为:火,你回复1点体力、雷,你摸两张牌。', + rechunlao_info:'出牌阶段结束时,若你没有“醇”,你可以将至少一张【杀】置于你的武将牌上,称为“醇”。当一名角色处于濒死状态时,你可以移去一张“醇”,视为该角色使用一张【酒】,然后若此“醇”的属性为:火,你回复1点体力、雷,你摸两张牌。', re_caozhang:'界曹彰', yujin_yujin:'界于禁', rejieyue:'节钺', @@ -9202,6 +9323,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_zhurong:'界祝融', changbiao:'长标', changbiao_info:'出牌阶段限一次,你可以将任意张手牌当做【杀】使用(无距离限制)。若你因此【杀】对目标角色造成过伤害,则你于出牌阶段结束时摸X张牌(X为此【杀】对应的实体牌数量)。', + re_zhoucang:'界周仓', + rezhongyong:'忠勇', + rezhongyong_info:'当你使用【杀】后,你可以将此【杀】以及目标角色使用的【闪】交给一名其他角色,若其获得的牌中有红色,则其可以对你攻击范围内的角色使用一张【杀】。若其获得的牌中有黑色,其摸一张牌。', + ollihuo:'疠火', + ollihuo2:'疠火', + ollihuo3:'疠火', + ollihuo4:'疠火', + ollihuo_info:'你使用普通的【杀】可以改为火【杀】,若此【杀】造成过伤害,你失去1点体力;你使用火【杀】可以多选择一个目标。你每回合使用的第一张牌如果是【杀】,则此【杀】结算完毕后可置于你的武将牌上。', refresh_standard:'界限突破·标', refresh_feng:'界限突破·风', diff --git a/character/sp.js b/character/sp.js index 215baa869..2baf4741b 100755 --- a/character/sp.js +++ b/character/sp.js @@ -5,7 +5,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ sp:{ - sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu','caoshuang','sp_zhangliao','wolongfengchu','ol_xinxianying'], + sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu','caoshuang','sp_zhangliao','wolongfengchu','ol_xinxianying'], + sp_tongque:["liuxie","lingju","fuwan","sp_fuwan","sp_fuhuanghou","sp_jiben"], sp_zhongdan:["cuiyan","huangfusong"], 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'], @@ -17,6 +18,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, characterFilter:{}, character:{ + sp_jiben:['male','qun',3,['spduanzhi','spduyi']], + sp_fuhuanghou:['female','qun',3,['spcangni','spmixin']], + sp_fuwan:['male','qun',3,['spfengyin','spchizhong']], zongyu:['male','shu',3,['zyqiao','chengshang']], luyusheng:['female','wu',3,['zhente','zhiwei']], ol_xinxianying:['female','wei',3,['xincaishi','xinzhongjian']], @@ -155,6 +159,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //kaisa:["male","western",4,["zhengfu"]], }, characterIntro:{ + jiben:'吉本(?—218年),东汉末年太医令。建安二十三年春正月,时金祎自以世为汉臣,睹汉祚将移,谓可季兴,乃喟然发愤,遂与太医令本、少府耿纪、司直韦晃、本子邈、邈弟穆等结谋攻许,杀曹公长史王必,南援刘备。后必营,必与典农中郎将严匡讨斩之。在《三国演义》中,吉本在此为吉平或吉太,因字称平,故又唤作吉平。曾参与董承等人刺杀曹操的计划,并企图在为曹操治病时毒死曹操,但被曹操识破而遭处刑。之后其子吉邈和吉穆都参与了由耿纪和韦晃等人所发动的反叛曹操的行动,但都失败被杀。', zongyu:'宗预(?-264年),字德艳 ,荆州南阳郡安众县(今河南省南阳市)人。三国时期蜀汉官员、将领。曾随张飞入蜀助平益州,又受辟为丞相诸葛亮手下主簿,升任参军、右中郎将。诸葛亮逝世后,宗预受命出使孙吴,得到孙权的赞赏。迁后将军,出督永安,又升任征西大将军,并受封关内侯。公元258年(景耀元年),因病回成都,受任镇军大将军。蜀汉灭亡后,宗预随后主刘禅徙往洛阳,在中途病逝。宗预为人坦率耿直,多次出使孙吴并深得孙权的敬重,为吴、汉两国同盟的巩固作出了一定的贡献。', mifangfushiren:'麋芳(生卒年不详),字子方,东海郡朐县(今江苏省连云港市)人。汉末三国时期蜀国将领,刘备糜夫人的兄弟。麋芳本为徐州牧陶谦部下,曾被曹操表为彭城相。后来辞官,随刘备从徐州辗转至邺城、汝南、新野、长坂坡、江夏等地,奔波多年。傅士仁(生卒年不详),字君义,幽州广阳郡(今北京市)人,刘备手下将领。受到刘备的重用,但被关羽轻慢。
刘备称汉中王时,糜芳为南郡太守,但受到关羽的轻慢。后来,因未完成供给军资的任务而被关羽责骂,心中不安。吕蒙袭取荆州时,将已经投降的傅士仁展示给糜芳,麋芳于是选择投降,导致关羽兵败被杀。此后,在吴国担任将军,并且为吴征伐。', mengda:'孟达(?-228),字子度,本字子敬,因刘备的叔父名叫刘子敬,为避讳而改字。扶风郡郿人,三国时期人物。本为刘璋属下,后降刘备。关羽围樊城、襄阳时因不发兵救关羽而触怒刘备,于是投奔曹魏。此后,劝降刘封,未果。在魏官至散骑常侍、建武将军,封平阳亭侯。此后又欲反曹魏而归蜀汉,事败而死。', @@ -402,6 +407,251 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //铜雀台 + spduanzhi:{ + trigger:{target:'useCardToTargeted'}, + logTarget:'player', + check:function(event,player){ + var target=event.player; + if(get.attitude(player,target)>=-2||target.countCards('he',function(card){ + return get.value(card,target)>5; + })<2) return false; + if(player.hp>2) return true; + if(player.hp==1){ + if(get.tag(event.card,'respondSha')){ + if(player.countCards('h',{name:'sha'})==0){ + return true; + } + } + else if(get.tag(event.card,'respondShan')){ + if(player.countCards('h',{name:'shan'})==0){ + return true; + } + } + else if(get.tag(event.card,'damage')){ + if(event.card.name=='shuiyanqijunx') return player.countCards('e')==0; + return true; + } + } + return false; + }, + filter:function(event,player){ + return player!=event.player&&event.player.countDiscardableCards(player,'he')>0; + }, + content:function(){ + player.discardPlayerCard(trigger.player,true,'he',[1,2]); + player.loseHp(); + }, + }, + spduyi:{ + enable:'phaseUse', + usable:1, + content:function(){ + 'step 0' + event.card=get.cards()[0]; + game.cardsGotoOrdering(event.card); + player.showCards(event.card); + 'step 1' + player.chooseTarget('令一名角色获得'+get.translation(card),true).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(_status.event.du){ + if(target.hasSkillTag('nodu')) return 0; + return -att; + } + if(att>0){ + if(target==player) att*=0.6; + return att+Math.sqrt(Math.max(0,5-target.countCards('h'))); + } + return att; + }).set('du',card.name=='du'); + 'step 2' + if(result&&result.bool){ + var target=result.targets[0]; + target.gain(card,'gain2'); + if(get.color(card,false)=='black') target.addTempSkill('spduyi2'); + } + }, + ai:{ + order:0.1, + result:{ + player:1, + }, + }, + }, + spduyi2:{ + mod:{ + cardEnabled2:function(card){ + if(get.position(card)=='h') return false; + }, + }, + mark:true, + intro:{ + content:'不能使用或打出手牌', + }, + }, + spcangni:{ + audio:'zhuikong', + trigger:{player:'phaseDiscardBegin'}, + direct:true, + content:function(){ + 'step 0' + player.chooseDrawRecover('###'+get.prompt('spcangni')+'###摸两张牌或回复1点体力,然后将武将牌翻面',2).set('ai',function(){ + return 'cancel2'; + }).logSkill='spcangni'; + 'step 1' + if(result.control!='cancel2') player.turnOver(); + }, + group:['spcangni_gain','spcangni_lose'], + subSkill:{ + gain:{ + audio:'zhuikong', + trigger:{player:'gainAfter'}, + usable:1, + filter:function(event,player){ + return player.isTurnedOver()&&player!=_status.currentPhase; + }, + check:function(event,player){ + return get.attitude(player,_status.currentPhase)>0; + }, + logTarget:function(){ + return _status.currentPhase; + }, + prompt2:'令该角色摸一张牌', + content:function(){ + _status.currentPhase.draw(); + }, + }, + lose:{ + audio:'zhuikong', + trigger:{ + player:'loseAfter', + global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter'], + }, + filter:function(event,player){ + if(event.name=='gain'&&player==event.player) return false; + var evt=event.getl(player); + if(!evt||!evt.cards2||!evt.cards2.length) return false; + return player.isTurnedOver()&&player!=_status.currentPhase&&_status.currentPhase.countCards('he')>0; + }, + check:function(event,player){ + var target=_status.currentPhase; + var att=get.attitude(player,target); + if(target.countCards('e',function(card){ + return get.value(card,target)<=0; + })) return att>0; + return att<0; + }, + logTarget:function(){ + return _status.currentPhase; + }, + prompt2:'令该角色弃置一张牌', + content:function(){ + _status.currentPhase.chooseToDiscard('he',true); + }, + }, + }, + }, + spmixin:{ + audio:'qiuyuan', + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.countCards('h')>0&&game.countPlayer()>2; + }, + filterCard:true, + filterTarget:lib.filter.notMe, + position:'h', + selectTarget:2, + targetprompt:['拿牌打人','被打'], + multitarget:true, + delay:false, + discard:false, + lose:false, + check:function(card){ + if(card.name=='sha') return 4; + return 4-get.value(card); + }, + content:function(){ + 'step 0' + targets[0].gain(cards,player,'giveAuto'); + 'step 1' + if(!targets[0].isAlive()||!targets[1].isAlive()){ + event.finish(); + return; + } + targets[0].chooseToUse(function(card,player,event){ + if(get.name(card)!='sha') return false; + return lib.filter.filterCard.apply(this,arguments); + },'密信:对'+get.translation(targets[1])+'使用一张【杀】,或令其观看并获得你的一张手牌').set('complexSelect',true).set('filterTarget',function(card,player,target){ + if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false; + return lib.filter.targetEnabled.apply(this,arguments); + }).set('sourcex',targets[1]); + 'step 2' + if(!result.bool&&targets[0].countCards('h')) targets[1].gainPlayerCard(targets[0],'visible','h',true); + }, + ai:{ + order:1, + expose:0.1, + result:{ + target:function(player,target){ + var card=ui.selected.cards[0]; + if(!card) return 0; + if(ui.selected.targets.length==0){ + if(card.name=='sha'||target.hasSha()) return 2; + if(get.value(card,target)<0) return -2; + return 0; + } + var target1=ui.selected.targets[0]; + if((card.name=='sha'||target1.hasSha())&&get.effect(target,{name:'sha'},target1,target1)>0) return get.effect(target,{name:'sha'},target1,target); + return 1.5; + }, + }, + }, + }, + spfengyin:{ + audio:'moukui', + trigger:{global:'phaseZhunbeiBegin'}, + direct:true, + filter:function(event,player){ + return player!=event.player&&event.player.hp>=player.hp&&player.countCards('h',function(card){ + if(_status.connectMode) return true; + return get.name(card,player)=='sha'; + })>0; + }, + content:function(){ + 'step 0' + player.chooseCard('h',get.prompt('spfengyin',trigger.player),'交给该角色一张【杀】并令其跳过出牌阶段和弃牌阶段',function(card,player){ + return get.name(card,player)=='sha'; + }).set('ai',function(card){ + if(_status.event.goon) return 5-get.value(card); + return 0; + }).set('goon',function(){ + if(get.attitude(player,trigger.player)>=0) return false; + if(trigger.player.countCards('hs')0; + }, + content:function(){ + player.addMark('ol_shichou2',1,false); + player.gain(trigger.cards.filterInD(),'gain2'); + }, + }, //新大小乔 "new_xingwu":{ audio:"xingwu", @@ -15789,6 +16056,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ guansuo:['guansuo','ol_guansuo'], zhangxingcai:['zhangxingcai','old_zhangxingcai'], lisu:['ol_lisu','lisu'], + fuwan:['fuwan','sp_fuwan'], }, translate:{ "xinfu_lingren":"凌人", @@ -16025,7 +16293,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "new_luoyan_liuli":"流离", "new_luoyan_liuli_info":"", ol_shichou:"誓仇", - ol_shichou_info:"当你使用【杀】时,你可以令至多X名角色也成为此【杀】的目标。(X为你已损失的体力值且至少为1)", + ol_shichou_info:"当你使用【杀】时,你可以令至多X名角色也成为此【杀】的目标。此牌结算结束后,若你未因【杀】造成过伤害,则你获得此【杀】(X为你已损失的体力值且至少为1。每回合限获得三次)", "zhenwei_three":"镇卫", "zhenwei_three_info":"锁定技,敌方角色至己方其他角色的距离+1。", "huanshi_three":"缓释", @@ -16672,8 +16940,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){ chengshang:'承赏', chengshang_info:'当你于出牌阶段内使用的牌结算完成后,若此牌未造成过伤害且此牌的目标包含其他角色且你本阶段内未因〖承赏〗获得过牌,则你可以从牌堆中获得一张与此牌花色点数相同的牌。', chengshang_info_guozhan:'当你于出牌阶段内使用的牌结算完成后,若此牌未造成过伤害且此牌的目标包含其他角色且你本阶段内未因〖承赏〗获得过牌,则你可以从牌堆中获得一张与此牌花色点数相同的牌。', + sp_fuwan:'SP伏完', + spfengyin:'奉印', + spfengyin_info:'其他角色的回合开始时,若其体力值不少于你,你可以交给其一张【杀】,令其跳过出牌阶段和弃牌阶段。', + spchizhong:'持重', + spchizhong_info:'锁定技,你的手牌上限等于体力上限;其他角色死亡时,你加1点体力上限。', + sp_fuhuanghou:'SP伏皇后', + spcangni:'藏匿', + spcangni_info:'弃牌阶段开始时,你可以回复1点体力或摸两张牌,然后将你的武将牌翻面;其他角色的回合内,当你获得(每回合限一次)/失去一次牌时,若你的武将牌背面朝上,你可以令该角色摸/弃置一张牌。', + spmixin:'密信', + spmixin_info:'出牌阶段限一次,你可以将一张手牌交给一名其他角色,该角色须对你选择的另一名角色使用一张无距离限制的【杀】,否则你选择的角色观看其手牌并获得其中一张。', + sp_jiben:'吉本', + spduanzhi:'断指', + spduanzhi_info:'当你成为其他角色使用的牌的目标后,你可以弃置其至多两张牌,然后失去1点体力。', + spduyi:'毒医', + spduyi2:'毒医', + spduyi_info:'出牌阶段限一次,你可以亮出牌堆顶的一张牌并交给一名角色,若此牌为黑色,该角色不能使用或打出手牌,直到回到结束。', sp_default:"常规", + sp_tongque:"铜雀台", sp_zhongdan:"忠胆英杰", sp_star:"桌游志·SP", sp_guozhan:"国战", diff --git a/character/sp2.js b/character/sp2.js index 2fc7d543f..c1f6b7d86 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,10 +4,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ + xiahoujie:['male','wei',5,['liedan','zhuangdan']], cheliji:['male','qun',4,['cheliji_skill1','cheliji_skill2'],['unseen']], simazhou:['male','jin',4,['caiwang','naxiang']], huangzu:['male','qun',4,['wangong'],['unseen']], - caosong:['male','wei',3,['cslilu','csyizheng']], + caosong:['male','wei',4,['cslilu','csyizheng']], re_taoqian:['male','qun',3,['zhaohuo','reyixiang','reyirang']], zhaozhong:['male','qun',6,['yangzhong','huangkong']], fanyufeng:['female','qun',3,['bazhan','jiaoying']], @@ -102,7 +103,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_zizouqi:["mangyachang","xugong","zhangchangpu"], sp_sbfm:["lisu","xinpi","zhangwen"], sp_shengun:["puyuan","guanlu","gexuan","xushao"], - sp_baigei:['re_panfeng','xingdaorong','caoxing','re_chunyuqiong'], + sp_baigei:['re_panfeng','xingdaorong','caoxing','re_chunyuqiong','xiahoujie'], sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou"], sp_huangjin:['liuhong','zhujun','re_hejin','re_hansui','liubian'], sp_fadong:['ol_dingyuan','wangrong','re_quyi','hanfu'], @@ -115,6 +116,51 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, skill:{ + //夏侯杰 + liedan:{ + audio:2, + trigger:{global:'phaseZhunbeiBegin'}, + forced:true, + filter:function(event,player){ + return (player!=event.player||player.countMark('liedan')>4)&&!player.hasSkill('zhuangdan_mark'); + }, + logTarget:'player', + content:function(){ + if(player==trigger.player){ + player.die(); + return; + } + var num=0; + if(player.hp>trigger.player.hp) num++; + if(player.countCards('h')>trigger.player.countCards('h')) num++; + if(player.countCards('e')>trigger.player.countCards('e')) num++; + if(num){ + player.draw(num); + if(num==3) player.gainMaxHp(); + } + else{ + player.addMark('liedan',1); + player.loseHp(); + } + }, + intro:{content:'mark'}, + }, + zhuangdan:{ + audio:2, + trigger:{global:'phaseEnd'}, + forced:true, + filter:function(event,player){ + return player!=event.player&&player.isMaxHandcard(true); + }, + content:function(){ + player.addTempSkill('zhuangdan_mark',{player:'phaseEnd'}) + }, + }, + zhuangdan_mark:{ + mark:true, + marktext:'胆', + intro:{content:'我超勇的'}, + }, //彻里吉 cheliji_skill1:{ audio:2, @@ -5585,6 +5631,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, mansi_viewas:{ audio:'mansi', + position:'h', enable:'phaseUse', usable:1, filterCard:true, @@ -9654,6 +9701,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, characterIntro:{ + tangji:'唐姬,会稽太守唐瑁女,弘农怀王刘辩的妃子。刘辩死后,唐姬回归故里,因节烈不愿改嫁他人,后被汉献帝下诏封为弘农王妃。', lijue:"李傕(jué,一说“傕”读音“què”)(?—198年),字稚然。北地郡泥阳县(今陕西省耀县)人,汉末群雄之一。东汉末年汉献帝时的军阀、权臣,官至大司马、车骑将军、开府、领司隶校尉、假节。
李傕本为董卓部将,后被董卓的女婿牛辅派遣至中牟与朱儁交战,大破朱儁,进而至陈留、颍川等地劫掠。初平三年(192年)董卓和牛辅被杀后,李傕归无所依,于是采用贾诩之谋,伙同郭汜、张济、樊稠等原董卓部曲将攻向长安。击败吕布,杀死王允等人,占领长安,把持朝廷大权。后诸将不和,李傕在会议上杀死了樊稠,又与郭汜分别劫持了汉献帝和众臣,相互交战,张济率兵赶来和解,于是二人罢兵,李傕出屯池阳黄白城,郭汜、张济等人随汉献帝东归前往弘农。
后来,李傕、郭汜、张济反悔,联合起来追击汉献帝,与杨奉、董承等人几番交战。汉献帝一路逃亡,狼狈不堪,到达安邑,与李傕等人讲和。不久,汉献帝被曹操迎往许都。建安三年(198年),曹操派谒者仆射裴茂召集关西诸将段煨等人征讨李傕,灭其三族。", zhangji:"张济(?-196年),武威郡祖厉县(今甘肃靖远东南)人。东汉末年割据军阀之一。 张济原为董卓部将,董卓被诛杀后,张济与李傕一同率军攻破长安,任中郎将。不久,升任镇东将军,封平阳侯,出屯弘农。献帝东迁时,张济升任骠骑将军,率军护卫献帝,后来因与董承等人有矛盾,便与李傕、郭汜一同追赶献帝。 建安元年(196年),张济因军队缺粮而进攻穰城,中流矢而死。死后,部队由侄儿张绣接管。", guosi:"郭汜(?-197年),又名郭多,凉州张掖(今甘肃张掖西北)人,东汉末年将领、军阀,献帝时权臣。原为董卓部下。董卓被杀后,凉州众将归无所依,于是采用贾诩之谋,联兵将攻向长安,击败吕布,杀死王允等人,占领长安,把持朝廷大权。几年后,郭汜被部将伍习杀死。", @@ -9708,6 +9756,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ simazhou:'司马伷(zhòu)(227年~283年6月12日),字子将,河内郡温县(今河南省温县)人。西晋宗室、将领,晋宣帝司马懿第三子,伏太妃所生。晋景帝司马师、文帝司马昭的同父异母弟,晋武帝司马炎的叔父。司马伷少有才气,在曹魏历任宁朔将军、散骑常侍、征虏将军等职,先后受封南安亭侯、东武乡侯,五等爵制建立后,改封南皮伯。西晋建立后,获封东莞郡王,入朝任尚书右仆射、抚军将军,出外拜镇东大将军。后改封琅邪王,加开府仪同三司。西晋伐吴时,率军出涂中,孙皓向他投降并奉上玉玺。战后因功拜大将军,增邑三千户。太康四年(283年),司马伷去世,享年五十七岁。谥号为武,世称“琅邪武王”。著有《周官宁朔新书》八卷,今已亡佚。', huangzu:'黄祖(?-208年),东汉末年将领。刘表任荆州牧时,黄祖出任江夏太守。初平二年(191年),黄祖在与长沙太守孙坚交战时,其部下将孙坚射死,因此与孙家结下仇怨。之后,黄祖多次率部与东吴军队交战,射杀凌操、徐琨等人。建安十三年(208年),在与孙权的交战中,兵败被杀。', cheliji:'彻里吉是历史小说《三国演义》中的虚构人物,西羌国王。蜀相诸葛亮伐魏,魏都督曹真驰书赴羌,国王彻里吉即命雅丹丞相与越吉元帅起羌兵一十五万、并战车直扣西平关。后军大败,越吉亡,雅丹被俘,亮将所获羌兵及车马器械,尽给还雅丹,俱放回国。彻里吉感蜀恩义,与之结盟。正史中没有关于彻里吉的记载。', + xiahoujie:'夏侯杰(?—208年),是罗贯中的小说《三国演义》中曹操的部将,征战时常常带在身边。在第42回长坂坡之战中,张飞大吼,从马儿受惊跌下马来而死。', }, characterTitle:{ wulan:'#b对决限定武将', @@ -10338,6 +10387,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ cheliji_tiejixuanyu_info:'其他角色的回合结束时,若其本回合未造成过伤害,你可以令其弃置两张牌,然后弃置此牌。', cheliji_feilunzhanyu:'飞轮战舆', cheliji_feilunzhanyu_info:'其他角色的回合结束时,若其本回合使用过非基本牌,你可以令其交给你一张牌,然后弃置此牌。', + xiahoujie:'夏侯杰', + liedan:'烈胆', + liedan_info:'锁定技,其他角色的准备阶段开始时,若X大于0,则你摸X张牌。若X等于3,则你加1点体力上限。若X为0,则你失去1点体力并获得一枚“裂”(X为你的手牌数,体力值,装备区牌数中大于其的数量)。准备阶段,若“裂”数大于4,则你死亡。', + zhuangdan:'壮胆', + zhuangdan_mark:'壮胆', + zhuangdan_info:'锁定技,其他角色的回合结束时,若你的手牌数为全场唯一最多,则你令〖烈胆〗失效直到你下回合结束。', sp_yingbian:'文德武备', sp_whlw:"文和乱武", diff --git a/character/yijiang.js b/character/yijiang.js index 530b1234f..cf7eac16f 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -6863,6 +6863,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ enable:'phaseUse', filterCard:true, selectCard:-1, + position:'h', filter:function(event,player){ if(player.getStat().skill.zhanjue_draw&&player.getStat().skill.zhanjue_draw>=2) return false; var hs=player.getCards('h'); @@ -10157,9 +10158,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } else if(get.tag(event.card,'damage')){ - if(event.card.name=='shuiyanqijunx') return player.countCards('e')<2; + if(event.card.name=='shuiyanqijunx') return player.countCards('e')==0; return true; - //if(player.countCards('h')<2) return true; } else if((event.card.name=='shunshou'||(event.card.name=='zhujinqiyuan'&&(event.card.yingbian||get.distance(event.player,player)<0)))&&player.hp>2){ return true; @@ -10802,6 +10802,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return { filterCard:true, selectCard:-1, + position:'h', audio:2, popname:true, viewAs:{name:links[0][2]}, @@ -12083,7 +12084,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ liaohua:['xin_liaohua','re_liaohua','liaohua'], bulianshi:['re_bulianshi','bulianshi','old_bulianshi'], handang:['xin_handang','re_handang','handang'], - chengpu:['re_chengpu','chengpu','xin_chengpu'], + chengpu:['re_chengpu','ns_chengpu','chengpu','xin_chengpu'], liubiao:['re_liubiao','xin_liubiao','liubiao'], manchong:['re_manchong','manchong'], caochong:['caochong','old_caochong'], diff --git a/game/asset.js b/game/asset.js index 650605083..eb677bb97 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.110.1', + 'v1.9.110.2', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -703,6 +703,8 @@ window.noname_asset_list=[ 'audio/die/zongyu.mp3', 'audio/die/nanhualaoxian.mp3', 'audio/die/simazhou.mp3', + 'audio/die/re_zhoucang.mp3', + 'audio/die/xiahoujie.mp3', 'audio/skill/decadezishou1.mp3', 'audio/skill/decadezishou2.mp3', @@ -3097,7 +3099,12 @@ window.noname_asset_list=[ 'audio/skill/tianshu2.mp3', 'audio/skill/yufeng1.mp3', 'audio/skill/yufeng2.mp3', - + 'audio/skill/liedan1.mp3', + 'audio/skill/liedan2.mp3', + 'audio/skill/rezhongyong1.mp3', + 'audio/skill/rezhongyong2.mp3', + 'audio/skill/zhuangdan1.mp3', + 'audio/skill/zhuangdan2.mp3', 'audio/voice/male/0.mp3', 'audio/voice/male/1.mp3', 'audio/voice/male/2.mp3', @@ -3907,6 +3914,12 @@ window.noname_asset_list=[ 'image/character/nanhualaoxian.jpg', 'image/character/key_asara.jpg', 'image/character/key_kotomi.jpg', + 'image/character/ns_chengpu.jpg', + 'image/character/re_zhoucang.jpg', + 'image/character/sp_fuhuanghou.jpg', + 'image/character/sp_fuwan.jpg', + 'image/character/sp_jiben.jpg', + 'image/character/xiahoujie.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', diff --git a/game/game.js b/game/game.js index f8e651ab0..10884ad52 100644 --- a/game/game.js +++ b/game/game.js @@ -4414,6 +4414,12 @@ frequent:true, intro:'若开启此选项,选择神武将的玩家需在亮出自己的武将牌之前为自己选择一个势力。' }, + nei_fullscreenpop:{ + name:'主内单挑特效', + intro:'在进入主内单挑时,弹出全屏文字特效', + init:true, + unfrequent:true, + }, double_character:{ name:'双将模式', init:false, @@ -10974,7 +10980,7 @@ game.changeCoin(-3); } var hs=game.me.getCards('h'); - game.addVideo('lose',game.me,[get.cardsInfo(hs),[],[]]); + game.addVideo('lose',game.me,[get.cardsInfo(hs),[],[],[]]); for(var i=0;i#handcards1:not(.scrollh), #me>#handcards2:not(.scrollh) { @@ -4518,8 +4514,10 @@ div[data-decoration="bronze"]::after{ #me>div:not(.scrollh)>.handcards>.card.selected{ top:-20px; }*/ -.glows:not(.button):not(.card){ - box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(255, 153, 51, 0.4) 0 0 5px, rgba(255, 153, 51, 0.5) 0 0 12px, rgba(255, 153, 51, 0.8) 0 0 15px !important; + +#me .card.glows { + opacity: 1; + box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px,rgb(255, 153, 51) 0 0 5px, rgba(255, 153, 51,1) 0 0 10px; } .glow:not(.button):not(.card){ box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 133, 255, 0.4) 0 0 5px, rgba(0, 133, 255, 0.5) 0 0 12px, rgba(0, 133, 255, 0.8) 0 0 15px !important; diff --git a/mode/guozhan.js b/mode/guozhan.js index 21106111c..a026782f2 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -5186,6 +5186,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ filterCard:true, audio:"qice", selectCard:-1, + position:'h', selectTarget:function(){ var select=get.select(get.info(get.card()).selectTarget); var nh=_status.event.player.countCards('h'); @@ -9956,7 +9957,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } return Math.sign(att1)*eff1+Math.sign(att2)*eff2; }, - realAttitude:function(from,toidentity,difficulty){ + realAttitude:function(from,to,difficulty,toidentity){ if(from.identity==toidentity&&toidentity!='ye'){ return 4+difficulty; } @@ -9964,18 +9965,38 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ if(from.wontYe()) return 4+difficulty; } var groups=[]; - for(var i=0;i=game.players.length/2){ if(to_p<=from_p){ return 0.5; @@ -9993,7 +10014,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ var difficulty=0; if(to==game.me) difficulty=(2-get.difficulty())*1.5; if(from==to) return 5+difficulty; - if(from.identity==to.identity&&(from.storage.yexinjia_friend==to||to.storage.yexinjia_friend==from||from.identity!='unknown'&&from.identity!='ye')) return 5+difficulty; + if(from.isFriendOf(to)) return 5+difficulty; if(from.identity=='unknown'&&lib.character[from.name1][1]==to.identity){ if(from.wontYe()) return 4+difficulty; } @@ -10004,7 +10025,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ toidentity='ye'; } } - var att=get.realAttitude(from,toidentity,difficulty); + var att=get.realAttitude(from,to,difficulty,toidentity); if(from.storage.zhibi&&from.storage.zhibi.contains(to)){ return att; } diff --git a/mode/identity.js b/mode/identity.js index 18c86040d..626b9ec1e 100644 --- a/mode/identity.js +++ b/mode/identity.js @@ -2307,7 +2307,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ if(game.zhu&&game.zhu.isZhu){ if(get.population('zhong')+get.population('nei')==0|| get.population('zhong')+get.population('fan')==0){ - game.broadcastAll(game.showIdentity); + game.broadcastAll(function(){ + game.showIdentity(); + if(game.zhu&&game.zhu.isAlive()&&get.population('nei')==1&&get.config('nei_fullscreenpop')) game.me.$fullscreenpop('主公 vs 内奸',null,null,false); + }); } } if(game.zhu&&game.zhu.storage.enhance_zhu&&get.population('fan')<3){