diff --git a/audio/die/huangzu.mp3 b/audio/die/huangzu.mp3 new file mode 100644 index 000000000..1a83436d6 Binary files /dev/null and b/audio/die/huangzu.mp3 differ diff --git a/audio/die/re_chenqun.mp3 b/audio/die/re_chenqun.mp3 new file mode 100644 index 000000000..a18b9fe93 Binary files /dev/null and b/audio/die/re_chenqun.mp3 differ diff --git a/audio/die/ruanyu.mp3 b/audio/die/ruanyu.mp3 new file mode 100644 index 000000000..6eed627e8 Binary files /dev/null and b/audio/die/ruanyu.mp3 differ diff --git a/audio/die/zhangmiao.mp3 b/audio/die/zhangmiao.mp3 new file mode 100644 index 000000000..09ea45dd4 Binary files /dev/null and b/audio/die/zhangmiao.mp3 differ diff --git a/audio/skill/miaoxian1.mp3 b/audio/skill/miaoxian1.mp3 new file mode 100644 index 000000000..f02b86e8a Binary files /dev/null and b/audio/skill/miaoxian1.mp3 differ diff --git a/audio/skill/miaoxian2.mp3 b/audio/skill/miaoxian2.mp3 new file mode 100644 index 000000000..ffe4e01d8 Binary files /dev/null and b/audio/skill/miaoxian2.mp3 differ diff --git a/audio/skill/mouni1.mp3 b/audio/skill/mouni1.mp3 new file mode 100644 index 000000000..3d7c37132 Binary files /dev/null and b/audio/skill/mouni1.mp3 differ diff --git a/audio/skill/mouni2.mp3 b/audio/skill/mouni2.mp3 new file mode 100644 index 000000000..5a7dd56de Binary files /dev/null and b/audio/skill/mouni2.mp3 differ diff --git a/audio/skill/redingpin1.mp3 b/audio/skill/redingpin1.mp3 new file mode 100644 index 000000000..041026c69 Binary files /dev/null and b/audio/skill/redingpin1.mp3 differ diff --git a/audio/skill/redingpin2.mp3 b/audio/skill/redingpin2.mp3 new file mode 100644 index 000000000..4d50381ed Binary files /dev/null and b/audio/skill/redingpin2.mp3 differ diff --git a/audio/skill/refaen1.mp3 b/audio/skill/refaen1.mp3 new file mode 100644 index 000000000..afef7ecc1 Binary files /dev/null and b/audio/skill/refaen1.mp3 differ diff --git a/audio/skill/refaen2.mp3 b/audio/skill/refaen2.mp3 new file mode 100644 index 000000000..19d11b058 Binary files /dev/null and b/audio/skill/refaen2.mp3 differ diff --git a/audio/skill/wangong1.mp3 b/audio/skill/wangong1.mp3 new file mode 100644 index 000000000..b862af855 Binary files /dev/null and b/audio/skill/wangong1.mp3 differ diff --git a/audio/skill/wangong2.mp3 b/audio/skill/wangong2.mp3 new file mode 100644 index 000000000..ca63542fd Binary files /dev/null and b/audio/skill/wangong2.mp3 differ diff --git a/audio/skill/xingzuo1.mp3 b/audio/skill/xingzuo1.mp3 new file mode 100644 index 000000000..d5e7cc9e4 Binary files /dev/null and b/audio/skill/xingzuo1.mp3 differ diff --git a/audio/skill/xingzuo2.mp3 b/audio/skill/xingzuo2.mp3 new file mode 100644 index 000000000..f29ad42d9 Binary files /dev/null and b/audio/skill/xingzuo2.mp3 differ diff --git a/audio/skill/zhangu1.mp3 b/audio/skill/zhangu1.mp3 new file mode 100644 index 000000000..07d142f2b Binary files /dev/null and b/audio/skill/zhangu1.mp3 differ diff --git a/audio/skill/zhangu2.mp3 b/audio/skill/zhangu2.mp3 new file mode 100644 index 000000000..2082af4d0 Binary files /dev/null and b/audio/skill/zhangu2.mp3 differ diff --git a/audio/skill/zongfan1.mp3 b/audio/skill/zongfan1.mp3 new file mode 100644 index 000000000..ec6c28c71 Binary files /dev/null and b/audio/skill/zongfan1.mp3 differ diff --git a/audio/skill/zongfan2.mp3 b/audio/skill/zongfan2.mp3 new file mode 100644 index 000000000..af4e6f375 Binary files /dev/null and b/audio/skill/zongfan2.mp3 differ diff --git a/card/guozhan.js b/card/guozhan.js index 91acec800..eb3d536d5 100644 --- a/card/guozhan.js +++ b/card/guozhan.js @@ -4,6 +4,227 @@ game.import('card',function(lib,game,ui,get,ai,_status){ name:'guozhan', connect:true, card:{ + gz_haolingtianxia:{ + audio:true, + mode:['guozhan'], + fullskin:true, + type:'trick', + enable:true, + filterTarget:function(card,player,target){ + return target!=player&&!target.isMinHp(); + }, + content:function(){ + 'step 0' + event.list=game.filterPlayer(function(current){ + return current!=target; + }).sortBySeat(); + 'step 1' + if(!target.isIn()){ + event.finish(); + return; + } + var current=event.list.shift(); + if(!current||!current.isIn()||current.hasSkill('diaohulishan')){ + if(event.list.length) event.redo(); + else event.finish(); + return; + } + event.current=current; + if(current.identity!='wei'){ + current.chooseToDiscard('he','弃置一张牌,并视为对'+get.translation(target)+'使用一张【杀】,或点击「取消」弃置其一张牌').set('ai',function(card){ + if(!_status.event.goon) return 0; + return 5-get.value(card); + }).set('goon',(get.effect(target,{name:'guohe'},current)1) break; + } + if(list.length>1) target.chooseToDiscard('h',true,'请弃置两张类型不同的手牌',2,function(card,player){ + if(!ui.selected.cards.length) return true; + return get.type2(card,target)!=get.type2(ui.selected.cards[0],target); + }).set('complexCard',true); + else if(list.length==1) target.chooseToDiscard('h',true); + else event.finish(); + } + else{ + player.discardPlayerCard(target,'h',true,'visible'); + } + 'step 3' + if(target.identity!='qun'||!result.bool||!result.cards||!result.cards.length||target.countCards('h')>0||target.hp<1) event.finish(); + else target.draw(Math.min(5,target.hp)); + }, + ai:{ + order:6, + value:10, + useful:6, + tag:{ + discard:1.5, + loseCard:1.5, + }, + result:{target:-1.5}, + }, + }, liulongcanjia:{ audio:true, mode:['guozhan'], @@ -1449,6 +1670,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){ huxinjing_bg:'镜', huxinjing:'护心镜', huxinjing_info:'当你受到伤害时,若伤害值大于或等于你的体力值,则你可以将【护心镜】置入弃牌堆,然后防止此伤害。', + gz_haolingtianxia:'号令天下', + gz_haolingtianxia_info:'出牌阶段,对一名体力值不为全场最少的角色使用。所有其他角色依次选择一项:①弃置一张牌(魏势力角色无需弃牌),视为对目标角色使用一张【杀】;②弃置目标角色的一张牌(魏势力角色改为获得其一张牌)。', + gz_kefuzhongyuan:'克复中原', + gz_kefuzhongyuan_info:'出牌阶段,对任意名角色使用。目标角色选择一项:①视为使用一张【杀】(蜀势力角色以此法使用【杀】的伤害值基数+1);②摸一张牌(蜀势力角色改为摸两张牌)。', + gz_guguoanbang:'固国安邦', + gz_guguoanbang_info:'出牌阶段,对你自己使用。你摸八张牌,然后弃置至少六张手牌。然后若你的势力为吴,则你可以将你以此法弃置的牌交给其他吴势力角色(每名角色至多获得两张牌)。', + gz_wenheluanwu:'文和乱武', + gz_wenheluanwu_info:'出牌阶段,对所有角色使用。目标角色展示所有手牌,然后你选择一项:①令其弃置两张类型不同的手牌;②你弃置其一张手牌。然后若其为群势力角色且其没有手牌,则其将手牌摸至当前体力值(至多为5)。', }, list:[ ['heart',9,'yuanjiao'], diff --git a/character/diy.js b/character/diy.js index f60595728..63aeb3ca6 100755 --- a/character/diy.js +++ b/character/diy.js @@ -2544,8 +2544,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ result:{ player:function(player){ if(player.countCards('he',function(card){ - if(get.type(card)=='equip') return get.value(card)<8; - return get.value(card)<6; + if(get.type(card,player)=='equip') return get.value(card)<6; + return get.value(card)<5; })<2) return 0; return player.getUseValue({name:'kaihua'}); }, diff --git a/character/mobile.js b/character/mobile.js index bfba30b76..fba71fd66 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -8585,7 +8585,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ spcunsi2:'存嗣', spcunsi_info:'出牌阶段限一次,你可将武将牌翻至背面并选择一名其他角色。其从牌堆或弃牌堆中获得一张【杀】,且下一张杀的伤害值基数+1。', spguixiu:'闺秀', - spguixiu_info:'锁定技,当你受到伤害后,若你的武将牌背面朝上,则你将武将牌翻至正面。当你的武将牌从背面翻至背面时,你摸一张牌。', + spguixiu_info:'锁定技,当你受到伤害后,若你的武将牌背面朝上,则你将武将牌翻至正面。当你的武将牌从背面翻至正面时,你摸一张牌。', sp_xinpi:'SP辛毗', spyinju:'引裾', spyinju2:'引裾', diff --git a/character/rank.js b/character/rank.js index 1977d7912..954dc44e1 100644 --- a/character/rank.js +++ b/character/rank.js @@ -1043,6 +1043,7 @@ window.noname_character_rank={ 'ns_fanchou', 'zhangchunhua', 'weiguan', + 're_chenqun', ], d:[ 'lvmeng', @@ -1062,6 +1063,7 @@ window.noname_character_rank={ 'ol_guohuai', 'junk_simayi', 'key_youta', + 'old_chenqun', ], rarity:{ legend:[ @@ -1667,6 +1669,7 @@ window.noname_character_rank={ 'junk_zhangrang', 'junk_simayi', 'wolongfengchu', + 're_chenqun', 'key_youta', ], } diff --git a/character/refresh.js b/character/refresh.js index 0298f8fd6..284717279 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -12,12 +12,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua'], refresh_yijiang2:['old_madai','wangyi','guanzhang','xin_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_bulianshi','xin_liubiao'], refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','re_yufan','re_liru','re_manchong','re_fuhuanghou'], - refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan','re_caozhen','re_zhoucang'], + refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan','re_caozhen','re_zhoucang','re_chenqun'], refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu','re_gongsunyuan'], }, }, connect:true, character:{ + re_chenqun:['math','wei',3,['redingpin','refaen']], re_zhoucang:['male','shu',4,['rezhongyong']], ol_zhurong:['female','shu',4,['juxiang','lieren','changbiao'],['unseen']], re_zhangchunhua:['female','wei',3,['rejueqing','reshangshi']], @@ -133,6 +134,84 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_xushu:['zhaoyun','sp_zhugeliang'], }, skill:{ + //界陈群 + redingpin:{ + audio:2, + enable:'phaseUse', + onChooseToUse:function(event){ + if(event.type!='phase'||game.online) return; + var list=[],player=event.player; + player.getHistory('useCard',function(evt){ + list.add(get.type2(evt.card)); + }); + player.getHistory('lose',function(evt){ + if(evt.type!='discard'||evt.getParent(2).redingpin_ignore) return; + for(var i of evt.cards2){ + list.add(get.type2(i,evt.hs.contains(i)?player:false)); + } + }) + event.set('redingpin_types',list); + }, + filter:function(event,player){ + var list=event.redingpin_types||[]; + return player.countCards('he',function(card){ + return !list.contains(get.type2(card)); + })>0; + }, + filterCard:function(card){ + var list=_status.event.redingpin_types||[]; + return !list.contains(get.type2(card)); + }, + position:'he', + filterTarget:function(card,player,target){ + return !target.hasSkill('redingpin2'); + }, + content:function(){ + 'step 0' + target.judge(function(card){ + var evt=_status.event.getParent('redingpin'),suit=get.suit(card); + switch(suit){ + case 'club': case 'spade':return evt.target.hp; + case 'diamond':return get.sgn(get.attitude(evt.target,evt.player))*-3; + } + return 0; + }); + 'step 1' + switch(result.suit){ + case 'spade': case 'club': + if(target.hp>0) target.draw(Math.min(3,target.hp)); + target.addTempSkill('redingpin2'); + break; + case 'heart': + event.getParent().redingpin_ignore=true; + break; + case 'diamond': + player.turnOver(); + break; + } + }, + ai:{ + order:9, + result:{ + target:function(player,target){ + if(player.isTurnedOver()) return target.hp; + var card=ui.cardPile.firstChild; + if(!card) return; + if(get.color(card)=='black') return target.hp; + return 0; + }, + }, + }, + }, + redingpin2:{charlotte:true}, + refaen:{ + audio:2, + trigger:{global:['turnOverAfter','linkAfter']}, + logTarget:'player', + content:function(){ + trigger.player.draw(); + }, + }, //界曹彰 xinjiangchi:{ trigger:{player:'phaseDrawEnd'}, @@ -9392,6 +9471,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ollihuo_info:'你使用普通的【杀】可以改为火【杀】,若此【杀】造成过伤害,你失去1点体力;你使用火【杀】可以多选择一个目标。你每回合使用的第一张牌如果是【杀】,则此【杀】结算完毕后可置于你的武将牌上。', xinjiangchi:'将驰', xinjiangchi_info:'摸牌阶段结束时,你可选择:①摸一张牌。②摸两张牌,然后本回合内不能使用或打出【杀】。③弃置一张牌,然后本回合内可以多使用一张【杀】,且使用【杀】无距离限制。', + re_chenqun:'界陈群', + redingpin:'定品', + redingpin_info:'出牌阶段,你可以弃置一张本回合未使用过/弃置过的类型的牌并选择一名角色。其进行判定,若结果为:黑色,其摸X张牌(X为其体力值且至多为3)且本回合内不能再成为〖定品〗的目标;红桃,你令此次弃置的牌不计入〖定品〗弃置牌合法性的检测;方片,你将武将牌翻面。', + refaen:'法恩', + refaen_info:'一名角色翻面或横置后,你可令其摸一张牌。', refresh_standard:'界限突破·标', refresh_feng:'界限突破·风', diff --git a/character/sp.js b/character/sp.js index 0e49de400..8012ca797 100755 --- a/character/sp.js +++ b/character/sp.js @@ -16455,7 +16455,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ daoshu_info:'出牌阶段,你可以选择一个花色并获得一名其他角色的一张手牌。若此牌花色与你选择的相同,则你对其造成1点伤害。否则你须交给其一张与此牌花色不同的手牌(没有则展示手牌),且本阶段内不能再发动〖盗书〗', xinshanjia:"缮甲", - "xinshanjia_info":"出牌阶段开始时,你可以摸三张牌,然后弃置3-X张牌(X为你本局游戏内失去过的装备区内的牌的数目且至多为3)。若你没有以此法弃置基本牌或锦囊牌,则你可以视为使用了一张不计入出牌阶段使用次数的【杀】。", + "xinshanjia_info":"出牌阶段开始时,你可以摸三张牌,然后弃置3-X张牌(X为你本局游戏内失去过的装备牌的数目且至多为3)。若你没有以此法弃置基本牌或锦囊牌,则你可以视为使用了一张不计入出牌阶段使用次数的【杀】。", "new_meibu":"魅步", "new_meibu_info":"其他角色的出牌阶段开始时,若你在其攻击范围内,你可以弃置一张牌,令该角色于本回合内获得技能〖止息〗。若你以此法弃置的牌不是【杀】或黑色锦囊牌,则本回合其与你的距离视为1。", "new_mumu":"穆穆", diff --git a/character/sp2.js b/character/sp2.js index 76c1917d8..0dd12a196 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -2728,15 +2728,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ player.awakenSkill('decadexushen'); player.addSkill('decadezhennan'); - player.recover(); player.addTempSkill('decadexushen2'); trigger.decadexushen=true; + player.recover(); }, }, decadexushen2:{ trigger:{player:'dyingAfter'}, forced:true, popup:false, + charlotte:true, filter:function(event,player){ return event.decadexushen==true&&!game.hasPlayer(function(current){ return current.name=='guansuo'||current.name2=='guansuo'; diff --git a/character/yijiang.js b/character/yijiang.js index dc62cc8a3..1d14f7147 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -12095,7 +12095,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhuran:['re_zhuran','xin_zhuran','zhuran','old_zhuran'], liru:['re_liru','xin_liru','liru'], fuhuanghou:['re_fuhuanghou','xin_fuhuanghou','fuhuanghou','old_fuhuanghou'], - chenqun:['chenqun','old_chenqun'], + chenqun:['chenqun','re_chenqun','old_chenqun'], hanhaoshihuan:['re_hanhaoshihuan','hanhaoshihuan'], caozhen:['re_caozhen','caozhen','old_caozhen'], wuyi:['re_wuyi','wuyi'], @@ -12112,6 +12112,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jikang:['re_jikang','jikang'], xinxianying:['re_xinxianying','xinxianying','ol_xinxianying','sp_xinxianying'], gongsunyuan:['re_gongsunyuan','gongsunyuan'], + zhoucang:['re_zhoucang','zhoucang'], }, translate:{ old_huaxiong:'华雄', diff --git a/game/asset.js b/game/asset.js index 7a8f2f5f9..14ebd89f0 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.110.6', + 'v1.9.110.7', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -724,6 +724,10 @@ window.noname_asset_list=[ 'audio/die/panshu.mp3', 'audio/die/shibao.mp3', 'audio/die/weiguan.mp3', + 'audio/die/huangzu.mp3', + 'audio/die/re_chenqun.mp3', + 'audio/die/ruanyu.mp3', + 'audio/die/zhangmiao.mp3', 'audio/skill/decadezishou1.mp3', 'audio/skill/decadezishou2.mp3', @@ -3194,6 +3198,22 @@ window.noname_asset_list=[ 'audio/skill/zhongyun2.mp3', 'audio/skill/zhuosheng1.mp3', 'audio/skill/zhuosheng2.mp3', + 'audio/skill/miaoxian1.mp3', + 'audio/skill/miaoxian2.mp3', + 'audio/skill/mouni1.mp3', + 'audio/skill/mouni2.mp3', + 'audio/skill/redingpin1.mp3', + 'audio/skill/redingpin2.mp3', + 'audio/skill/refaen1.mp3', + 'audio/skill/refaen2.mp3', + 'audio/skill/wangong1.mp3', + 'audio/skill/wangong2.mp3', + 'audio/skill/xingzuo1.mp3', + 'audio/skill/xingzuo2.mp3', + 'audio/skill/zhangu1.mp3', + 'audio/skill/zhangu2.mp3', + 'audio/skill/zongfan1.mp3', + 'audio/skill/zongfan2.mp3', 'audio/voice/male/0.mp3', 'audio/voice/male/1.mp3', @@ -3671,6 +3691,10 @@ window.noname_asset_list=[ 'image/card/cheliji_feilunzhanyu.png', 'image/card/cheliji_sichengliangyu.png', 'image/card/cheliji_tiejixuanyu.png', + 'image/card/gz_guguoanbang.png', + 'image/card/gz_haolingtianxia.png', + 'image/card/gz_kefuzhongyuan.png', + 'image/card/gz_wenheluanwu.png', 'image/character/shenpei.jpg', 'image/character/re_menghuo.jpg', @@ -4036,6 +4060,7 @@ window.noname_asset_list=[ 'image/character/ns_sunyi.jpg', 'image/character/ns_zhangning.jpg', 'image/character/ns_yanghu.jpg', + 'image/character/re_chenqun.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', diff --git a/game/game.js b/game/game.js index 29d024b1d..826b92375 100644 --- a/game/game.js +++ b/game/game.js @@ -10322,6 +10322,7 @@ targets:event.targets2||result.targets, }; var next=player.useCard(card,event.targets2||result.targets); + next.oncard=event.oncard; if(cards) next.cards=cards.slice(0); if(event.nopopup) next.nopopup=true; if(event.animate===false) next.animate=false; @@ -14238,13 +14239,13 @@ } } event.id=get.id(); - if(event.oncard){ - event.oncard(event.card,event.player); - } event.excluded=[]; event.directHit=[]; event.customArgs={default:{}}; - event.baseDamage=get.info(card,false).baseDamage||1; + if(typeof event.baseDamage!='number') event.baseDamage=get.info(card,false).baseDamage||1; + if(event.oncard){ + event.oncard(event.card,event.player); + } player.actionHistory[player.actionHistory.length-1].useCard.push(event); if(event.addCount!==false){ if(player.stat[player.stat.length-1].card[card.name]==undefined){ @@ -20085,7 +20086,10 @@ if(reason&&reason.source) next.source=reason.source; next.setContent('dying'); next.filterStop=function(){ - return this.player.hp>0; + if(this.player.hp>0){ + delete this.filterStop; + return true; + } }; return next; }, diff --git a/game/update.js b/game/update.js index 9981d92a5..5217ca555 100644 --- a/game/update.js +++ b/game/update.js @@ -1,16 +1,15 @@ window.noname_update={ - version:'1.9.110.6.1', - update:'1.9.110.6', + version:'1.9.110.7', + update:'1.9.110.6.1', changeLog:[ - '武将设计比赛2021:三国组', - '黄祖', - '界曹彰、曹纯、大小乔技能调整', + '界陈群', + '国战势力锦囊', 'bug修复', ], files:[ //'card/extra.js', //'card/gujian.js', - //'card/guozhan.js', + 'card/guozhan.js', //'card/gwent.js', //'card/huanlekapai.js', //'card/mtg.js', @@ -21,27 +20,27 @@ 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/rank.js', + 'character/refresh.js', //'character/shenhua.js', - //'character/sp.js', - //'character/sp2.js', + 'character/sp.js', + 'character/sp2.js', //'character/tw.js', //'character/standard.js', //'character/swd.js', //'character/xianjian.js', //'character/xinghuoliaoyuan.js', - //'character/yingbian.js', + 'character/yingbian.js', 'character/yijiang.js', //'character/yxs.js', //'extension/boss/extension.js', @@ -52,7 +51,7 @@ window.noname_update={ //'mode/brawl.js', //'mode/chess.js', //'mode/doudizhu.js', - //'mode/guozhan.js', + 'mode/guozhan.js', //'mode/identity.js', //'mode/single.js', //'mode/stone.js', diff --git a/image/card/gz_guguoanbang.png b/image/card/gz_guguoanbang.png new file mode 100644 index 000000000..d92f7b41b Binary files /dev/null and b/image/card/gz_guguoanbang.png differ diff --git a/image/card/gz_haolingtianxia.png b/image/card/gz_haolingtianxia.png new file mode 100644 index 000000000..9539b6470 Binary files /dev/null and b/image/card/gz_haolingtianxia.png differ diff --git a/image/card/gz_kefuzhongyuan.png b/image/card/gz_kefuzhongyuan.png new file mode 100644 index 000000000..1c583a032 Binary files /dev/null and b/image/card/gz_kefuzhongyuan.png differ diff --git a/image/card/gz_wenheluanwu.png b/image/card/gz_wenheluanwu.png new file mode 100644 index 000000000..92ade689e Binary files /dev/null and b/image/card/gz_wenheluanwu.png differ diff --git a/image/character/re_chenqun.jpg b/image/character/re_chenqun.jpg new file mode 100644 index 000000000..fb615793b Binary files /dev/null and b/image/character/re_chenqun.jpg differ diff --git a/mode/guozhan.js b/mode/guozhan.js index 8340d1b12..3a4e0d793 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -158,9 +158,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ game.chooseCharacter(); } "step 2" - //game.broadcast(function(cardtag){ - // _status.cardtag=cardtag; - //},_status.cardtag); + game.broadcastAll(function(){ + lib.inpile.removeArray(['gz_haolingtianxia','gz_kefuzhongyuan','gz_guguoanbang','gz_wenheluanwu']); + }); if(ui.coin){ _status.coinCoeff=get.coinCoeff([game.me.name1,game.me.name2]); } @@ -383,8 +383,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gz_shixie:['male','qun',3,['gzbiluan','gzlixia'],['doublegroup:qun:wu','gzskin']], gz_zhanglu:['male','qun',3,['gzbushi','gzmidao'],['doublegroup:qun:wei','gzskin']], gz_dongzhao:['male','wei',3,['quanjin','zaoyun']], - gz_re_xushu:['male','shu',4,['zhuhai','gzpozhen','gzjiancai'],['gzskin']], - gz_wujing:['male','wu',4,['heji'],['gzskin']], + gz_re_xushu:['male','shu',4,['gzzhuhai','gzpozhen','gzjiancai'],['gzskin']], + gz_wujing:['male','wu',4,['donggui','fengyang'],['gzskin']], gz_yanbaihu:['male','qun',4,['gzzhidao','gzyjili'],['gzskin']], gz_caocao:['male','wei',4,['jianxiong']], @@ -519,6 +519,63 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } }, skill:{ + gzzhuhai:{ + audio:'zhuhai', + audioname:['gz_re_xushu'], + trigger:{global:'phaseJieshuBegin'}, + direct:true, + filter:function(event,player){ + return event.player.isAlive()&&event.player.getStat('damage')&& + lib.filter.targetEnabled({name:'sha'},player,event.player)&&(player.hasSha()||_status.connectMode&&player.countCards('h')>0); + }, + content:function(){ + var next=player.chooseToUse(function(card,player,event){ + if(get.name(card)!='sha') return false; + return lib.filter.filterCard.apply(this,arguments); + },'诛害:是否对'+get.translation(trigger.player)+'使用一张杀?').set('logSkill','gzzhuhai').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',trigger.player); + player.addTempSkill('gzzhuhai2'); + next.oncard=function(card,player){ + if(trigger.player.getHistory('sourceDamage',function(evt){ + return evt.player.isFriendOf(player); + }).length){ + player.addTempSkill('gzzhuhai2'); + card.gzzhuhai_tag=true; + } + } + }, + ai:{ + unequip_ai:true, + skillTagFilter:function(player,tag,arg){ + var evt=_status.event.getParent(); + if(evt.name!='gzzhuhai') return false; + if(!target.getHistory('sourceDamage',function(evt){ + return evt.player.sameIdentityAs(player); + }).length) return false; + return true; + }, + }, + }, + gzzhuhai2:{ + trigger:{player:'shaMiss'}, + forced:true, + popup:false, + filter:function(event,player){ + return event.card.gzzhuhai_tag==true&&event.target.countCards('he')>0; + }, + content:function(){ + player.line(trigger.target); + trigger.target.chooseToDiscard('he',true); + }, + ai:{ + unequip:true, + skillTagFilter:function(player,tag,arg){ + if(!arg||!arg.card||!arg.card.gzzhuhai_tag) return false; + }, + }, + }, quanjin:{ audio:2, enable:'phaseUse', @@ -8931,6 +8988,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gzpozhen_info:'限定技,其他角色的回合开始时,你可以令其本回合不可使用、打出或重铸手牌;若其处于队列或围攻关系中,你可依次弃置此队列或参与围攻关系的其他角色的一张牌。', gzjiancai:'荐才', gzjiancai_info:'副将技,此武将牌上单独的阴阳鱼个数-1。与你势力相同的角色即将受到伤害而进入濒死状态时,你可以防止此伤害,若如此做,你须变更副将;与你势力相同的角色变更副将时,其额外获得两张备选武将牌。', + gzzhuhai:'诛害', + gzzhuhai_info:'其他角色的结束阶段开始时,若其本回合内造成过伤害,则你可以对其使用一张【杀】(无距离限制)。若其本回合内对与你势力相同的角色造成过伤害,则此【杀】无视防具,且当其抵消此【杀】后,其须弃置一张牌。', gz_tangzi:'唐咨', gz_mengda:'孟达', @@ -8973,7 +9032,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gzyjili2:'寄篱', gzyjili_info:'副将技,锁定技,你计算体力上限时减少1个单独的阴阳鱼,当你成为红色基本牌或红色普通锦囊牌的唯一目标后,你令此牌的使用者于此牌结算完成后视为对你使用一张牌名和属性相同的牌。当你于一回合内第二次受到伤害时,你防止此伤害并移除此武将牌。', wujing:'吴景', - donggui:'东归', + donggui:'调归', donggui_info:'出牌阶段限一次,你可以暗置武将牌均明置的一名其他角色一张武将牌,视为对其使用【调虎离山】,且其本回合不能明置此武将牌。若因此形成队列,你摸X张牌(X为该队列中的角色数)。', fengyang:'风扬', fengyang_info:'阵法技,结束阶段,你所在队列的角色可以依次弃置一张装备区里的牌,然后摸两张牌。', @@ -9690,6 +9749,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ ['diamond',6,'dinglanyemingzhu'], ['heart',13,'liulongcanjia'], + + ['spade',12,'gz_haolingtianxia'], + ['diamond',1,'gz_kefuzhongyuan'], + ['heart',1,'gz_guguoanbang'], + ['club',12,'gz_wenheluanwu'], ], element:{ content:{