From 7762a48c9133ace9f7926dd9dab90b16ce76c460 Mon Sep 17 00:00:00 2001 From: mengxinzxz <139629761+mengxinzxz@users.noreply.github.com> Date: Sat, 28 Oct 2023 02:14:46 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E6=98=9FSP=E7=94=98=E5=A4=AB=E4=BA=BA?= =?UTF-8?q?=E4=BB=8E=E7=92=80=E7=92=A8=E6=98=9F=E6=B2=B3=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E5=88=B0=E7=BA=BF=E4=B8=8B=E5=8C=85=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?2023=E6=A0=87=E5=87=86=E7=89=88=E7=94=98=E5=A4=AB=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/offline.js | 5 ++++- character/sp.js | 8 ++------ character/standard.js | 31 ++++++++++++++++++++++++++++++- 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/character/offline.js b/character/offline.js index 6119e68cf..44ce10bbb 100644 --- a/character/offline.js +++ b/character/offline.js @@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connectBanned:['zhangliang'], characterSort:{ offline:{ - offline_star:["sp_xiahoushi","jsp_zhaoyun","huangjinleishi","sp_pangtong","sp_daqiao","sp_ganning","sp_xiahoudun","sp_lvmeng","sp_zhangfei","sp_liubei","old_machao","zhangliang","jsp_caoren"], + offline_star:['jsp_ganfuren',"sp_xiahoushi","jsp_zhaoyun","huangjinleishi","sp_pangtong","sp_daqiao","sp_ganning","sp_xiahoudun","sp_lvmeng","sp_zhangfei","sp_liubei","old_machao","zhangliang","jsp_caoren"], offline_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'], offline_yijiang:['ol_xinxianying'], offline_luanwu:["ns_lijue","ns_zhangji","ns_fanchou"], @@ -19,6 +19,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ + jsp_ganfuren:['female','shu',3,['shushen','shenzhi'],['character:gz_ganfuren']], ol_xinxianying:['female','wei',3,['xincaishi','xinzhongjian']], zhangliang:["male","qun",4,["old_jijun","old_fangtong"]], jsp_caoren:['male','wei',4,['kuiwei','yanzheng']], @@ -6683,6 +6684,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_machao_prefix:'J.SP', jsp_caoren:'☆SP曹仁', jsp_caoren_prefix:'☆SP', + jsp_ganfuren:'☆SP甘夫人', + jsp_ganfuren_prefix:'☆SP', zhangliang:'SP张梁', zhangliang_prefix:'SP', ol_xinxianying:'将辛宪英', diff --git a/character/sp.js b/character/sp.js index 25e7a6f12..c163b76fc 100755 --- a/character/sp.js +++ b/character/sp.js @@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ sp:{ - sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ganfuren","ol_bianfuren","qinghegongzhu","tengfanglan","ruiji",'caoxiancaohua'], + sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ol_bianfuren","qinghegongzhu","tengfanglan","ruiji",'caoxiancaohua'], sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao','ol_chendeng','jin_yanghu','wangyan','xiahouxuan','quhuang','zhanghua','wangguan','sunhong','caoxi'], sp_tianzhu:['niujin','hejin','hansui',"wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda","ahuinan","dongtuna",'ol_wenqin'], sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu',"daxiaoqiao","jin_guohuai"], @@ -182,7 +182,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ kanze:['male','wu',3,['xiashu','kuanshi']], heqi:['male','wu',4,['olqizhou','olshanxi']], - ganfuren:['female','shu',3,['shushen','shenzhi']], //mifuren:['female','shu',3,['guixiu','cunsi']], yuejin:['male','wei',4,['xiaoguo']], sp_dongzhuo:['male','qun',5,['hengzheng']], @@ -25263,7 +25262,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yuantanyuanshang:['yuantanyuanshang','yuantanyuanxiyuanshang'], ruiji:['ruiji','dc_ruiji'], jsp_huangyueying:['jsp_huangyueying','re_jsp_huangyueying'], - ganfuren:['ganfuren','dc_ganfuren'], + ganfuren:['ganfuren','dc_ganfuren','jsp_ganfuren'], wenqin:['wenqin','pe_wenqin'], zhouqun:['ol_zhouqun','zhouqun'], qianzhao:['ol_qianzhao','qianzhao'], @@ -25351,9 +25350,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhugejin:'诸葛瑾', zhugeke:'诸葛恪', guanyinping:'关银屏', - gz_ganfuren:'甘夫人', - ganfuren:'SP甘夫人', - ganfuren_prefix:'SP', sunhao:'孙皓', chengyu:'程昱', simalang:'司马朗', diff --git a/character/standard.js b/character/standard.js index a96662ddd..9b1423e68 100755 --- a/character/standard.js +++ b/character/standard.js @@ -8,10 +8,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ standard_2008:["caocao","simayi","xiahoudun","zhangliao","xuzhu","guojia","zhenji","liubei","guanyu","zhangfei","zhugeliang","zhaoyun","machao","huangyueying","sunquan","ganning","lvmeng","huanggai","zhouyu","daqiao","luxun","sunshangxiang","huatuo","lvbu","diaochan"], standard_2013:["huaxiong","re_yuanshu","re_xushu","re_lidian"], standard_2019:["gongsunzan","xf_yiji"], - standard_2023:["std_panfeng"], + standard_2023:["std_panfeng",'ganfuren'], }, }, character:{ + ganfuren:['female','shu',3,['stdshushen','shenzhi']], std_panfeng:['male','qun',4,['stdkuangfu']], re_lidian:['male','wei',3,['xunxun','xinwangxi']], re_xushu:['male','shu',4,['zhuhai','qianxin']], @@ -94,6 +95,31 @@ game.import('character',function(lib,game,ui,get,ai,_status){ guanyu:['zhangfei','liaohua'], }, skill:{ + //标准版甘夫人 + stdshushen:{ + audio:'shushen', + trigger:{player:'recoverEnd'}, + direct:true, + content:function(){ + 'step 0' + event.num=trigger.num||1; + 'step 1' + player.chooseTarget(get.prompt2('stdshushen'),lib.filter.notMe).set('ai',function(target){ + return get.attitude(_status.event.player,target); + }); + 'step 2' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('stdshushen',target); + target.draw(target.countCards('h')?1:2); + if(event.num>1&&player.hasSkill('stdshushen')){ + event.num--; + event.goto(1); + } + } + }, + ai:{threaten:0.8,expose:0.1}, + }, stdkuangfu:{ audio:'xinkuangfu', trigger:{source:'damageSource'}, @@ -2718,6 +2744,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ std_panfeng:'潘凤', stdkuangfu:'狂斧', stdkuangfu_info:'锁定技。出牌阶段限一次。当你使用【杀】对其他角色造成伤害后,若其体力值:小于你,你摸两张牌;不小于你,你失去1点体力。', + ganfuren:'甘夫人', + stdshushen:'淑慎', + stdshushen_info:'当你回复1点体力时,你可以令一名其他角色摸一张牌(若其没有手牌则改为摸两张牌)。', standard_2008:"2008版标准包", standard_2013:"2013版标准包", From 9862f0c4e55d2bda8ce086f35dd59f1df5ee76d1 Mon Sep 17 00:00:00 2001 From: mengxinzxz <139629761+mengxinzxz@users.noreply.github.com> Date: Sat, 28 Oct 2023 02:23:25 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=E6=9D=8E=E5=85=B8=E3=80=81=E5=BE=90?= =?UTF-8?q?=E5=BA=B6=E5=88=86=E5=8C=85=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/old.js | 5 +---- character/refresh.js | 12 +++++++++--- character/standard.js | 8 +++----- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/character/old.js b/character/old.js index fcd005353..0d6d7e43d 100755 --- a/character/old.js +++ b/character/old.js @@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old:{ old_standard:['ol_yuanshu'], old_shenhua:['old_shen_zhaoyun','old_caocao',"yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","old_xiaoqiao","pangde","xuhuang",'junk_sunquan',"huangzhong","new_caoren",'old_chendao'], - old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong",'old_re_lidian','old_guanyu'], + old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong",'old_guanyu'], old_yijiang1:["masu","xushu","xin_yujin","old_xusheng","old_lingtong","fazheng",'old_gaoshun','re_yujin'], old_yijiang2:["old_zhonghui","madai",'old_handang','old_liubiao','oldre_liubiao','old_guanzhang','old_wangyi'], old_yijiang3:["liru","old_zhuran","old_fuhuanghou","old_caochong"], @@ -25,7 +25,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_caocao:['male','shen',3,['junkguixin','feiying'],['die_audio']], old_chendao:['male','shu',4,['drlt_wanglie']], old_liyan:['male','shu',3,['duliang','fulin']], - old_re_lidian:['male','wei',3,['xunxun','wangxi']], old_guanzhang:['male','shu',4,['old_fuhun']], new_caoren:['male','wei',4,['jushou']], huangzhong:['male','shu',4,['liegong']], @@ -1192,8 +1191,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ junk_sunquan_prefix:'旧神', new_caoren:'旧曹仁', new_caoren_prefix:'旧', - old_re_lidian:'旧李典', - old_re_lidian_prefix:'旧', old_liyan:'旧李严', old_liyan_prefix:'旧', old_chendao:'旧陈到', diff --git a/character/refresh.js b/character/refresh.js index 274209038..84de5c643 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -4,7 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'refresh', characterSort:{ refresh:{ - refresh_standard:["re_caocao","re_simayi","re_guojia","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong",'re_gongsunzan'], + refresh_standard:["re_caocao","re_simayi","re_guojia","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong",'re_gongsunzan',"re_lidian","re_xushu"], refresh_feng:['caoren','ol_xiahouyuan','ol_weiyan','ol_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji','ol_huangzhong'], refresh_huo:["ol_sp_zhugeliang","ol_xunyu","ol_dianwei","ol_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"], refresh_lin:['re_menghuo','ol_sunjian','re_caopi','ol_xuhuang','ol_dongzhuo','ol_zhurong','re_jiaxu','ol_lusu'], @@ -20,6 +20,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, connect:true, character:{ + re_xushu:['male','shu',4,['zhuhai','qianxin']], + re_lidian:['male','wei',3,['xunxun','xinwangxi']], re_zhongyao:['male','wei',3,['rehuomo','zuoding'],['clan:颍川钟氏']], xin_zhangliang:['male','qun',4,['rejijun','refangtong'],['unseen']], re_simalang:['male','wei',3,['requji','rejunbing'],['unseen']], @@ -15279,8 +15281,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ decadexianzhen_info:'每回合限一次。出牌阶段,你可以和一名其他角色拼点。若你赢:本回合你无视该角色的防具,且对其使用牌没有次数和距离限制,且本回合对其使用牌造成伤害时,此伤害+1(每种牌名每回合限一次);若你没赢:你本回合内不能使用【杀】,且【杀】不计入手牌上限。', decadejinjiu:'禁酒', decadejinjiu_info:'锁定技。你的【酒】的牌名均视为【杀】且点数视为K;你的回合内,其他角色不能使用【酒】。', - dc_xushu:'界徐庶', - dc_xushu_prefix:'界', + dc_xushu:'新杀徐庶', + dc_xushu_prefix:'新杀', rezhuhai:'诛害', rezhuhai_info:'其他角色的回合结束时,若其本回合内造成过伤害,则你可以选择一项:⒈将一张手牌当做【杀】对其使用。⒉视为对其使用一张【过河拆桥】。', xsqianxin:'潜心', @@ -15477,6 +15479,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_lingtong_prefix:'OL界', olxuanfeng:'旋风', olxuanfeng_info:'当你一次性失去至少两张牌后,或失去装备区的牌后,你可以依次弃置一至两名其他角色的共计两张牌。', + re_lidian:'界李典', + re_lidian_prefix:'界', + re_xushu:'界徐庶', + re_xushu_prefix:'界', refresh_standard:'界限突破·标', refresh_feng:'界限突破·风', diff --git a/character/standard.js b/character/standard.js index 9b1423e68..27a426093 100755 --- a/character/standard.js +++ b/character/standard.js @@ -6,16 +6,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ characterSort:{ standard:{ standard_2008:["caocao","simayi","xiahoudun","zhangliao","xuzhu","guojia","zhenji","liubei","guanyu","zhangfei","zhugeliang","zhaoyun","machao","huangyueying","sunquan","ganning","lvmeng","huanggai","zhouyu","daqiao","luxun","sunshangxiang","huatuo","lvbu","diaochan"], - standard_2013:["huaxiong","re_yuanshu","re_xushu","re_lidian"], + standard_2013:['old_re_lidian',"huaxiong","re_yuanshu"], standard_2019:["gongsunzan","xf_yiji"], standard_2023:["std_panfeng",'ganfuren'], }, }, character:{ + old_re_lidian:['male','wei',3,['xunxun','wangxi']], ganfuren:['female','shu',3,['stdshushen','shenzhi']], std_panfeng:['male','qun',4,['stdkuangfu']], - re_lidian:['male','wei',3,['xunxun','xinwangxi']], - re_xushu:['male','shu',4,['zhuhai','qianxin']], caocao:['male','wei',4,['jianxiong','hujia'],['zhu']], simayi:['male','wei',3,['fankui','guicai']], xiahoudun:['male','wei',4,['ganglie']], @@ -2739,14 +2738,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rewangzun_info:'锁定技,一名其他角色的准备阶段开始时,若其体力值大于你,你摸一张牌。然后若其身份为主公/主帅/君主/地主且明置,则你摸一张牌,且其本回合的手牌上限-1。', retongji:'同疾', retongji_info:'攻击范围内包含你的角色成为【杀】的目标时,若你不是此【杀】的使用者或目标,其可弃置一张牌,然后将此【杀】转移给你。', - re_xushu:'徐庶', - re_lidian:'李典', std_panfeng:'潘凤', stdkuangfu:'狂斧', stdkuangfu_info:'锁定技。出牌阶段限一次。当你使用【杀】对其他角色造成伤害后,若其体力值:小于你,你摸两张牌;不小于你,你失去1点体力。', ganfuren:'甘夫人', stdshushen:'淑慎', stdshushen_info:'当你回复1点体力时,你可以令一名其他角色摸一张牌(若其没有手牌则改为摸两张牌)。', + old_re_lidian:'李典', standard_2008:"2008版标准包", standard_2013:"2013版标准包", From 42da034c895a1561800156ef3b9c089b06f8f777 Mon Sep 17 00:00:00 2001 From: mengxinzxz <139629761+mengxinzxz@users.noreply.github.com> Date: Sat, 28 Oct 2023 02:32:23 +0800 Subject: [PATCH 03/13] =?UTF-8?q?star=E6=9B=B9=E4=BB=81=E3=80=90=E7=A0=BA?= =?UTF-8?q?=E9=94=8B=E3=80=91ai=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/sp2.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/character/sp2.js b/character/sp2.js index 290fa775b..f6f932dc0 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -196,13 +196,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return !player.getStorage('starlifeng_count').contains(get.color(card,player))||_status.connectMode; })) return false; }, - order:function(item,player){ - if(player&&_status.event.type=='phase'){ - if(player.hasSkill('starsujin')&&Math.abs(player.countCards('h')-2*player.countCards('h',{type:'basic'}))==1) return 10; - return get.order({name:'sha'})+0.3; - } - return 2; - }, + order:10, }, group:'starlifeng_mark', subSkill:{ From b9f0cb876828cd8b9744ece62c6f1e8333fae6d8 Mon Sep 17 00:00:00 2001 From: mengxinzxz <139629761+mengxinzxz@users.noreply.github.com> Date: Sat, 28 Oct 2023 02:50:58 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E7=95=8C=E5=AD=99=E4=BC=91=E3=80=81?= =?UTF-8?q?=E7=95=8C=E6=9C=B1=E6=B2=BB=E6=95=88=E6=9E=9C=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/mobile.js | 82 +++++++++++++++++++++++---------------------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/character/mobile.js b/character/mobile.js index 90ea71d1e..175af643b 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -3362,36 +3362,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var num=1-trigger.player.hp; if(num>0) trigger.player.recover(num); 'step 1' - if(player.hp==1&&player.maxHp==1){ - event.finish(); return; - } var hp=player.hp-1,maxhp=player.maxHp-1; - var choiceList=['失去'+hp+'点体力,令'+get.translation(trigger.player)+'获得'+hp+'点护甲','减'+maxhp+'点体力上限,令'+get.translation(trigger.player)+'获得'+maxhp+'点护甲']; - var choices=[]; - if(hp>0) choices.push('选项一'); - else choiceList[0]=''+choiceList[0]+''; - if(maxhp>0) choices.push('选项二'); - else choiceList[1]=''+choiceList[1]+''; - player.chooseControl(choices).set('prompt','安国:请选择一项').set('choiceList',choiceList).set('ai',()=>{ - var player=_status.event.player; - if(player.hp<=1||get.attitude(player,_status.event.getTrigger().player)>=4&&player.hp-1<0.4*(player.maxHp-1)&&player.maxHp>1) return '选项二'; - return '选项一'; - }); + if(hp>0&&maxhp>0){ + player.chooseControl(choices).set('prompt','安国:请选择一项').set('choiceList',[ + '失去'+hp+'点体力,令'+get.translation(trigger.player)+'获得1点护甲', + '减'+maxhp+'点体力上限,令'+get.translation(trigger.player)+'获得1点护甲' + ]).set('ai',()=>'选项一'); + } + else if(hp>0) event._result={control:'选项一'}; + else if(maxhp>0) event._result={control:'选项二'}; + else event.finish(); 'step 2' if(result.control=='选项一'){ var num=player.hp-1; - if(num>0){ - player.loseHp(num); - trigger.player.changeHujia(num); - } + if(num>0) player.loseHp(num); } - else { + else{ var num=player.maxHp-1; - if(num>0){ - player.loseMaxHp(num); - trigger.player.changeHujia(num); - } + if(num>0) player.loseMaxHp(num); } + trigger.player.changeHujia(1,null,true); } } } @@ -4871,13 +4861,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mobilexingxue:{ audio:2, trigger:{player:'phaseJieshuBegin'}, + filter:function(event,player){ + var num=player.storage.mobileyanzhu?player.maxHp:player.hp; + return num>0; + }, direct:true, content:function(){ 'step 0' - var num=player.hp; - if(!player.hasSkill('mobileyanzhu')){ - num=player.maxHp; - } + var num=player.storage.mobileyanzhu?player.maxHp:player.hp; player.chooseTarget([1,num],get.prompt2('mobilexingxue')).set('ai',function(target){ var att=get.attitude(_status.event.player,target); if(target.countCards('he')) return att; @@ -4904,7 +4895,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } 'step 3' if(event.current&&event.current.countCards('he')){ - if(player.hasSkill('mobileyanzhu')||event.targets2.length==1) event.current.chooseCard('选择一张牌置于牌堆顶','he',true); + if(player.storage.mobileyanzhu||event.targets2.length==1) event.current.chooseCard('选择一张牌置于牌堆顶','he',true); else event.current.chooseCardTarget({ prompt:'将一张牌置于牌堆顶,或交给其他目标角色', filterCard:true, @@ -4942,22 +4933,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } 'step 5' event.goto(2); - } + }, + derivation:'mobilexingxuex', }, mobileyanzhu:{ audio:2, enable:'phaseUse', usable:1, filterTarget:function(card,player,target){ - return target.countCards('he')>0&&target!=player; + return target.countCards('hej')>0&&target!=player; }, content:function(){ 'step 0' if(target.countCards('e')){ - target.chooseBool('是否将装备区内的所有牌交给'+get.translation(player)+'?','若选择“取消”,则其将获得你的一张牌').set('ai',function(){ + target.chooseBool('是否将装备区内的所有牌交给'+get.translation(player)+'?','若选择“取消”,则其将获得你区域里的一张牌').set('ai',function(){ + if(_status.event.effect>0) return false; if(_status.event.player.countCards('e')>=3) return false; return true; - }); + }).set('effect',get.effect(target,{name:'shunshou'},player,target)); } else{ player.gainPlayerCard(target,true,'he'); @@ -4968,22 +4961,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var es=target.getCards('e'); target.give(es,player,'give'); player.removeSkill('mobileyanzhu'); + player.storage.mobileyanzhu=true; + player.popup('兴学'); + game.log(player,'修改了技能','【兴学】'); } else{ - player.gainPlayerCard(target,true,'he'); + player.gainPlayerCard(target,true,'hej'); } }, ai:{ order:6, result:{ target:function(player,target){ - var ne=target.countCards('e'); + var ne=target.countCards('e'),nj=target.countCards('j'); + if(nj) return 2.5; if(!ne) return -2; if(ne>=2) return -ne; return 0; - } - } - } + }, + }, + }, }, //毛玠 bingqing:{ @@ -14678,6 +14675,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.countMark('spshidi')%2==0) return '转换技,锁定技。①准备阶段/结束阶段开始时,若你发动此分支的累计次数为奇数/偶数,则你获得一个“☯”。②若你的“☯”数为偶数,则你至其他角色的距离-1,且你使用的黑色【杀】不可被响应。③若你的“☯”数为奇数,则其他角色至你的距离+1,且你不可响应红色【杀】。'; return '转换技,锁定技。①准备阶段/结束阶段开始时,若你发动此分支的累计次数为奇数/偶数,则你获得一个“☯”。②若你的“☯”数为偶数,则你至其他角色的距离-1,且你使用的黑色【杀】不可被响应。③若你的“☯”数为奇数,则其他角色至你的距离+1,且你不可响应红色【杀】。'; }, + mobilexingxue:function(player){ + return lib.translate[(player.storage.mobileyanzhu?'mobilexingxuex':'mobilexingxue')+'_info']; + }, }, perfectPair:{ simazhao:['simayi','jin_simayi','jin_wangyuanji'], @@ -15255,9 +15255,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xin_sunxiu:'手杀界孙休', xin_sunxiu_prefix:'手杀界', mobileyanzhu:'宴诛', - mobileyanzhu_info:'出牌阶段限一次,你可以令一名有牌的其他角色选择一项:①你获得其装备区里所有的牌,然后你失去技能〖宴诛〗。②你获得其一张牌。', + mobileyanzhu_info:'出牌阶段限一次,你可以令一名有牌的其他角色选择一项:①你获得其装备区里所有的牌,然后你失去技能〖宴诛〗并修改技能〖兴学〗。②你获得其区域里的一张牌。', mobilexingxue:'兴学', - mobilexingxue_info:'结束阶段开始时,你可以令至多X名角色依次摸一张牌并将一张牌置于牌堆顶(X为你的体力值,若你未拥有〖宴诛〗,则将X改为你的体力上限,且其可以改为将一张牌交给一名其他目标角色)。', + mobilexingxue_info:'结束阶段开始时,你可以令至多X名角色依次摸一张牌并将一张牌置于牌堆顶(X为你的体力值)。', + mobilexingxuex:'兴学·改', + mobilexingxuex_info:'结束阶段开始时,你可以令至多X名角色依次摸一张牌并将一张牌置于牌堆顶或交给一名其他目标角色(X为你的体力上限)。', re_wuguotai:'手杀界吴国太', re_wuguotai_prefix:'手杀界', reganlu:'甘露', @@ -15347,7 +15349,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xin_zhuzhi:'手杀界朱治', xin_zhuzhi_prefix:'手杀界', sbanguo:'安国', - sbanguo_info:'①游戏开始时,你令一名其他角色获得1枚“安国”标记(有“安国”的角色手牌上限基数等于体力上限)。②出牌阶段开始时,你可以将一名有“安国”的角色的所有“安国”移动给一名本局游戏未获得过“安国”的其他角色。③当你受到伤害时,若有有“安国”的角色且伤害值不小于你的体力值且此伤害没有来源或来源没有“安国”,防止此伤害。④一名角色进入濒死状态时,若其有你因〖安国①〗获得的“安国”,你移去其该“安国”,令其将体力回复至1点。然后你选择一项:1.若你的体力值大于1,你失去体力至1点;2.若你的体力上限大于1,你将体力上限减至1。最后你令其获得X点护甲(X为你以此法失去的体力值或减少的体力上限)。', + sbanguo_info:'①游戏开始时,你令一名其他角色获得1枚“安国”标记(有“安国”的角色手牌上限基数等于体力上限)。②出牌阶段开始时,你可以将一名有“安国”的角色的所有“安国”移动给一名本局游戏未获得过“安国”的其他角色。③当你受到伤害时,若有有“安国”的角色且伤害值不小于你的体力值且此伤害没有来源或来源没有“安国”,防止此伤害。④一名角色进入濒死状态时,若其有你因〖安国①〗获得的“安国”,你移去其该“安国”,令其将体力回复至1点。然后你选择一项:1.若你的体力值大于1,你失去体力至1点;2.若你的体力上限大于1,你将体力上限减至1。最后你令其获得1点护甲。', wangjun:'手杀王濬', wangjun_prefix:'手杀', zhujian:'筑舰', From f6b6f0f26c2e993445884501b726d6aa27c23bd4 Mon Sep 17 00:00:00 2001 From: kuangthree Date: Sat, 28 Oct 2023 11:16:18 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=9F=A5=E6=83=85?= =?UTF-8?q?=E7=89=8C=E6=9C=BA=E5=88=B6=EF=BC=8C=E8=BE=85=E5=8A=A9AI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- card/extra.js | 11 +++++ game/game.js | 108 +++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 114 insertions(+), 5 deletions(-) diff --git a/card/extra.js b/card/extra.js index 83ef9d2f0..1fb1be66d 100644 --- a/card/extra.js +++ b/card/extra.js @@ -242,6 +242,17 @@ game.import('card',function(lib,game,ui,get,ai,_status){ target:function(player,target){ if(target.hasSkill('huogong2')||target.countCards('h')==0) return 0; if(player.countCards('h')<=1) return 0; + if(_status.event.player == player){ + if(target.isAllCardsKnown(player)){ + if(!target.countCards('h',card=>{ + return player.countCards('h',card2=>{ + return get.suit(card2) == get.suit(card); + }); + })){ + return 0; + } + } + } if(target==player){ if(typeof _status.event.filterCard=='function'&& _status.event.filterCard({name:'huogong'},player,_status.event)){ diff --git a/game/game.js b/game/game.js index 4e1af65fb..89a3d6593 100644 --- a/game/game.js +++ b/game/game.js @@ -17968,10 +17968,12 @@ if(!event.chooseonly){ if(event.delay!==false){ var next=player.gain(event.cards,target,event.visibleMove?'give':'giveAuto','bySelf'); + next.set('cardKnower',event.visibleMove?['everyone']:[target]); event.done=next; } else{ var next=player.gain(event.cards,target,'bySelf'); + next.set('cardKnower',event.visibleMove?['everyone']:[target]); event.done=next; target[event.visibleMove?'$give':'$giveAuto'](cards,player); if(event.visibleMove) next.visible=true; @@ -18048,6 +18050,7 @@ else{ game.log(player,'展示了',cards); } + game.addCardKnowner(cards,'everyone'); game.delayx(event.delay_time||2.5); game.addVideo('showCards',player,[event.str,get.cardsInfo(cards)]); "step 1" @@ -18056,6 +18059,7 @@ }, viewCards:function(){ "step 0" + game.addCardKnowner(event.cards,player); if(player==game.me){ event.dialog=ui.create.dialog(event.str,event.cards); if(event.isMine()){ @@ -19254,7 +19258,13 @@ for(var i in map){ var owner=(_status.connectMode?lib.playerOL:game.playerMap)[i]; var next=owner.lose(map[i][0],ui.special).set('type','gain').set('forceDie',true).set('getlx',false); - if(event.visible==true) next.visible=true; + if(event.visible==true){ + next.visible=true; + game.addCardKnowner(map[i][0],'everyone'); + }else{ + game.addCardKnowner(map[i][1],owner); + game.addCardKnowner(map[i][2],'everyone'); + } event.relatedLose=next; } } @@ -19765,6 +19775,7 @@ event.js=js; event.ss=ss; event.xs=xs; + game.clearCardKnowers(hs); "step 2" if(num{return true}; + return this.getCards('h',function(card){ + return card.isKnownBy(other) && filter(card); + }); + } + //判断此角色的手牌是否已经被看光了。 + isAllCardsKnown(other){ + if(!other)other = _status.event.player; + if(!other)other = this; + return this.countCards('h',function(card){ + return !card.isKnownBy(other); + }) == 0; + } + //判断此角色是否有被知的牌。 + hasKnownCards(other,filter){ + if(!other)other = _status.event.player; + if(!other)other = this; + if(!filter)filter = (card)=>{return true}; + return this.countCards('h',function(card){ + return card.isKnownBy(other) && filter(card); + }) > 0; + } //Execute the delay card effect //执行延时锦囊牌效果 executeDelayCardEffect(card,target,judge,judge2){ @@ -28286,8 +28325,13 @@ let cards,selected=get.copy(ui.selected.cards); if(get.itemtype(ignore)==='cards') selected.addArray(ignore); else if(get.itemtype(ignore)==='card') selected.add(ignore); - if(this===viewer||get.itemtype(viewer)==='player'&&viewer.hasSkillTag('viewHandcard',null,this,true)) cards=this.getCards('h'); - else cards=this.getShownCards(); + /*if(this===viewer||get.itemtype(viewer)==='player'&&viewer.hasSkillTag('viewHandcard',null,this,true)) cards=this.getCards('h'); + else cards=this.getShownCards();*/ + if(this === viewer || get.itemtype(viewer) == 'player'){ + cards = this.getKnownCards(viewer); + }else{ + cards = this.getShownCards(); + } if(cards.some(card=>{ if(selected.includes(card)) return false; let name=get.name(card,this); @@ -28308,8 +28352,13 @@ let cards,selected=get.copy(ui.selected.cards); if(get.itemtype(ignore)==='cards') selected.addArray(ignore); else if(get.itemtype(ignore)==='card') selected.add(ignore); - if(this===viewer||get.itemtype(viewer)==='player'&&viewer.hasSkillTag('viewHandcard',null,this,true)) cards=this.getCards('h'); - else cards=this.getShownCards(); + /*if(this===viewer||get.itemtype(viewer)==='player'&&viewer.hasSkillTag('viewHandcard',null,this,true)) cards=this.getCards('h'); + else cards=this.getShownCards();*/ + if(this === viewer || get.itemtype(viewer) == 'player'){ + cards = this.getKnownCards(viewer); + }else{ + cards = this.getShownCards(); + } if(cards.some(card=>{ if(selected.includes(card)) return false; let name=get.name(card,this); @@ -30432,6 +30481,41 @@ aiexclude(){ _status.event._aiexclude.add(this); } + //为此牌添加知情者。参数可为数组,若参数为字符串'everyone',则所有玩家均为知情者。 + addKnowner(player){ + if(!this._knowers){ + this._knowers = []; + } + if(typeof player == 'string'){ + this._knowers.add(player); + }else{ + let type = get.itemtype(player); + if(type == 'player'){ + this._knowers.add(player.playerid); + }else if(type == 'players'){ + player.forEach(p=>this._knowers.add(p.playerid)); + } + } + } + //清除此牌的知情者。 + clearKnowers(){ + if(this._knowers)delete this._knowers; + } + //判断玩家对此牌是否知情。 + isKnownBy(player){ + if(['e','j'].includes(get.position(this)))return true;//装备区或者判定区的牌,必知情。 + let owner = get.owner(this); + if(owner){ + if(owner == player)return true;//是牌主,必知情。 + if(player.hasSkillTag('viewHandcard',null,owner,true))return true;//有viewHandcard标签,必知情。 + if(owner.isUnderControl(true,player))return true;//被操控,必知情。 + } + if(get.is.shownCard(this))return true;//此牌是明置牌,必知情。 + if(this._knowers){ + return this._knowers.includes('everyone') || this._knowers.includes(player.playerid); + } + return false; + } getSource(name){ if(this.name==name) return true; var info=lib.card[this.name]; @@ -36059,6 +36143,20 @@ if(i.storage.renku) i.markSkill('renku'); } }, + //为牌添加知情者。 + addCardKnowner:function(cards,players){ + if(get.itemtype(cards) == 'card'){ + cards = [cards]; + } + cards.forEach(card=>card.addKnowner(players)); + }, + //移除牌的所有知情者。 + clearCardKnowers:function(cards){ + if(get.itemtype(cards) == 'card'){ + cards = [cards]; + } + cards.forEach(card=>card.clearKnowers()); + }, loseAsync:function(arg){ var next=game.createEvent('loseAsync'); next.forceDie=true; From 6992562ab7a8a6243e43408b1e3c48f7ac0f1aef Mon Sep 17 00:00:00 2001 From: kuangthree Date: Sat, 28 Oct 2023 11:31:48 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=E6=B7=BB=E5=8A=A0gain=E7=9A=84=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E7=9F=A5=E6=83=85=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/game.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/game/game.js b/game/game.js index 89a3d6593..039e16a65 100644 --- a/game/game.js +++ b/game/game.js @@ -19267,6 +19267,9 @@ } event.relatedLose=next; } + if(event.cardKnower){ + game.addCardKnowner(cards,event.cardKnower); + } } else{ event.finish(); From 15c61886be8454b5e363e85bbdb04d08b6e30dd2 Mon Sep 17 00:00:00 2001 From: kuangthree Date: Sat, 28 Oct 2023 11:40:24 +0800 Subject: [PATCH 07/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=8D=95=E8=AF=8D=E6=8B=BC=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/game.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/game/game.js b/game/game.js index 039e16a65..bc57583c7 100644 --- a/game/game.js +++ b/game/game.js @@ -18050,7 +18050,7 @@ else{ game.log(player,'展示了',cards); } - game.addCardKnowner(cards,'everyone'); + game.addCardKnower(cards,'everyone'); game.delayx(event.delay_time||2.5); game.addVideo('showCards',player,[event.str,get.cardsInfo(cards)]); "step 1" @@ -18059,7 +18059,7 @@ }, viewCards:function(){ "step 0" - game.addCardKnowner(event.cards,player); + game.addCardKnower(event.cards,player); if(player==game.me){ event.dialog=ui.create.dialog(event.str,event.cards); if(event.isMine()){ @@ -19260,15 +19260,15 @@ var next=owner.lose(map[i][0],ui.special).set('type','gain').set('forceDie',true).set('getlx',false); if(event.visible==true){ next.visible=true; - game.addCardKnowner(map[i][0],'everyone'); + game.addCardKnower(map[i][0],'everyone'); }else{ - game.addCardKnowner(map[i][1],owner); - game.addCardKnowner(map[i][2],'everyone'); + game.addCardKnower(map[i][1],owner); + game.addCardKnower(map[i][2],'everyone'); } event.relatedLose=next; } if(event.cardKnower){ - game.addCardKnowner(cards,event.cardKnower); + game.addCardKnower(cards,event.cardKnower); } } else{ @@ -20620,8 +20620,8 @@ for(i=0;icard.addKnowner(players)); + cards.forEach(card=>card.addKnower(players)); }, //移除牌的所有知情者。 clearCardKnowers:function(cards){ From deb7757b88939fb8c8737271dbfacbced2654549 Mon Sep 17 00:00:00 2001 From: kuangthree Date: Sat, 28 Oct 2023 12:36:12 +0800 Subject: [PATCH 08/13] =?UTF-8?q?=E8=83=8C=E9=9D=A2=E6=9C=9D=E4=B8=8A?= =?UTF-8?q?=E5=A4=B1=E5=8E=BB=E6=89=8B=E7=89=8C=E5=90=8E=EF=BC=8C=E6=89=80?= =?UTF-8?q?=E6=9C=89=E6=89=8B=E7=89=8C=E6=B8=85=E7=A9=BA=E7=9F=A5=E6=83=85?= =?UTF-8?q?=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/game.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/game/game.js b/game/game.js index bc57583c7..4c80243d7 100644 --- a/game/game.js +++ b/game/game.js @@ -19779,6 +19779,9 @@ event.ss=ss; event.xs=xs; game.clearCardKnowers(hs); + if(hs.length && !event.visible){ + this.getCards('h').forEach(hcard=>{hcard.clearKnowers();}); + } "step 2" if(num Date: Sat, 28 Oct 2023 12:46:19 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8E=B7=E5=BE=97?= =?UTF-8?q?=E7=89=8C=E6=97=B6=E7=9A=84=E7=9F=A5=E6=83=85=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/game.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/game/game.js b/game/game.js index 4c80243d7..6a1648f11 100644 --- a/game/game.js +++ b/game/game.js @@ -19260,15 +19260,11 @@ var next=owner.lose(map[i][0],ui.special).set('type','gain').set('forceDie',true).set('getlx',false); if(event.visible==true){ next.visible=true; - game.addCardKnower(map[i][0],'everyone'); - }else{ - game.addCardKnower(map[i][1],owner); - game.addCardKnower(map[i][2],'everyone'); } event.relatedLose=next; - } - if(event.cardKnower){ - game.addCardKnower(cards,event.cardKnower); + if(event.cardKnower){ + next.set('cardKnower',event.cardKnower); + } } } else{ @@ -19286,6 +19282,8 @@ var hs=source.getCards('hejsx'); if(hs.contains(cards[i])){ cards.splice(i--,1); + }else{ + cards[i].addKnower(event.visible?'everyone':source); } } } From d7c845b2c33503eb3bbd392d6f5585726c985f3e Mon Sep 17 00:00:00 2001 From: kuangthree Date: Sat, 28 Oct 2023 12:50:44 +0800 Subject: [PATCH 10/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=9F=A5=E6=83=85?= =?UTF-8?q?=E7=89=8C=E7=9A=84=E8=AE=BE=E7=BD=AE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/game.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/game/game.js b/game/game.js index 6a1648f11..4135205ac 100644 --- a/game/game.js +++ b/game/game.js @@ -17968,12 +17968,10 @@ if(!event.chooseonly){ if(event.delay!==false){ var next=player.gain(event.cards,target,event.visibleMove?'give':'giveAuto','bySelf'); - next.set('cardKnower',event.visibleMove?['everyone']:[target]); event.done=next; } else{ var next=player.gain(event.cards,target,'bySelf'); - next.set('cardKnower',event.visibleMove?['everyone']:[target]); event.done=next; target[event.visibleMove?'$give':'$giveAuto'](cards,player); if(event.visibleMove) next.visible=true; @@ -19262,9 +19260,6 @@ next.visible=true; } event.relatedLose=next; - if(event.cardKnower){ - next.set('cardKnower',event.cardKnower); - } } } else{ From 4d68edbf01f17e4b5b7b12f5b9b03cd65527bdad Mon Sep 17 00:00:00 2001 From: mengxinzxz <139629761+mengxinzxz@users.noreply.github.com> Date: Sat, 28 Oct 2023 14:11:51 +0800 Subject: [PATCH 11/13] =?UTF-8?q?star=E6=9B=B9=E4=BB=81=E3=80=90=E7=A0=BA?= =?UTF-8?q?=E9=94=8B=E3=80=91ai=E4=BC=98=E5=8C=962?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/sp2.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/character/sp2.js b/character/sp2.js index f6f932dc0..d4494cea2 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -138,7 +138,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, enable:'chooseToUse', filter:function(event,player){ - if(!event.filterCard({name:'sha'})&&!event.filterCard({name:'wuxie'})) return false; + if(!event.filterCard({name:'sha'},player,event)&&!event.filterCard({name:'wuxie'},player,event)) return false; return player.countCards('h',card=>{ return !player.getStorage('starlifeng_count').contains(get.color(card,player))||_status.connectMode; }); @@ -151,7 +151,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return ui.create.dialog('砺锋',[list,'vcard']); }, check:function(button){ - return _status.event.player.getUseValue({name:button.link[2],nature:button.link[3]}); + var player=_status.event.player; + return _status.event.getParent().type=='phase'?player.getUseValue({name:button.link[2]}):1 }, backup:function(links,player){ return { @@ -197,6 +198,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ })) return false; }, order:10, + result:{player:1}, }, group:'starlifeng_mark', subSkill:{ From b14bb740f66188cd7898eae1f0b10a855574e96d Mon Sep 17 00:00:00 2001 From: mengxinzxz <139629761+mengxinzxz@users.noreply.github.com> Date: Sat, 28 Oct 2023 14:40:20 +0800 Subject: [PATCH 12/13] =?UTF-8?q?OL=E9=82=93=E8=8A=9D=E3=80=90=E4=BF=AE?= =?UTF-8?q?=E5=A5=BD=E3=80=91=E6=97=B6=E6=9C=BA=E7=BB=9F=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/sp.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/character/sp.js b/character/sp.js index c163b76fc..376981af0 100755 --- a/character/sp.js +++ b/character/sp.js @@ -11257,13 +11257,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //邓芝 olxiuhao:{ audio:2, - trigger:{ - player:'damageBegin4', - source:'damageBegin2', - }, + trigger:{global:'damageBegin4'}, usable:1, filter:function(event,player){ - return event.source&&event.source.isIn()&&event.source!=event.player; + return event.source&&event.source.isIn()&&[event.source,event.player].contains(player)&&event.source!=event.player; }, logTarget:function(event,player){ return player==event.player?event.source:event.player; @@ -26094,7 +26091,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_dengzhi:'OL邓芝', ol_dengzhi_prefix:'OL', olxiuhao:'修好', - olxiuhao_info:'每回合限一次。当你受到其他角色造成的伤害时,或对其他角色造成伤害时,你可防止此伤害,然后令伤害来源摸两张牌。', + olxiuhao_info:'每回合限一次。当你受到其他角色造成的伤害时,或其他角色受到你造成的伤害时,你可防止此伤害,然后令伤害来源摸两张牌。', olsujian:'素俭', olsujian_given:'已分配', olsujian_info:'锁定技。弃牌阶段开始前,你将此阶段的规则改为:{你选择一项:①将所有不为本回合得到的手牌分配给其他角色。②弃置这些手牌,然后弃置一名其他角色等量的牌}。', From 1509e501215da1cff5eeb41dacc606303ab26199 Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Sat, 28 Oct 2023 14:27:13 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9card.destroyed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- card/guozhan.js | 66 +++++++++++++++++------------------------------ character/jsrg.js | 1 - game/game.js | 36 +++++++++++++++++++------- 3 files changed, 49 insertions(+), 54 deletions(-) diff --git a/card/guozhan.js b/card/guozhan.js index dad1a1a3b..e087fc6a0 100644 --- a/card/guozhan.js +++ b/card/guozhan.js @@ -696,7 +696,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }); }, mode:['guozhan'], - global:['g_chiling1','g_chiling2','g_chiling3'], + //global:['g_chiling1','g_chiling2','g_chiling3'], filterTarget:function(card,player,target){ return target.isUnseen(); }, @@ -754,6 +754,27 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } target.draw(); }, + destroy:function(card,targetPosition,player,event){ + if(event.name!='lose'||event.name!='cardsDiscard'||targetPosition!='discardPile') return false; + var evt=event.getParent().relatedEvent; + if(evt&&evt.name=='useCard') return false; + + return true; + }, + onDestroy:function(){ + var currentPhase=_status.currentPhase; + if(currentPhase){ + _status.chiling=true; + currentPhase.addTempSkill('g_chiling3'); + } + if(!lib.inpile.contains('zhaoshu')){ + lib.inpile.push('zhaoshu'); + var card=game.createCard2('zhaoshu','club',3); + game.log(card,'被置于了牌堆底'); + ui.cardPile.appendChild(card); + game.updateRoundNumber(); + } + }, ai:{ order:6, result:{ @@ -1570,50 +1591,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, }, - g_chiling1:{ - mode:['guozhan'], - trigger:{ - player:'loseEnd', - global:'cardsDiscardEnd', - }, - filter:function(event,player){ - var evt=event.getParent().relatedEvent; - if(evt&&evt.name=='useCard') return false; - for(var i=0;i