diff --git a/audio/die/liuyong.mp3 b/audio/die/liuyong.mp3 new file mode 100644 index 000000000..46ab3c3e1 Binary files /dev/null and b/audio/die/liuyong.mp3 differ diff --git a/audio/die/mayuanyi.mp3 b/audio/die/mayuanyi.mp3 new file mode 100644 index 000000000..7e048db3f Binary files /dev/null and b/audio/die/mayuanyi.mp3 differ diff --git a/audio/die/re_xunchen.mp3 b/audio/die/re_xunchen.mp3 new file mode 100644 index 000000000..08bdd2bde Binary files /dev/null and b/audio/die/re_xunchen.mp3 differ diff --git a/audio/die/simafu.mp3 b/audio/die/simafu.mp3 new file mode 100644 index 000000000..258f9c5ba Binary files /dev/null and b/audio/die/simafu.mp3 differ diff --git a/audio/die/sp_gaolan.mp3 b/audio/die/sp_gaolan.mp3 new file mode 100644 index 000000000..99b60904c Binary files /dev/null and b/audio/die/sp_gaolan.mp3 differ diff --git a/audio/die/sp_huaman.mp3 b/audio/die/sp_huaman.mp3 new file mode 100644 index 000000000..f0eb14edf Binary files /dev/null and b/audio/die/sp_huaman.mp3 differ diff --git a/audio/die/sp_wangshuang.mp3 b/audio/die/sp_wangshuang.mp3 new file mode 100644 index 000000000..cc167b16b Binary files /dev/null and b/audio/die/sp_wangshuang.mp3 differ diff --git a/audio/die/sunyi.mp3 b/audio/die/sunyi.mp3 new file mode 100644 index 000000000..01e66826c Binary files /dev/null and b/audio/die/sunyi.mp3 differ diff --git a/audio/die/tongyuan.mp3 b/audio/die/tongyuan.mp3 new file mode 100644 index 000000000..061c6670d Binary files /dev/null and b/audio/die/tongyuan.mp3 differ diff --git a/audio/die/wanniangongzhu.mp3 b/audio/die/wanniangongzhu.mp3 new file mode 100644 index 000000000..b07febad0 Binary files /dev/null and b/audio/die/wanniangongzhu.mp3 differ diff --git a/audio/die/yanpu.mp3 b/audio/die/yanpu.mp3 new file mode 100644 index 000000000..bc174d23b Binary files /dev/null and b/audio/die/yanpu.mp3 differ diff --git a/audio/die/zuofen.mp3 b/audio/die/zuofen.mp3 new file mode 100644 index 000000000..1acaa6b6f Binary files /dev/null and b/audio/die/zuofen.mp3 differ diff --git a/audio/skill/anyong1.mp3 b/audio/skill/anyong1.mp3 new file mode 100644 index 000000000..e5b8fd079 Binary files /dev/null and b/audio/skill/anyong1.mp3 differ diff --git a/audio/skill/anyong2.mp3 b/audio/skill/anyong2.mp3 new file mode 100644 index 000000000..66d9ff5fd Binary files /dev/null and b/audio/skill/anyong2.mp3 differ diff --git a/audio/skill/bihuo1.mp3 b/audio/skill/bihuo1.mp3 new file mode 100644 index 000000000..8c1e1aceb Binary files /dev/null and b/audio/skill/bihuo1.mp3 differ diff --git a/audio/skill/bihuo2.mp3 b/audio/skill/bihuo2.mp3 new file mode 100644 index 000000000..90e62ee71 Binary files /dev/null and b/audio/skill/bihuo2.mp3 differ diff --git a/audio/skill/binghuo1.mp3 b/audio/skill/binghuo1.mp3 new file mode 100644 index 000000000..9c8978bc4 Binary files /dev/null and b/audio/skill/binghuo1.mp3 differ diff --git a/audio/skill/binghuo2.mp3 b/audio/skill/binghuo2.mp3 new file mode 100644 index 000000000..1432963a5 Binary files /dev/null and b/audio/skill/binghuo2.mp3 differ diff --git a/audio/skill/chaofeng1.mp3 b/audio/skill/chaofeng1.mp3 new file mode 100644 index 000000000..530779e13 Binary files /dev/null and b/audio/skill/chaofeng1.mp3 differ diff --git a/audio/skill/chaofeng2.mp3 b/audio/skill/chaofeng2.mp3 new file mode 100644 index 000000000..052091d8c Binary files /dev/null and b/audio/skill/chaofeng2.mp3 differ diff --git a/audio/skill/chenjie1.mp3 b/audio/skill/chenjie1.mp3 new file mode 100644 index 000000000..0f37b1bec Binary files /dev/null and b/audio/skill/chenjie1.mp3 differ diff --git a/audio/skill/chenjie2.mp3 b/audio/skill/chenjie2.mp3 new file mode 100644 index 000000000..c24f9f748 Binary files /dev/null and b/audio/skill/chenjie2.mp3 differ diff --git a/audio/skill/chuanshu1.mp3 b/audio/skill/chuanshu1.mp3 new file mode 100644 index 000000000..5746b4277 Binary files /dev/null and b/audio/skill/chuanshu1.mp3 differ diff --git a/audio/skill/chuanshu2.mp3 b/audio/skill/chuanshu2.mp3 new file mode 100644 index 000000000..ceefaf939 Binary files /dev/null and b/audio/skill/chuanshu2.mp3 differ diff --git a/audio/skill/chuanyun.mp3 b/audio/skill/chuanyun.mp3 new file mode 100644 index 000000000..f1db6bcbd Binary files /dev/null and b/audio/skill/chuanyun.mp3 differ diff --git a/audio/skill/fengxiang1.mp3 b/audio/skill/fengxiang1.mp3 new file mode 100644 index 000000000..6dc68c026 Binary files /dev/null and b/audio/skill/fengxiang1.mp3 differ diff --git a/audio/skill/fengxiang2.mp3 b/audio/skill/fengxiang2.mp3 new file mode 100644 index 000000000..0398fd061 Binary files /dev/null and b/audio/skill/fengxiang2.mp3 differ diff --git a/audio/skill/huantu1.mp3 b/audio/skill/huantu1.mp3 new file mode 100644 index 000000000..0943c11ce Binary files /dev/null and b/audio/skill/huantu1.mp3 differ diff --git a/audio/skill/huantu2.mp3 b/audio/skill/huantu2.mp3 new file mode 100644 index 000000000..f73ad88f7 Binary files /dev/null and b/audio/skill/huantu2.mp3 differ diff --git a/audio/skill/jibing1.mp3 b/audio/skill/jibing1.mp3 new file mode 100644 index 000000000..a2a2b051b Binary files /dev/null and b/audio/skill/jibing1.mp3 differ diff --git a/audio/skill/jibing2.mp3 b/audio/skill/jibing2.mp3 new file mode 100644 index 000000000..2c5e5a8a9 Binary files /dev/null and b/audio/skill/jibing2.mp3 differ diff --git a/audio/skill/lisi1.mp3 b/audio/skill/lisi1.mp3 new file mode 100644 index 000000000..1229a492c Binary files /dev/null and b/audio/skill/lisi1.mp3 differ diff --git a/audio/skill/lisi2.mp3 b/audio/skill/lisi2.mp3 new file mode 100644 index 000000000..405c8b160 Binary files /dev/null and b/audio/skill/lisi2.mp3 differ diff --git a/audio/skill/longdan_tongyuan.mp3 b/audio/skill/longdan_tongyuan.mp3 new file mode 100644 index 000000000..eea6e612d Binary files /dev/null and b/audio/skill/longdan_tongyuan.mp3 differ diff --git a/audio/skill/moucuan1.mp3 b/audio/skill/moucuan1.mp3 new file mode 100644 index 000000000..910ce5a85 Binary files /dev/null and b/audio/skill/moucuan1.mp3 differ diff --git a/audio/skill/moucuan2.mp3 b/audio/skill/moucuan2.mp3 new file mode 100644 index 000000000..f30db1299 Binary files /dev/null and b/audio/skill/moucuan2.mp3 differ diff --git a/audio/skill/ocongjian_tongyuan.mp3 b/audio/skill/ocongjian_tongyuan.mp3 new file mode 100644 index 000000000..acdb26599 Binary files /dev/null and b/audio/skill/ocongjian_tongyuan.mp3 differ diff --git a/audio/skill/refenglve1.mp3 b/audio/skill/refenglve1.mp3 new file mode 100644 index 000000000..b3ca53f54 Binary files /dev/null and b/audio/skill/refenglve1.mp3 differ diff --git a/audio/skill/refenglve2.mp3 b/audio/skill/refenglve2.mp3 new file mode 100644 index 000000000..fe9b75016 Binary files /dev/null and b/audio/skill/refenglve2.mp3 differ diff --git a/audio/skill/shanxie1.mp3 b/audio/skill/shanxie1.mp3 new file mode 100644 index 000000000..54a2312aa Binary files /dev/null and b/audio/skill/shanxie1.mp3 differ diff --git a/audio/skill/shanxie2.mp3 b/audio/skill/shanxie2.mp3 new file mode 100644 index 000000000..cc8046529 Binary files /dev/null and b/audio/skill/shanxie2.mp3 differ diff --git a/audio/skill/spdengli1.mp3 b/audio/skill/spdengli1.mp3 new file mode 100644 index 000000000..9c556cc02 Binary files /dev/null and b/audio/skill/spdengli1.mp3 differ diff --git a/audio/skill/spdengli2.mp3 b/audio/skill/spdengli2.mp3 new file mode 100644 index 000000000..a43131ebf Binary files /dev/null and b/audio/skill/spdengli2.mp3 differ diff --git a/audio/skill/spfangzong1.mp3 b/audio/skill/spfangzong1.mp3 new file mode 100644 index 000000000..98fa0d7ad Binary files /dev/null and b/audio/skill/spfangzong1.mp3 differ diff --git a/audio/skill/spfangzong2.mp3 b/audio/skill/spfangzong2.mp3 new file mode 100644 index 000000000..28fa8574f Binary files /dev/null and b/audio/skill/spfangzong2.mp3 differ diff --git a/audio/skill/spjungong1.mp3 b/audio/skill/spjungong1.mp3 new file mode 100644 index 000000000..e8e9e464a Binary files /dev/null and b/audio/skill/spjungong1.mp3 differ diff --git a/audio/skill/spjungong2.mp3 b/audio/skill/spjungong2.mp3 new file mode 100644 index 000000000..f1b2ff9d7 Binary files /dev/null and b/audio/skill/spjungong2.mp3 differ diff --git a/audio/skill/spxiangzhen1.mp3 b/audio/skill/spxiangzhen1.mp3 new file mode 100644 index 000000000..4ef4bfebc Binary files /dev/null and b/audio/skill/spxiangzhen1.mp3 differ diff --git a/audio/skill/spxiangzhen2.mp3 b/audio/skill/spxiangzhen2.mp3 new file mode 100644 index 000000000..baa237383 Binary files /dev/null and b/audio/skill/spxiangzhen2.mp3 differ diff --git a/audio/skill/spxizhan1.mp3 b/audio/skill/spxizhan1.mp3 new file mode 100644 index 000000000..30b6733bc Binary files /dev/null and b/audio/skill/spxizhan1.mp3 differ diff --git a/audio/skill/spxizhan2.mp3 b/audio/skill/spxizhan2.mp3 new file mode 100644 index 000000000..d95512915 Binary files /dev/null and b/audio/skill/spxizhan2.mp3 differ diff --git a/audio/skill/wangjing1.mp3 b/audio/skill/wangjing1.mp3 new file mode 100644 index 000000000..2b8a78c63 Binary files /dev/null and b/audio/skill/wangjing1.mp3 differ diff --git a/audio/skill/wangjing2.mp3 b/audio/skill/wangjing2.mp3 new file mode 100644 index 000000000..777987681 Binary files /dev/null and b/audio/skill/wangjing2.mp3 differ diff --git a/audio/skill/xinghan1.mp3 b/audio/skill/xinghan1.mp3 new file mode 100644 index 000000000..a341b1c02 Binary files /dev/null and b/audio/skill/xinghan1.mp3 differ diff --git a/audio/skill/xinghan2.mp3 b/audio/skill/xinghan2.mp3 new file mode 100644 index 000000000..6278695e8 Binary files /dev/null and b/audio/skill/xinghan2.mp3 differ diff --git a/audio/skill/xunde1.mp3 b/audio/skill/xunde1.mp3 new file mode 100644 index 000000000..bdbd0c570 Binary files /dev/null and b/audio/skill/xunde1.mp3 differ diff --git a/audio/skill/xunde2.mp3 b/audio/skill/xunde2.mp3 new file mode 100644 index 000000000..86cb73be4 Binary files /dev/null and b/audio/skill/xunde2.mp3 differ diff --git a/audio/skill/yiyong1.mp3 b/audio/skill/yiyong1.mp3 new file mode 100644 index 000000000..f2bf8d33e Binary files /dev/null and b/audio/skill/yiyong1.mp3 differ diff --git a/audio/skill/yiyong2.mp3 b/audio/skill/yiyong2.mp3 new file mode 100644 index 000000000..1e74c39c8 Binary files /dev/null and b/audio/skill/yiyong2.mp3 differ diff --git a/audio/skill/zaoli1.mp3 b/audio/skill/zaoli1.mp3 new file mode 100644 index 000000000..ae49189d4 Binary files /dev/null and b/audio/skill/zaoli1.mp3 differ diff --git a/audio/skill/zaoli2.mp3 b/audio/skill/zaoli2.mp3 new file mode 100644 index 000000000..c90692275 Binary files /dev/null and b/audio/skill/zaoli2.mp3 differ diff --git a/audio/skill/zhaosong1.mp3 b/audio/skill/zhaosong1.mp3 new file mode 100644 index 000000000..05e0e6c05 Binary files /dev/null and b/audio/skill/zhaosong1.mp3 differ diff --git a/audio/skill/zhaosong2.mp3 b/audio/skill/zhaosong2.mp3 new file mode 100644 index 000000000..104e3822b Binary files /dev/null and b/audio/skill/zhaosong2.mp3 differ diff --git a/audio/skill/zhenge1.mp3 b/audio/skill/zhenge1.mp3 new file mode 100644 index 000000000..d8fbb64fc Binary files /dev/null and b/audio/skill/zhenge1.mp3 differ diff --git a/audio/skill/zhenge2.mp3 b/audio/skill/zhenge2.mp3 new file mode 100644 index 000000000..cbf50d5ab Binary files /dev/null and b/audio/skill/zhenge2.mp3 differ diff --git a/audio/skill/zhuning1.mp3 b/audio/skill/zhuning1.mp3 new file mode 100644 index 000000000..ebb4eff60 Binary files /dev/null and b/audio/skill/zhuning1.mp3 differ diff --git a/audio/skill/zhuning2.mp3 b/audio/skill/zhuning2.mp3 new file mode 100644 index 000000000..57e25b18a Binary files /dev/null and b/audio/skill/zhuning2.mp3 differ diff --git a/character/diy.js b/character/diy.js index 61a749154..30d32af73 100755 --- a/character/diy.js +++ b/character/diy.js @@ -3282,7 +3282,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 0' var num=player.getHistory('skipped').length; event.num=num; - player.chooseToMove(num,'瞬影:移动至多'+get.cnNumber(num)+'格或失去1点体力'); + player.chooseToMoveChess(num,'瞬影:移动至多'+get.cnNumber(num)+'格或失去1点体力'); 'step 1' if(!result.bool) player.loseHp(); else player.draw(num); diff --git a/character/extra.js b/character/extra.js index fdb871633..0aa0816c3 100755 --- a/character/extra.js +++ b/character/extra.js @@ -307,6 +307,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.loseMaxHp(); }, locked:false, + global:'yingba_mark', mod:{ cardUsableTarget:function(card,player,target){ if(target.hasMark('yingba_mark')) return true; @@ -331,6 +332,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:'mark', onunmark:true, }, + mod:{ + maxHandcard:function(player,numx){ + var num=player.countMark('yingba_mark'); + if(num) return numx+num*game.countPlayer(function(current){ + return current.hasSkill('yingba'); + }); + }, + }, }, }, }, @@ -400,14 +409,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'damageBegin2'}, direct:true, filter:function(event,player){ - return event.source&&event.source!=player&&event.num1&&player.countCards('h')>0; }, content:function(){ 'step 0' player.chooseCardTarget({ prompt:get.prompt('pinghe'), - prompt2:'将'+get.cnNumber(trigger.num)+'张手牌交给一名其他角色并防止伤害'+(player.hasSkill('yingba')?',然后令伤害来源获得等量“平定”标记':''), - selectCard:trigger.num, + prompt2:'将一张手牌交给一名其他角色并防止伤害'+(player.hasSkill('yingba')?',然后令伤害来源获得一个“平定”标记':''), filterCard:true, filterTarget:lib.filter.notMe, ai1:function(card){ @@ -428,9 +436,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.logSkill('pinghe',target); target.gain(result.cards,player,'giveAuto'); trigger.cancel(); - player.loseMaxHp(trigger.num); + player.loseMaxHp(); if(player.hasSkill('yingba')){ - trigger.source.addMark('yingba_mark',trigger.num); + trigger.source.addMark('yingba_mark',1); } } }, @@ -750,8 +758,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ player.draw(); - player.addTempSkill('shenzhu_less'); - player.addMark('shenzhu_less',1,false); + //player.addTempSkill('shenzhu_less'); + //player.addMark('shenzhu_less',1,false); }, subSkill:{ less:{ @@ -4835,7 +4843,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ tspowei:'破围', tspowei_info:'使命技。①当你因使用【杀】而对有“围”的角色造成伤害时,你防止此伤害并移去该角色的“围”。②使命:当你使用【杀】结算完成后,若场上没有“围”,则你获得技能〖神著〗。③失败:当你进入濒死状态时,你将体力值回复至1点,然后弃置装备区的所有牌。', shenzhu:'神著', - shenzhu_info:'你使用【杀】无次数限制。当你使用有对应实体牌的非转化【杀】结算结束后,你摸一张牌,且本回合的手牌上限-1。', + shenzhu_info:'你使用【杀】无次数限制。当你使用有对应实体牌的非转化【杀】结算结束后,你摸一张牌。', dangmo:'荡魔', dangmo_info:'当你于出牌阶段内使用第一张【杀】选择目标后,你可以为此牌增加至多Y-1个目标(Y为你的体力值)。', reshuishi:'慧识', @@ -4853,11 +4861,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dinghan_info:'①当你成为未记录过的锦囊牌的目标时,你记录此牌名并取消之。②准备阶段,你可在〖定汉①〗的记录中添加或减少一种锦囊牌的牌名。', shen_sunce:'神孙策', yingba:'英霸', - yingba_info:'①出牌阶段限一次,你可令一名体力上限大于1的其他角色减少1点体力上限并获得“平定”标记,然后你减少1点体力上限。②你对拥有“平定”标记的角色使用牌没有次数限制。', + yingba_info:'①出牌阶段限一次,你可令一名体力上限大于1的其他角色减少1点体力上限并获得“平定”标记,然后你减少1点体力上限。②你对拥有“平定”标记的角色使用牌没有次数限制。③拥有“平定”标记的角色的手牌上限+X(X为其“平定”数)。', scfuhai:'覆海', scfuhai_info:'锁定技。①当你使用牌指定目标后,若目标角色有“平定”标记,则其不可响应此牌。②当你使用牌结算结束后,你移除所有目标角色的“平定”标记并增加等量的体力上限。③拥有“平定”标记的角色死亡时,你增加X点体力上限并摸X张牌。(X为其拥有的“平定”标记数)。', pinghe:'冯河', - pinghe_info:'①你的手牌上限基数等于你已损失的体力值。②当你受到其他角色造成的伤害时,若你的手牌数大于X,则你可以防止此伤害,减少X点体力值上限并将X张手牌交给一名其他角色(X为伤害值)。然后若你拥有〖英霸〗,则伤害来源获得X个“平定”标记。', + pinghe_info:'①你的手牌上限基数等于你已损失的体力值。②当你受到其他角色造成的伤害时,若你有牌且你的体力上限大于1,则你可以防止此伤害,减少一点体力上限并将一张手牌交给一名其他角色。然后若你拥有〖英霸〗,则伤害来源获得一个“平定”标记。', key_kagari:'篝', kagari_zongsi:'纵丝', @@ -4872,7 +4880,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ hina_shenshi_yingbian:'神视', hina_shenshi_info:'神势力技。出牌阶段开始时/结束时,你可摸两张牌,然后将其中一张牌置于牌堆顶。你以此法获得的牌视为拥有全部应变效果,且可以无条件发动。', hina_xingzhi:'幸凪', - hina_xingzhi_info:'键势力技。每回合限一次,你可以通过“助战”触发一张牌的全部助战效果,且响应助战的角色摸两张牌。', + hina_xingzhi_info:'键势力技。每回合限一次,你可以通过“助战”触发一张牌的全部应变效果,且响应助战的角色摸两张牌。', extra_feng:'神话再临·风', extra_huo:'神话再临·火', diff --git a/character/mobile.js b/character/mobile.js index 864917473..c6f3ed529 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -6,12 +6,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ mobile:{ - mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian"], + mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu"], mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning"], mobile_shijizhi:["sp_wangcan","sp_chenzhen","sp_sunshao","sp_xunchen","luotong","sp_duyu","sp_bianfuren","feiyi"], mobile_shijixin:['wujing','sp_mifuren','sp_xinpi','wangling','wangfuzhaolei','zhouchu','sp_kongrong','sp_yanghu'], mobile_shijiren:['caizhenji','xiangchong','sp_huaxin','sp_xujing','zhangzhongjing','sp_zhangwen','liuzhang','qiaogong'], - mobile_shijiyong:['db_wenyang','sp_chendong','yuanhuan','sp_zongyu'], + mobile_shijiyong:['db_wenyang','sp_chendong','yuanhuan','sp_zongyu','sp_wangshuang','sunyi','sp_gaolan','sp_huaman'], mobile_sunben:["re_sunben"], mobile_standard:["xin_xiahoudun","xin_zhangfei"], mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong"], @@ -24,6 +24,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ + sp_huaman:['female','shu',3,['spxiangzhen','spfangzong','spxizhan']], + sp_gaolan:['male','qun',4,['spjungong','spdengli']], + sunyi:['male','wu',4,['zaoli']], + sp_wangshuang:['male','wei',4,['yiyong','shanxie']], + yanpu:['male','qun',3,['huantu','bihuo']], + mayuanyi:['male','qun',4,['jibing','wangjing','moucuan']], + simafu:['male','wei',3,['xunde','chenjie']], fuqian:['male','shu',4,['jueyong','poxiang']], sp_zongyu:['male','shu',3,['zhibian','yuyan']], yuanhuan:['male','wei',3,['qingjue','fengjie']], @@ -53,7 +60,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhouqun:['male','shu',3,['tiansuan']], re_zhurong:['female','shu',4,['juxiang','relieren']], re_jiangwei:['male','shu',4,['retiaoxin','zhiji']], - wujing:['male','wu',4,['heji']], + wujing:['male','wu',4,['heji','liubing']], sp_mifuren:['female','shu',3,['xinguixiu','qingyu']], sp_xinpi:['male','wei',3,['spyinju','spchijie']], nanhualaoxian:['male','qun',3,['yufeng','tianshu']], @@ -140,6 +147,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']], }, characterIntro:{ + yanpu:'阎圃,生卒年不详,是益州巴西安汉(今四川省南充市)人。张鲁割据巴、汉,就以阎圃为功曹。东汉末年人物,本为张鲁部下谋士,后随张鲁一同投降曹操,封平乐乡侯。', + mayuanyi:'马元义(?—184年6月7日),东汉末年黄巾之乱的组织者之一,是黄巾大方首领。光和六年(183年),马元义奉黄巾军首领张角之命,筹划起事的准备工作。马元义聚集荆州、扬州信徒数万人约定于邺城相会,并收买中常侍封谞、徐奉等为内应,准备于次年(甲子年)三月初五(戊申日)内外同时起事。由于张角弟子济南人唐周的告密,马元义于于中平元年(184年)正月在河内郡山阳县被捕,送往洛阳车裂,同时被杀的还有教众近千人。由于马元义的被杀,迫使张角提前于二月起兵发动叛乱。', + simafu:'司马孚(180年-272年4月3日),字叔达。河内郡温县(今河南温县)人。三国曹魏至西晋初年重臣,西晋宗室,东汉京兆尹司马防第三子,晋宣帝司马懿之弟。自曹操时代起,司马孚就任文学掾,而后历仕魏国五代皇帝,累迁至太傅。司马孚在“高平陵事变”之际,协助司马懿控制京师,诛杀曹爽一党。后又督军成功防御吴、蜀的进攻,为司马氏政权的稳固多有功劳。但他性格十分谨慎,自司马懿执掌大权起,便逐渐引退,更未直接参与司马氏废立魏帝的谋划。西晋代魏后,司马孚进拜太宰,封安平王。晋武帝司马炎对他十分尊宠,但他并不以此为荣,至死仍以魏臣自称。泰始八年二月壬辰日(272年4月3日),司马孚去世,年九十三。武帝为其举哀三日,葬礼规格比照东汉东平献王刘苍,赐谥献王。', yuanhuan:'袁涣,字曜卿,陈郡扶乐(今河南省周口市太康县)人。东汉末年官员,出身陈郡袁氏,为东汉司徒袁滂之子。袁涣早年曾任郡功曹,后被公府征辟,相继被举为高第、秀才。汉末战乱时,袁涣流寓江淮一带,初为袁术所用,后投吕布。建安三年(198年),曹操率兵剿灭了吕布,袁涣又转投曹操,拜沛南部都尉,后又任谏议大夫、郎中令等职,在任上尽心尽责,以敢谏直言称名。袁涣恕思而后行,外表温柔而内心能断,处危难则勇气极大。汉末三国时期,唯有程昱、曹仁、袁涣三人被评价为勇冠贲育。', sunchen:'孙綝(chēn)(231年-259年1月18日),字子通,吴郡富春(今浙江杭州市富阳区)人。三国时期吴国宗室、权臣,昭义中郎将孙静曾孙、定武中郎将孙暠之孙、安民都尉孙绰的儿子。门荫入仕,初任偏将军。太平元年(256年),升任侍中、武卫将军、都督中外诸军事。掌权以后,诛杀大司马滕胤、骠骑将军吕据等重臣,升任大将军,册封永宁县侯。嗜好杀戮,与皇帝孙亮的矛盾激化,最终废黜孙亮,拥立琅琊王孙休即位,累迁丞相、荆州牧。永安元年十二月(259年1月),在左将军张布的协助下,遭到皇帝孙休捕杀,时年二十八岁,削除宗籍,改姓故氏。', qiaozhou:'谯周(201年-270年),字允南,巴西郡西充国县(今四川西充县槐树镇)人。三国时期蜀汉大臣、学者、儒学家、史学家。幼年丧父,少读典籍,精研六经,颇晓天文,成为蜀地大儒之一,门下有陈寿、罗宪等学生。诸葛亮担任益州牧时,授劝学从事。诸葛亮死后,不顾朝令,前往奔丧。后主刘禅册立太子时,授太子仆,迁太子家令、光禄大夫。反对姜维北伐,著《仇国论》,力陈北伐之失。炎兴元年(263年),邓艾攻打成都时期,力劝刘禅投降,“有全国之功”,投降魏国后,受封阳城亭侯,迁骑都尉。泰始六年(270年),授散骑常侍,同年去世,时年七十岁。', @@ -576,6 +586,759 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //花蔓 + spxiangzhen:{ + trigger:{target:'useCardToBefore'}, + forced:true, + audio:2, + filter:function(event,player){ + return event.card.name=='nanman'; + }, + content:function(){ + trigger.cancel(); + }, + group:'spxiangzhen_draw', + subSkill:{ + draw:{ + audio:'spxiangzhen', + audio:2, + trigger:{global:'useCardAfter'}, + forced:true, + filter:function(event,player){ + return event.card.name=='nanman'&&game.hasPlayer2(function(current){ + return current.hasHistory('damage',function(evt){ + return evt.card==event.card; + }); + }); + }, + content:function(){ + 'step 0' + if(player!=trigger.player&&trigger.player.isIn()) game.asyncDraw([player,trigger.player].sortBySeat()); + else{ + player.draw(); + event.finish(); + } + 'step 1' + game.delayx(); + }, + }, + }, + }, + spfangzong:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + forced:true, + filter:function(event,player){ + return !player.hasSkill('spxizhan_spfangzong')&&player.countCards('h')0&&!player.hasSkill('spxizhan_spfangzong')&&player.inRange(target)) return false; + }, + targetEnabled:function(card,player,target){ + if(get.tag(card,'damage')>0&&!target.hasSkill('spxizhan_spfangzong')&&player.inRange(target)) return false; + }, + }, + }, + spxizhan:{ + trigger:{global:'phaseBegin'}, + forced:true, + locked:false, + logTarget:'player', + filter:function(event,player){ + return player!=event.player; + }, + content:function(){ + 'step 0' + player.chooseToDiscard('he','嬉战:弃置一张牌或失去1点体力','根据弃置的牌对'+get.translation(trigger.player)+'视为使用如下牌:
♠,其使用【酒】;♥,你使用【无中生有】
♣,对其使用【铁索连环】;♦:对其使用火【杀】').set('ai',function(card){ + var player=_status.event.player,target=_status.event.getTrigger().player; + var suit=get.suit(card,player),list; + switch(suit){ + case 'spade': list=[{name:'jiu'},target,target];break; + case 'heart': list=[{name:'wuzhong'},player,player];break; + case 'club': list=[{name:'tiesuo'},player,target];break; + case 'diamond': list=[{name:'sha',nature:'fire'},player,target];break; + } + list[0].isCard=true; + var eff=0; + if(list[1].canUse(list[0],list[2],false)) eff=get.effect(list[2],list[0],list[1],player); + if(eff>=0||suit=='club') eff=Math.max(eff,5); + return eff*1.5-get.value(card); + }); + 'step 1' + if(result.bool){ + player.addTempSkill('spxizhan_spfangzong'); + var target=trigger.player,card=result.cards[0],suit=get.suit(card,player); + if((!target||!target.isIn())&&suit!='heart') return; + switch(suit){ + case 'spade': + target.chooseUseTarget('jiu',true); + break; + case 'heart': + player.chooseUseTarget('wuzhong',true); + break; + case 'club': + if(player.canUse('tiesuo',target)) player.useCard({ + name:'tiesuo', + isCard:true, + },target); + break; + case 'diamond': + if(player.canUse({ + name:'sha', + isCard:true, + nature:'fire', + },target,false)) player.useCard({ + name:'sha', + isCard:true, + nature:'fire', + },target,false); + break; + } + } + else player.loseHp(); + }, + subSkill:{ + spfangzong:{charlotte:true}, + }, + }, + //高览 + spjungong:{ + enable:'phaseUse', + filter:function(event,player){ + var num=(player.getStat('skill').spjungong||0); + return (numplayer.hp) return num; + return [0,num]; + }, + check:function(card){ + return 6-get.value(card); + }, + prompt:function(){ + var player=_status.event.player,num=get.cnNumber((player.getStat('skill').spjungong||0)+1); + return '弃置'+num+'张牌或失去'+num+'点体力,视为使用杀'; + }, + content:function(){ + 'step 0' + if(!cards.length) player.loseHp(player.getStat('skill').spjungong||1); + player.useCard({name:'sha',isCard:true},target,false); + 'step 1' + if(player.hasHistory('sourceDamage',function(evt){ + var card=evt.card; + if(!card||card.name!='sha') return false; + var evtx=evt.getParent('useCard'); + return evtx.card==card&&evtx.getParent()==event; + })) player.addTempSkill('spjungong_block'); + }, + ai:{ + order:function(item,player){ + return get.order({name:'sha'},player)+1; + }, + result:{ + target:function(player,target){ + if(!ui.selected.cards.length) return 0; + return get.effect(target,{name:'sha'},player,target); + }, + }, + }, + subSkill:{block:{charlotte:true}}, + }, + spdengli:{ + trigger:{ + player:'useCardToPlayered', + target:'useCardToTargeted', + }, + frequent:true, + filter:function(event,player){ + return event.card.name=='sha'&&event.player.hp==event.target.hp; + }, + content:function(){ + player.draw(); + }, + ai:{ + effect:{ + player:function(card,player,target){ + var hp=player.hp,evt=_status.event; + if(evt.name=='chooseToUse'&&evt.player==player&&evt.skill=='spjungong'&&!ui.selected.cards.length) hp-=((player.getStat('skill').spjungong||0)+1); + if(card&&card.name=='sha'&&hp==target.hp) return [1,0.3]; + }, + target:function(card,player,target){ + if(card&&card.name=='sha'&&player.hp==target.hp) return [1,0.3]; + }, + }, + }, + }, + //孙翊 + zaoli:{ + trigger:{player:'phaseBegin'}, + audio:2, + forced:true, + filter:function(event,player){ + return player.countMark('zaoli')>0; + }, + content:function(){ + 'step 0' + event.num=player.storage.zaoli; + player.removeMark('zaoli',event.num); + if(player.countCards('he')>0){ + player.chooseToDiscard(true,'he',[1,Infinity],'躁厉:弃置至少一张牌').set('ai',function(card){ + if(card.hasGaintag('zaoli')) return 1; + return 5-get.value(card); + }); + } + 'step 1' + if(result.bool) num+=result.cards.length; + player.loseHp(); + player.draw(num); + }, + mod:{ + cardEnabled2:function(card,player){ + if(player==_status.currentPhase&&get.itemtype(card)=='card'&&card.hasGaintag('zaoli')) return false; + }, + }, + group:['zaoli_add','zaoli_count'], + init:function(player){ + if(player==_status.currentPhase){ + var hs=player.getCards('h'); + player.getHistory('gain',function(evt){ + hs.removeArray(evt.cards); + }); + if(hs.length) player.addGaintag(cards,'zaoli'); + } + }, + onremove:function(player){ + player.removeGaintag('zaoli'); + delete player.storage.zaoli; + }, + intro:{content:'mark'}, + subSkill:{ + add:{ + audio:'zaoli', + trigger:{player:['useCard','respond']}, + forced:true, + filter:function(event,player){ + return player.countMark('zaoli')<4&&player.hasHistory('lose',function(evt){ + return evt.hs&&evt.hs.length>0&&evt.getParent()==event; + }); + }, + content:function(){ + player.addMark('zaoli',1); + }, + }, + count:{ + trigger:{global:'phaseBeginStart'}, + forced:true, + firstDo:true, + silent:true, + filter:function(event,player){ + if(player==event.player) return player.countCards('h')>0; + return player.hasCard(function(card){ + return card.hasGaintag('zaoli'); + },'h'); + }, + content:function(){ + if(player==trigger.player){ + player.addGaintag(player.getCards('h'),'zaoli'); + } + else player.removeGaintag('zaoli'); + }, + }, + }, + }, + //王双 + yiyong:{ + audio:2, + trigger:{player:'damageEnd'}, + filter:function(event,player){ + return event.card&&event.card.name=='sha'&& + event.source&&event.source.isIn()&&player!=event.source + &&event.cards.filterInD().length>0&&player.getEquip(1); + }, + check:function(event,player){ + var card={ + name:'sha', + cards:event.cards.filterInD(), + },target=event.source; + return !player.canUse(card,target,false)||get.effect(target,card,player,player)>0; + }, + content:function(){ + 'step 0' + event.cards=trigger.cards.filterInD(); + player.gain(event.cards,'gain2'); + 'step 1' + var target=trigger.source,hs=player.getCards('h'); + if(target&&target.isIn()&&hs.length>=cards.length&&cards.filter(function(i){ + return hs.contains(i); + }).length==cards.length&&player.canUse({name:'sha',cards:cards},target,false)) player.useCard({name:'sha'},cards,target,false); + }, + }, + shanxie:{ + audio:2, + enable:'phaseUse', + usable:1, + content:function(){ + var card=get.cardPile2(function(card){ + return get.subtype(card)=='equip1'; + }); + if(card) player.gain(card,'gain2'); + else{ + var targets=game.filterPlayer(function(current){ + return current!=player&¤t.getEquip(1); + }); + if(targets.length){ + var target=targets.randomGet(); + player.gain(target,target.getEquip(1),'give'); + } + } + }, + ai:{ + order:9, + result:{player:1}, + }, + group:'shanxie_exclude', + subSkill:{ + exclude:{ + trigger:{global:'useCard'}, + forced:true, + locked:false, + filter:function(event,player){ + if(event.card.name!='shan'||event.getParent(2).player!=player) return false; + var num=get.number(event.card); + return !num||num<=player.getAttackRange()*2; + }, + logTarget:'player', + content:function(){ + trigger.all_excluded=true; + }, + }, + }, + }, + //阎圃 + huantu:{ + audio:2, + trigger:{global:'phaseDrawBefore'}, + direct:true, + filter:function(event,player){ + return player.countCards('he')>0&&player.inRange(event.player); + }, + checkx:function(event,player){ + var target=event.player; + return get.attitude(player,target)>0&&(target.hasSkill('pingkou')||target.skipList.contains('phaseUse')||target.isDamaged()&&target.hp<=2||target.needsToDiscard()); + }, + content:function(){ + 'step 0' + player.chooseCard(get.prompt('huantu',trigger.player),'交给其一张牌并令其暂时跳过摸牌阶段','he').set('ai',function(card){ + if(!_status.event.checkx) return 0; + return 1+Math.random(); + }).set('checkx',lib.skill.huantu.checkx(trigger,player)); + 'step 1' + if(result.bool){ + player.logSkill('huantu',trigger.player); + trigger.player.gain(result.cards,player,'giveAuto'); + trigger.cancel(); + player.addTempSkill('huantu_effect'); + } + }, + subSkill:{ + effect:{ + audio:'huantu', + trigger:{global:'phaseJieshuBegin'}, + forced:true, + charlotte:true, + logTarget:'player', + filter:function(event,player){ + return event.player.isIn(); + }, + content:function(){ + 'step 0' + var str=get.translation(trigger.player); + player.chooseControl().set('choiceList',[ + '令'+str+'回复1点体力并摸两张牌', + '摸三张牌,然后交给'+str+'两张手牌', + ]).set('choice',trigger.player.isDamaged()?0:1); + 'step 1' + if(result.index==0){ + trigger.player.recover(); + trigger.player.draw(2); + event.finish(); + } + else{ + event.target=trigger.player; + player.draw(3); + } + 'step 2' + var hs=player.getCards('h'); + if(hs.length&&target.isIn()&&player.isIn()){ + if(hs.length<=2) event._result={bool:true,cards:hs}; + else player.chooseCard('h',2,true,'交给'+get.translation(target)+'两张手牌'); + } + else event.finish(); + 'step 3' + if(result.bool) trigger.player.gain(result.cards,player,'giveAuto'); + }, + }, + }, + }, + bihuo:{ + trigger:{global:'dyingAfter'}, + logTarget:'player', + limited:true, + skillAnimation:true, + animationColor:'gray', + filter:function(event,player){ + return event.player.isIn(); + }, + check:function(event,player){ + return get.attitude(player,event.player)>0; + }, + content:function(){ + player.awakenSkill('bihuo'); + trigger.player.draw(3); + trigger.player.addTempSkill('bihuo_effect','roundStart'); + trigger.player.addMark('bihuo_effect',game.countPlayer(),false); + }, + subSkill:{ + effect:{ + onremove:true, + charlotte:true, + mod:{ + globalTo:function(from,to,distance){ + return distance+to.countMark('bihuo_effect'); + }, + }, + intro:{content:'其他角色至你的距离+#'}, + }, + }, + }, + //马元义 + jibing:{ + audio:2, + enable:['chooseToUse','chooseToRespond'], + filter:function(event,player){ + return player.getStorage('jibing').length>0&&(event.filterCard({name:'sha'},player,event)||event.filterCard({name:'shan'},player,event)); + }, + chooseButton:{ + dialog:function(event,player){ + var dialog=ui.create.dialog('集兵','hidden'); + if(event.filterCard({name:'sha'},player,event)&&event.filterCard({name:'shan'},player,event)){ + dialog._chooseButton=2; + var table=document.createElement('div'); + table.classList.add('add-setting'); + table.style.margin='0'; + table.style.width='100%'; + table.style.position='relative'; + var list=['sha','shan']; + for(var i of list){ + if(player.isDisabled(i)) continue; + var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode'); + td.innerHTML=''+get.translation(i)+''; + td.link=i; + td.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button); + for(var j in lib.element.button){ + td[j]=lib.element.button[j]; + } + table.appendChild(td); + dialog.buttons.add(td); + } + dialog.content.appendChild(table); + } + else dialog._cardName=event.filterCard({name:'sha'},player,event)?'sha':'shan'; + dialog.add(player.storage.jibing); + return dialog; + }, + filter:function(button){ + var evt=_status.event,player=_status.event.player; + if(!evt.dialog._chooseButton){ + var evt2=_status.event.getParent(); + return evt2.filterCard(get.autoViewAs({name:evt.dialog._cardName},[button.link]),player,evt2); + } + if(ui.selected.buttons.length){ + var str=ui.selected.buttons[0].link; + if(typeof str!='string'||typeof button.link=='string') return false; + var evt2=_status.event.getParent(); + return evt2.filterCard(get.autoViewAs({name:str},[button.link]),player,evt2); + } + return typeof button.link=='string'; + }, + select:function(){ + return (_status.event.dialog._chooseButton||1); + }, + backup:function(links,player){ + var card,name; + if(links.length==2){ + name=links[0]; + card=links[1]; + } + else{ + card=links[0]; + var event=_status.event; + name=event.filterCard(get.autoViewAs({name:'sha'},[card]),player,event)?'sha':'shan'; + } + return { + audio:'jibing', + filterCard:function(){return false}, + selectCard:-1, + card:card, + viewAs:get.autoViewAs({name:name},card), + card:card, + precontent:function(){ + var card=lib.skill.jibing_backup.card; + player.unmarkAuto('jibing',[card]); + event.result.card={name:event.result.card.name}; + event.result.cards=[card]; + }, + } + }, + prompt:function(links,player){ + return '请选择【杀】的目标'; + }, + }, + ai:{ + respondSha:true, + respondShan:true, + skillTagFilter:function(player,tag,arg){ + return player.getStorage('jibing').length>0; + }, + order:function(item,player){ + if(player.hasSkill('binghuo')) return 6; + return 1 + }, + result:{ + player:1, + }, + }, + group:'jibing_place', + subSkill:{ + place:{ + audio:'jibing', + trigger:{player:'phaseDrawBegin1'}, + prompt2:'摸牌阶段开始时,若你的“兵”数小于势力数,则你可以改为将牌堆顶的两张牌置于你的武将牌上,称为“兵”。', + filter:function(event,player){ + return !event.numFixed&&player.getStorage('jibing').length0&&player.isMaxHp()){ + if(get.attitude(target,player)<=0){ + return [0,0,1,0.3]; + } + } + }, + }, + } + }, + moucuan:{ + audio:2, + derivation:'binghuo', + trigger:{player:'phaseZhunbeiBegin'}, + forced:true, + juexingji:true, + skillAnimation:true, + animationColor:'metal', + filter:function(event,player){ + return player.getStorage('jibing').length>=game.countGroup(); + }, + content:function(){ + player.awakenSkill('moucuan'); + player.loseMaxHp(); + player.addSkill('binghuo'); + }, + ai:{combo:'jibing'}, + }, + binghuo:{ + audio:2, + trigger:{global:'phaseJieshuBegin'}, + direct:true, + filter:function(event,player){ + return player.hasHistory('useCard',function(evt){ + return evt.skill=='jibing_backup'; + })||player.hasHistory('respond',function(evt){ + return evt.skill=='jibing_backup'; + }); + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('binghuo')).set('ai',function(target){ + var player=_status.event.player; + return get.damageEffect(target,player,player); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('binghuo',target); + target.judge(function(card){ + if(get.color(card)=='black') return -2; + return 0.1; + }).al2=function(result){ + return result.bool===false?true:false; + }; + } + else event.finish(); + 'step 2' + if(result.bool==false) target.damage('thunder'); + }, + ai:{combo:'jibing',expose:0.2}, + }, + //司马孚 + xunde:{ + audio:2, + trigger:{global:'damageEnd'}, + filter:function(event,player){ + return event.player.isAlive()&&get.distance(player,event.player)<=1; + }, + logTarget:'player', + check:function(event,player){ + return get.attitude(player,event.player)>0&&(!event.source||get.attitude(player,event.source)<0); + }, + content:function(){ + 'step 0' + player.judge().set('callback',function(){ + if(event.judgeResult.number<7){ + var player=event.getParent(2)._trigger.player; + if(get.position(card,true)=='o') player.gain(card,'gain2'); + } + }); + 'step 1' + if(result.number>5){ + var source=trigger.source; + if(source&&source.isIn()&&source.countCards('h')>0){ + player.line(source); + source.chooseToDiscard('h',true); + } + } + }, + }, + chenjie:{ + audio:2, + trigger:{global:'judge'}, + filter:function(event,player){ + var suit=get.suit(event.player.judging[0],event.player); + return player.countCards('hes',function(card){ + if(_status.connectMode&&get.position(card)!='e') return true; + return get.suit(card)==suit; + })>0; + }, + direct:true, + preHidden:true, + content:function(){ + "step 0" + var suit=get.suit(trigger.player.judging[0],trigger.player); + player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ + get.translation(trigger.player.judging[0])+','+get.prompt('chenjie'),'hes',function(card){ + if(get.suit(card)!=_status.event.suit) return false; + var player=_status.event.player; + var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); + if(mod2!='unchanged') return mod2; + var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); + if(mod!='unchanged') return mod; + return true; + }).set('ai',function(card){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + var judging=_status.event.judging; + var result=trigger.judge(card)-trigger.judge(judging); + var attitude=get.attitude(player,trigger.player); + if(attitude==0||result==0) return 0.1; + if(attitude>0){ + return result+0.01; + } + else{ + return 0.01-result; + } + }).set('judging',trigger.player.judging[0]).set('suit',suit).setHiddenSkill(event.name); + "step 1" + if(result.bool){ + event.card=result.cards[0]; + player.respond(result.cards,'highlight','chenjie','noOrdering'); + } + else{ + event.finish(); + } + "step 2" + if(result.bool){ + if(trigger.player.judging[0].clone){ + trigger.player.judging[0].clone.classList.remove('thrownhighlight'); + game.broadcast(function(card){ + if(card.clone){ + card.clone.classList.remove('thrownhighlight'); + } + },trigger.player.judging[0]); + game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); + } + game.cardsDiscard(trigger.player.judging[0]); + trigger.player.judging[0]=card; + trigger.orderingCards.add(card); + game.log(trigger.player,'的判定牌改为',card); + player.draw(2); + } + }, + ai:{ + rejudge:true, + tag:{ + rejudge:0.1, + } + } + }, + //吴景流兵 + liubing:{ + trigger:{player:'useCard1'}, + forced:true, + filter:function(event,player){ + return event.card.name=='sha'&&event.cards.length==1&&player.getHistory('useCard',function(evt){ + return evt.card.name=='sha'&&evt.cards.length==1; + }).indexOf(event)==0; + }, + content:function(){ + game.log(player,'将',trigger.card,'的花色改为','#y♦'); + trigger.card.suit='diamond'; + }, + }, //新刘璋 jutu:{ audio:'xiusheng', @@ -675,7 +1438,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{global:'phaseUseBegin'}, direct:true, filter:function(event,player){ - return event.player.group==player.storage.yaohu&&event.player.isIn()&&player.getStorage('jutu').length>0; + return event.player!=player&&event.player.group==player.storage.yaohu&&event.player.isIn()&&player.getStorage('jutu').length>0; }, logTarget:'player', content:function(){ @@ -713,10 +1476,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } 'step 3' if(game.hasPlayer(function(current){ - return current.inRangeOf(target); + return current!=player&¤t.inRangeOf(target); })){ player.chooseTarget(true,'选择'+get.translation(target)+'使用【杀】的目标',function(card,player,target){ - return _status.event.source.inRange(target); + return target!=player&&_status.event.source.inRange(target); }).set('source',target).set('ai',function(target){ var evt=_status.event; return get.effect(target,{name:'sha'},evt.source,evt.player); @@ -800,7 +1563,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return event.card.name!='jiu'&&event.card.name!='tao'&& event.targets.length==1&&event.card.isCard&&event.cards.length==1&&event.getParent(2).name!='jueyong_timeout'&& - get.position(event.cards[0],true)=='o'&&event.card.name==event.cards[0].name; + get.position(event.cards[0],true)=='o'&&event.card.name==event.cards[0].name&& + (!player.storage.jueyong||player.storage.jueyong[0].length=Math.max(1,player.getDamagedHp()); + return player.storage.jueyong&&player.storage.jueyong[0].length>0;//=Math.max(1,player.getDamagedHp()); }, content:function(){ var list=player.storage.jueyong,card=list[0].shift(),source=list[1].shift(); @@ -888,12 +1652,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ 'step 0' target.gain(cards,player,'giveAuto'); - player.draw(3); + player.draw(3).gaintag=['poxiang']; + player.addTempSkill('poxiang_mark') 'step 1' player.unmarkSkill('jueyong'); player.loseHp(); 'step 2' - player.skip('phaseDiscard'); + //player.skip('phaseDiscard'); game.delayx(); }, ai:{ @@ -903,6 +1668,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){ target:1, }, }, + subSkill:{ + mark:{ + charlotte:true, + onremove:function(player){ + player.removeGaintag('poxiang'); + }, + mod:{ + ignoredHandcard:function(card,player){ + if(card.hasGaintag('poxiang')){ + return true; + } + }, + cardDiscardable:function(card,player,name){ + if(name=='phaseDiscard'&&card.hasGaintag('poxiang')){ + return false; + } + }, + }, + }, + }, }, //宗预 zhibian:{ @@ -1259,12 +2044,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ group:['disordersidi_clear','disordersidi_exec'], subSkill:{ clear:{ - trigger:{global:['useCardAfter','die']}, + trigger:{global:['useCardToPlayered','die']}, forced:true, popup:false, locked:false, filter:function(event,player){ - return (!event.card||get.type(event.card,false)!='delay')&&player.storage.disordersidi&&player.storage.disordersidi.contains(event.player); + if(!player.storage.disordersidi||!player.storage.disordersidi.contains(event.player)) return false; + if(event.name=='die') return true; + if(get.type(event.card,false)!='delay'){ + var index=player.storage.disordersidi.indexOf(event.player); + return index!=-1&&(player.storage.disordersidi2[index]!=event.target||event.targets.length!=1); + } + return false; }, content:function(){ player.storage.disordersidi2.splice(player.storage.disordersidi.indexOf(trigger.player),1); @@ -1306,7 +2097,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger.cancel(); trigger.targets.length=0; trigger.getParent().triggeredTargets1.length=0; - target.damage(); + if(!_status.dying.length) target.damage(); } else if(result.index==1) player.draw(2); }, @@ -1482,6 +2273,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ list.push(get.type2(card,target)); player.showCards(card,get.translation(player)+'对'+get.translation(target)+'发动了【彰名】'); } + target.discard(card); for(var i=0;i及时点击卡牌,但不要点到毒了!'); + var str='
'; + for(var i of list){ + str+=(get.translation(i)+': '+Math.min(2,event.map[i])+'/2 '); + } + str+='
'; + event.dialog.textPrompt2=event.dialog.add(str); event.switchToAuto=function(){ event._result={ bool:true, @@ -8535,6 +9344,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.settle=function(du){ if(event.settleed) return; event.settleed=true; + event.dialog.textPrompt2.innerHTML=''; if(du){ if(lib.config.background_speak) game.playAudio('skill','zhengjing_boom'); event.dialog.textPrompt.innerHTML='
叫你别点毒你非得点 这下翻车了吧
'; @@ -8559,9 +9369,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } else{ if(lib.config.background_speak) game.playAudio('skill','zhengjing_click'); - if(!event.map[name]) event.map[name]=0; event.map[name]++; if(event.map[name]>1) event.finishedx.add(name); + if(event.finishedx.length0; + }); + next.set('processAI',function(list){ + var cards=list[0][1].slice(0).sort(function(a,b){ + return get.value(a)-get.value(b); + }); + return [cards.splice(0,1),cards]; + }) + "step 5" + if(result.bool){ + var cards=result.moved[0],gains=result.moved[1]; + target.addSkill('zhengjing2'); + target.markAuto('zhengjing2',cards); + target.$gain2(cards,false); + game.cardsGotoSpecial(cards); + if(gains.length) player.gain(gains,'gain2'); + else game.delayx(); + game.log(player,'将',cards,'置于了',target,'的武将牌上'); + } }, ai:{ order:10, @@ -10944,7 +11799,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'useCardToPlayered'}, forced:true, filter:function(event,player){ - return event.card.name=='sha'&&event.target.countCards('he')>0; + return event.card.name=='sha'&&event.target.countCards('he')>0&&event.targets.length==1; }, check:function(event,player){ return get.attitude(player,event.target)<0; @@ -13211,7 +14066,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ liezhi_info:'准备阶段,你可以依次弃置至多两名其他角色区域内的各一张牌。若你受到过伤害,则〖烈直〗于你的下个回合无效。', xinzhanyi:'战意', - xinzhanyi_info:'出牌阶段限一次,你可以弃置一张牌并失去1点体力,然后根据你弃置的牌获得以下效果直到回合结束:基本牌,你可以将一张基本牌当作杀、酒或桃使用,且你本回合第一次以此法使用的牌的回复值/伤害值+1;锦囊牌,摸三张牌且你使用的牌不能被【无懈可击】响应;装备牌,你使用【杀】指定目标角色后,其弃置两张牌,然后你获得其中的一张。', + xinzhanyi_info:'出牌阶段限一次,你可以弃置一张牌并失去1点体力,然后根据你弃置的牌获得以下效果直到回合结束:基本牌,你可以将一张基本牌当作杀、酒或桃使用,且你本回合第一次以此法使用的牌的回复值/伤害值+1;锦囊牌,摸三张牌且你使用的牌不能被【无懈可击】响应;装备牌,你使用【杀】指定唯一目标后,其弃置两张牌,然后你获得其中的一张。', xinzhanyi_basic_backup:'战意', xinzhanyi_basic:'战意', xinzhanyi_equip:'战意', @@ -13424,7 +14279,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ taomie2:'讨灭', taomie3:'讨灭', taomie4:'讨灭', - taomie_info:'当你受到伤害后或当你造成伤害后,你可以令伤害来源或受伤角色获得“讨灭”标记(如场上已有标记则转移给该角色);你视为在有“讨灭”标记的角色的攻击范围内,且当你对该角色造成伤害时,选择一项:1. 此伤害+1;2. 你获得其区域内的一张牌并可将之交给另一名角色;3. 依次执行前两项并于伤害结算后弃置其“讨灭”标记。', + taomie_info:'当你受到伤害后或当你造成伤害后,你可以令伤害来源或受伤角色获得“讨灭”标记(如场上已有标记则转移给该角色);你和拥有“讨灭”标记的角色视为在彼此的攻击范围内,且当你对该角色造成伤害时,选择一项:1. 此伤害+1;2. 你获得其区域内的一张牌并可将之交给另一名角色;3. 依次执行前两项并于伤害结算后弃置其“讨灭”标记。', xin_guohuai:'手杀郭淮', mobilejingce:'精策', mobilejingce_info:'结束阶段,若此回合因使用或打出而置入弃牌堆的牌的数量不小于你的体力值,则你可以摸两张牌。', @@ -13500,7 +14355,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ tianshu_info:'出牌阶段限一次,若场上没有【太平要术】,则你可以弃置一张牌并选择一名角色。该角色获得并使用【太平要术】。', wujing:'吴景', heji:'合击', - heji_info:'当有角色使用的【决斗】或红色【杀】结算完成后,若此牌对应的目标数为1,则你可以对相同的目标使用一张【杀】或【决斗】(无距离和次数限制)。若你以此法使用的牌不为转化牌,则你从牌堆中获得一张红色牌。', + heji_info:'当有角色使用的【决斗】或红色【杀】结算完成后,若此牌对应的目标数为1,则你可以对相同的目标使用一张【杀】或【决斗】(无距离和次数限制)。若你以此法使用的牌不为转化牌,则你从牌堆中随机获得一张牌。', + liubing:'流兵', + liubing_info:'锁定技。当你声明使用【杀】时,若此牌是你本回合使用的第一张有唯一对应实体牌的【杀】,则你将此牌的花色改为♦。', sp_mifuren:'糜夫人', spcunsi:'存嗣', spcunsi2:'存嗣', @@ -13691,7 +14548,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rechuhai:'除害', rechuhai_info:'使命技。①出牌阶段限一次,你可以摸一张牌,然后和一名其他角色拼点。若你赢,则你观看其手牌,并从牌堆/弃牌堆中获得其手牌中包含的类型的牌各一张,且当你于此阶段内对其造成伤害后,你将牌堆/弃牌堆中的一张装备牌置于你的一个空置装备栏内。②当你因发动〖除害①〗而展示拼点牌时,你令此牌的点数+X(X=(4-你装备区的牌数))。③使命:当有装备牌进入你的装备区后,若你的装备区内有至少三张牌,则你将体力值回复至上限,失去〖乡害〗并获得〖彰名〗。④失败:当你因发动〖除害①〗发起的拼点没赢时,若你的最终点数不大于Q点,则你触发使命失败分支。', zhangming:'彰名', - zhangming_info:'锁定技。①你使用的♣牌不能被其他角色响应。②每回合限一次,当你对其他角色造成伤害后,你随机展示其一张手牌,然后你从牌堆或弃牌堆中获得与其展示牌类型不同类型的牌各一张(若其没有手牌,则你改为从牌堆或弃牌堆中获得所有类型牌各一张),且以此法获得的牌不计入本回合的手牌上限。', + zhangming_info:'锁定技。①你使用的♣牌不能被其他角色响应。②每回合限一次,当你对其他角色造成伤害后,你随机弃置其一张手牌,然后你从牌堆或弃牌堆中获得与其展示牌类型不同类型的牌各一张(若其没有手牌,则你改为从牌堆或弃牌堆中获得所有类型牌各一张),且以此法获得的牌不计入本回合的手牌上限。', xin_sunluban:'手杀孙鲁班', xinzenhui:'谮毁', xinzenhui_info:'出牌阶段限一次。当你使用【杀】或黑色普通锦囊牌指定目标时,你可选择另一名能成为此牌目标的其他角色并选择一项:①令其也成为此牌的目标。②获得其一张牌,然后将此牌的使用者改为该角色。', @@ -13699,7 +14556,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinjiaojin_info:'当你受到男性角色造成的伤害时,你可以弃置一张装备牌并防止此伤害。', xin_caozhen:'手杀曹真', disordersidi:'司敌', - disordersidi_info:'①当你使用的不为延时锦囊牌的牌结算结束后,你可选择一名R内不存在以a为第一序偶的二元序偶的其他角色a,并选择一名角色b,在关系R内建立二元序偶(b对其他角色不可见)。②一名角色a使用的不为延时锦囊牌的牌结算结束后,你清除R内以其为第一元素的二元序偶。③一名角色a使用不为延时锦囊牌的牌指定b为唯一目标时,若aRb成立,则你从R内移除,且:若b为你,你摸一张牌;若b不为你,你可选择:⒈取消此牌的目标,并对a造成1点伤害。⒉摸两张牌。', + disordersidi_info:'①当你使用的不为延时锦囊牌的牌结算结束后,你可选择一名R内不存在以a为第一序偶的二元序偶的其他角色a,并选择一名角色b,在关系R内建立二元序偶(b对其他角色不可见)。②一名角色a使用不为延时锦囊牌的牌指定b为目标时,若(aRb)∧(此牌目标数为1)为真,则{你从R内移除,且:若b为你,你摸一张牌;若b不为你,你可选择:⒈取消此牌的目标,然后若场上没有处于濒死状态的角色,则你对a造成1点伤害。⒉摸两张牌};否则{你清除R内以a为第一元素的二元序偶}。', sp_chendong:'陈武董袭', spyilie:'毅烈', spyilie_info:'出牌阶段开始时,你可选择:①本阶段内使用【杀】的次数上限+1。②本回合内使用【杀】被【闪】抵消时,摸一张牌。③背水:失去1点体力,然后依次执行上述所有选项。', @@ -13718,15 +14575,54 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yuyan_info:'锁定技。当你成为非转换的【杀】的目标时,若使用者的体力值大于你且此【杀】有点数,则你令使用者选择一项:①交给你一张点数大于此【杀】的牌。②取消此目标。', fuqian:'傅佥', jueyong:'绝勇', - jueyong_info:'锁定技。①当你不因〖绝勇〗成为唯一牌的目标时,若此牌不为转化牌且对应的实体牌牌数为1且不为【桃】或【酒】,则你将此牌置于你的武将牌上,称为“勇”,且取消此牌的目标。②结束阶段开始时,若你的“绝”数不小于你已损失的体力值,则你令所有“绝”的原使用者依次对你使用所有“绝”,将无法使用的“绝”置入弃牌堆。', + jueyong_info:'锁定技。①当你不因〖绝勇〗成为唯一牌的目标时,若此牌不为转化牌且对应的实体牌牌数为1且不为【桃】或【酒】且你的“绝”数小于你的体力值的二倍,则你将此牌置于你的武将牌上,称为“绝”,且取消此牌的目标。②结束阶段开始时,若你有“绝”,则你令所有“绝”的原使用者依次对你使用所有“绝”,将无法使用的“绝”置入弃牌堆。', poxiang:'破降', - poxiang_info:'出牌阶段限一次。你可以将一张牌交给一名其他角色。你摸三张牌,移去所有“绝”并失去1点体力,跳过本回合的弃牌阶段。', + poxiang_info:'出牌阶段限一次。你可以将一张牌交给一名其他角色。你摸三张牌(不计入本回合的手牌上限),移去所有“绝”并失去1点体力。', jutu:'据土', jutu_info:'锁定技,准备阶段,你获得所有你武将牌上的“生”,然后摸X+1张牌,然后将X张牌置于你的武将牌上,称为“生”(X为你因〖邀虎〗选择势力的角色数量)。', yaohu:'邀虎', yaohu_info:'每轮限一次,你的回合开始时,你须选择场上一个势力。该势力角色的出牌阶段开始时,其可以获得你的一张“生”,然后其须选择一项:①对你指定的一名其攻击范围内的其他角色使用一张【杀】;②直到本阶段结束时,其使用伤害类牌指定你为目标时,须交给你两张牌,否则取消之。', rehuaibi:'怀璧', rehuaibi_info:'主公技,锁定技,你的手牌上限+X(X为你因〖邀虎〗选择势力的角色数量)。', + simafu:'司马孚', + xunde:'勋德', + xunde_info:'一名角色受到伤害后,若你至其的距离为1,则你可判定。若判定结果:大于5,你令该角色获得判定牌;小于7,你令伤害来源弃置一张牌。', + chenjie:'臣节', + chenjie_info:'一名角色的判定牌生效前,你可打出一张花色相同的牌。系统将你打出的牌作为新判定牌,将原判定牌置入弃牌堆。然后你摸两张牌。', + mayuanyi:'马元义', + jibing:'集兵', + jibing_info:'①摸牌阶段开始时,若你的“兵”数小于势力数,则你可以改为将牌堆顶的两张牌置于你的武将牌上,称为“兵”。②你可以将一张“兵”当做【杀】或【闪】使用或打出。', + wangjing:'往京', + wangjing_info:'锁定技。当你因〖集兵〗而使用或打出牌时,若对方是场上体力值最高的角色,则你摸一张牌。', + moucuan:'谋篡', + moucuan_info:'觉醒技。准备阶段,若你的“兵”数不小于势力数,则你减1点体力上限并获得〖兵祸〗。', + binghuo:'兵祸', + binghuo_info:'一名角色的结束阶段开始时,若你本回合内因〖集兵〗而使用或打出过牌,则你可令一名角色判定。若判定结果为黑色,则你对其造成1点雷属性伤害。', + yanpu:'阎圃', + huantu:'缓图', + huantu_info:'每轮限一次。一名角色的摸牌阶段开始前,若其在你攻击范围内,则你可以交给其一张牌并令其跳过此阶段。然后你于此回合的结束阶段选择一项:①令其回复1点体力并摸两张牌。②你摸三张牌,然后交给其两张手牌。', + bihuo:'避祸', + bihuo_info:'限定技。一名角色脱离濒死状态时,你可以令其摸三张牌,然后其他角色计算至其的距离时+X直到本轮结束(X为角色数)。', + sp_wangshuang:'手杀王双', + yiyong:'异勇', + yiyong_info:'当你受到其他角色造成的渠道为【杀】的伤害后,若你的装备区内有武器牌,则你可以获得此【杀】对应的所有实体牌,然后将这些牌当做【杀】对伤害来源使用(无距离限制)。', + shanxie:'擅械', + shanxie_info:'①出牌阶段限一次,你可以从牌堆中获得一张武器牌(没有则改为从场上随机获得一张)。②当其他角色使用【闪】响应你使用的【杀】时,若此【闪】没有点数或点数不大于你攻击范围的二倍,则你令此【闪】无效。', + sunyi:'孙翊', + zaoli:'躁厉', + zaoli_info:'锁定技。①你不能于回合内使用你手牌中不为本回合获得的牌。②当你使用或打出手牌时,你获得一个“厉”(至多4个)。③回合开始时,若你有“厉”,则你移去所有“厉”并弃置任意张牌,然后摸X+Y张牌并失去1点体力(X为你移去的标记数,Y为你弃置的牌数)。', + sp_gaolan:'手杀高览', + spjungong:'峻攻', + spjungong_info:'出牌阶段,你可失去X+1点体力或弃置X+1张牌,视为对一名其他角色使用【杀】(不计入次数和距离限制)。若你因此【杀】造成了伤害,则你令此技能失效直到回合结束。', + spdengli:'等力', + spdengli_info:'当你使用【杀】指定目标后,或成为【杀】的目标后,若使用者和目标的体力值相等,则你摸一张牌。', + sp_huaman:'手杀花蔓', + spxiangzhen:'象阵', + spxiangzhen_info:'锁定技。①【南蛮入侵】对你无效。②当有角色使用的【南蛮入侵】结算结束后,若有角色因此牌受到过伤害,则你和使用者各摸一张牌。', + spfangzong:'芳踪', + spfangzong_info:'锁定技。若你于当前回合内未发动过〖嬉战〗选择过选项二,则:①你不能于回合内使用具有伤害标签的牌指定攻击范围内的角色为目标。②攻击范围内包含你的角色不能使用是呀具有伤害标签的牌指定你为目标。③结束阶段,你将手牌摸至X张(X为场上存活人数且至多为8)', + spxizhan:'嬉战', + spxizhan_info:'其他角色的回合开始时,你须选择一项:①失去1点体力。②弃置一张牌。然后若此牌的花色为:♠,其视为使用一张【酒】;♥,你视为使用一张【无中生有】;♣,你视为对其使用【铁索连环】;♦:你视为对其使用火【杀】(无距离限制)。', mobile_standard:'手杀异构·标准包', mobile_shenhua:'手杀异构·神话再临', diff --git a/character/rank.js b/character/rank.js index 7ab5b17ed..0fe40b609 100644 --- a/character/rank.js +++ b/character/rank.js @@ -714,6 +714,10 @@ window.noname_character_rank={ 'zhouyi', 'yangzhi', 'wanniangongzhu', + 'sunyi', + 'sp_gaolan', + 'simafu', + 'mayuanyi', ], b:[ 'diy_feishi', @@ -916,6 +920,9 @@ window.noname_character_rank={ 're_kanze', 'tongyuan', 'zhangning', + 'sp_huaman', + 'sp_wangshuang', + 'yanpu', ], bm:[ 'diy_xizhenxihong', @@ -1775,6 +1782,9 @@ window.noname_character_rank={ 'wanniangongzhu', 're_xunchen', 'tongyuan', + 'simafu', + 'mayuanyi', + 'sp_huaman', ], junk:[ 'sunshao', diff --git a/character/refresh.js b/character/refresh.js index c2c1bbde9..ee8d77214 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -10,7 +10,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ refresh_lin:['re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo','ol_zhurong','re_jiaxu','ol_lusu'], refresh_shan:['ol_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai'], 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','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_bulianshi','xin_liubiao'], + refresh_yijiang2:['old_madai','re_wangyi','guanzhang','xin_handang','xin_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','re_guanping'], refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan','re_caozhen','re_zhoucang','re_chenqun','re_caifuren','re_guyong'], refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu','re_gongsunyuan','re_guotufengji'], @@ -45,7 +45,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_bulianshi:['female','wu',3,['reanxu','zhuiyi']], re_hanhaoshihuan:['male','wei',4,['reshenduan','reyonglve']], re_panzhangmazhong:['male','wu',4,['reduodao','reanjian']], - wangyi:['female','wei',3,['zhenlie','miji']], + re_wangyi:['female','wei',4,['zhenlie','miji']], old_madai:['male','shu',4,['mashu','qianxi']], guanzhang:['male','shu',4,['fuhun']], xin_xusheng:['male','wu',4,['decadepojun']], @@ -10211,7 +10211,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ decadepojun2:'破军', decadepojun_info:'当你使用【杀】指定目标后,你可以将其的至多X张牌置于其武将牌上(X为其体力值)。若这些牌中:有装备牌,你将这些装备牌中的一张置于弃牌堆;有锦囊牌,你摸一张牌。其于回合结束时获得其武将牌上的这些牌。', old_madai:'界马岱', - wangyi:'界王异', + re_wangyi:'界王异', + wangyi:'王异', guanzhang:'界关兴张苞', rezishou:'自守', rezishou2:'自守', diff --git a/character/shenhua.js b/character/shenhua.js index 1b6fedae2..f977d3a59 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -2309,7 +2309,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, preHidden:true, check:function(event,player){ - return get.attitude(player,event.player)<=0; + return get.attitude(player,target.player)<=0; }, logTarget:'target', content:function(){ diff --git a/character/sp2.js b/character/sp2.js index 32550445b..1aa5d9062 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -313,7 +313,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{global:'useCardAfter'}, direct:true, filter:function(event,player){ - return player!=event.player&&event.player.isIn()&&get.suit(event.card)=='spade'&&event.player.hasHistory('lose',function(evt){ + return player!=event.player&&event.player.isIn()&&get.color(event.card)=='black'&&event.player.hasHistory('lose',function(evt){ return evt&&evt.hs.length&&evt.getParent()==event; })&&event.player.isPhaseUsing()&&!player.hasSkill('tianze_block'); }, @@ -332,6 +332,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }).set('goon',get.damageEffect(trigger.player,player,player)>0).logSkill=['tianze',trigger.player]; 'step 1' if(result.bool) trigger.player.damage(); + else event.finish(); + 'step 2' + game.delayx(); }, group:'tianze_draw', subSkill:{ @@ -341,7 +344,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ forced:true, locked:false, filter:function(event,player){ - return event.player!=player&&event.result&&event.result.suit=='spade'; + return event.player!=player&&event.result&&event.result.color=='black'; }, content:function(){ player.draw(); @@ -356,15 +359,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var hs=player.getCards('h'); if(!hs.length) return false; for(var i of event.cards){ - if(hs.contains(i)&&get.suit(i,hs)=='heart'&&lib.filter.cardDiscardable(i,player,'difa')) return true; + if(hs.contains(i)&&get.color(i,player)=='red'&&lib.filter.cardDiscardable(i,player,'difa')) return true; } return false; }, + usable:1, check:()=>false, content:function(){ 'step 0' var hs=player.getCards('h'),cards=trigger.cards.filter(function(i){ - return (hs.contains(i)&&get.suit(i,hs)=='heart'&&lib.filter.cardDiscardable(i,player,'difa')); + return (hs.contains(i)&&get.color(i,player)=='redt'&&lib.filter.cardDiscardable(i,player,'difa')); }); if(!cards.length) event.finish(); else{ @@ -531,51 +535,52 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{source:'damageBegin1'}, direct:true, filter:function(event,player){ - return player.isPhaseUsing()&&!player.hasSkill('chaofeng2'); + return player.countCards('he')>0&&player.isPhaseUsing()&&!player.hasSkill('chaofeng2'); }, content:function(){ 'step 0' - var str='弃置一张牌并摸一张牌',num,suit; + var str='弃置一张牌并摸一张牌',color,type; if(trigger.card){ - num=get.number(trigger.card); - suit=get.suit(trigger.card); - if(lib.suit.contains(suit)) str+=';若弃置'+get.translation(suit)+'牌则改为摸两张牌'; - if(typeof num=='number') str+=';若弃置点数为'+get.strNumber(num)+'的牌则伤害+1'; + type=get.type2(trigger.card,false); + color=get.color(trigger.card,false); + if(color!='nocolor') str+=';若弃置'+get.translation(color)+'牌则改为摸两张牌'; + if(type) str+=';若弃置类型为'+get.translation(type)+'的牌则伤害+1'; } var next=player.chooseToDiscard('he',get.prompt('chaofeng',trigger.player),str); next.set('ai',function(card){ - var player=_status.event.player,suit=_status.event.suit,number=_status.event.number; + var player=_status.event.player,suit=_status.event.color,number=_status.event.type; var val=4-get.value(card); - if(get.suit(card,player)==suit) val+=3; - if(get.number(card,player)==number) val+=4; + if(get.color(card)==suit) val+=3; + if(get.type2(card)==number) val+=4; return val; }); next.logSkill=['chaofeng',trigger.player]; - if(lib.suit.contains(suit)){ - event.suit=suit; - next.set('suit',suit); + if(color!='nocolor'){ + event.color=color; + next.set('color',color); } - if(typeof num=='number'){ - event.number=num; - next.set('number',num); + if(type){ + event.type=type; + next.set('type',type); } 'step 1' if(result.bool){ player.addTempSkill('chaofeng2','phaseUseEnd'); var card=result.cards[0]; - player.draw((event.suit&&get.suit(card,player)==event.suit)?2:1); - if(event.number&&get.number(card,player)==event.number) trigger.num++; + player.draw((event.color&&get.color(card,card.original=='h'?player:false)==event.color)?2:1); + if(event.type&&get.type2(card,card.original=='h'?player:false)==event.type) trigger.num++; } }, }, chaofeng2:{}, chuanshu:{ audio:2, - trigger:{player:'phaseZhunbeiBegin'}, + trigger:{player:['phaseZhunbeiBegin','die']}, direct:true, - juexingji:true, + limited:true, + forceDie:true, filter:function(event,player){ - return player.isMinHp(); + return player.isDamaged()&&(event.name=='die'||player.isAlive()); }, skillAnimation:true, animationColor:'gray', @@ -583,42 +588,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 0' player.chooseTarget(lib.filter.notMe,get.prompt('chuanshu'),'令一名其他角色获得〖朝凤〗').set('ai',function(target){ return get.attitude(_status.event.player,target) - }); + }).set('forceDie',true); 'step 1' if(result.bool){ var target=result.targets[0]; player.awakenSkill('chuanshu'); player.logSkill('chuanshu',target); target.addSkillLog('chaofeng'); + if(player.isDead()) event.finish(); } else event.finish(); 'step 2' - player.loseMaxHp(); - 'step 3' for(var i of lib.skill.chuanshu.derivation) player.addSkillLog(i); }, - group:'chuanshu_die', derivation:['ollongdan','drlt_congjian','chuanyun'], - subSkill:{ - die:{ - trigger:{player:'die'}, - direct:true, - forceDie:true, - content:function(){ - 'step 0' - player.chooseTarget(lib.filter.notMe,'是否令一名其他角色获得〖朝凤〗?').set('forceDie',true).set('ai',function(target){ - return get.attitude(_status.event.player,target) - }); - 'step 1' - if(result.bool){ - player.awakenSkill('chuanshu'); - var target=result.targets[0]; - player.logSkill('chuanshu',target); - target.addSkillLog('chaofeng'); - } - }, - }, - }, }, chuanyun:{ audio:2, @@ -982,22 +965,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:'zhukou', trigger:{player:'phaseJieshuBegin'}, filter:function(event,player){ - return game.hasPlayer((current)=>(current!=player)&&!player.getHistory('sourceDamage').length); - }, - prompt:'是否发动【逐寇】?', - prompt2:'对所有其他角色各造成1点伤害', - logTarget:(event,player)=>(game.filterPlayer((current)=>(current!=player))), - check:function(event,player){ - return game.countPlayer(function(current){ - if(current==player) return false; - var num=get.damageEffect(current,player,player); - if(num<0&¤t.hp>2) num/=3; - return num+0.01; - })>0; + return game.countPlayer((current)=>(current!=player))>1&&!player.getHistory('sourceDamage').length; }, + direct:true, content:function(){ - var list=game.filterPlayer((current)=>(current!=player)).sortBySeat(); - for(var i of list) i.damage(); + 'step 0' + player.chooseTarget(get.prompt('zhukou'),'对两名其他角色各造成1点伤害',2,lib.filter.notMe).set('ai',function(target){ + var player=_status.event.player; + return get.damageEffect(target,player,player); + }); + 'step 1' + if(result.bool){ + var targets=result.targets.sortBySeat(); + player.logSkill('zhukou',targets); + for(var i of targets) i.damage(); + } }, }, }, @@ -1006,7 +988,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'phaseZhunbeiBegin'}, forced:true, filter:function(event,player){ - return game.hasPlayer((current)=>(current!=player))&&!game.hasPlayer((current)=>(current!=player&¤t.isHealthy())); + return game.countPlayer((current)=>current.isDamaged())>player.hp; }, juexingji:true, skillAnimation:true, @@ -1043,12 +1025,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var func=function(player,id){ var list=[ '选项一:摸两张牌', - '选项二:本回合使用黑色【杀】无距离和次数限制', + '选项二:对一名其他角色造成1点伤害,且本回合对其使用【杀】无距离和次数限制', '选项三:本回合手牌上限视为无限', - '选项四:弃置一名其他角色的一张手牌和一张装备区的牌', - '选项五:令一名手牌最少的角色将手牌数摸至体力上限(至多摸至五张)', + '选项四:获得一名其他角色区域内的一张牌', + '选项五:令一名其他角色将手牌数摸至体力上限(至多摸至五张)', ]; - var choiceList=ui.create.dialog('玉陨:请选择一'+(player.getDamagedHp()>1?'至两':'')+'项'); + var choiceList=ui.create.dialog('玉陨:请选择一'+(player.getDamagedHp()>0?('至'+get.cnNumber(player.getDamagedHp()+1)):'')+'项'); choiceList.videoId=id; for(var i=0;inum2) num2=val; - }); - if(current.countCards('h')>0&&!current.hasSkillTag('noh')) num2++; - if(num2>num) num=num2; - } - }); - return num/4; + return 0.8*Math.max.apply(Math,game.filterPlayer(function(current){ + return current!=player&¤t.hasCard((card)=>lib.filter.canBeGained(card,current,player),'hej'); + }).map(function(target){ + return get.effect(target,{name:'shunshou_copy'},player,player); + })); break; case 4: var num=0; game.countPlayer(function(current){ - if(current!=player&&get.attitude(player,current)>0&¤t.isMinHandcard()){ + if(current!=player&&get.attitude(player,current)>0){ var num2=Math.min(5,current.maxHp)-current.countCards('h'); if(num2>num) num=num2; } @@ -1115,7 +1094,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ break; } }); - if(player.getDamagedHp()>1) next.set('selectButton',[1,2]); + if(player.getDamagedHp()>0) next.set('selectButton',[1,1+player.getDamagedHp()]); 'step 3' if(player.isOnline2()){ player.send('closeDialog',event.videoId); @@ -1125,53 +1104,54 @@ game.import('character',function(lib,game,ui,get,ai,_status){ for(var i of result.links) game.log(player,'选择了','#g【玉陨】','的','#y选项'+get.cnNumber(1+i,true)) event.links=result.links; if(result.links.contains(0)) player.draw(2); - if(result.links.contains(1)) player.addTempSkill('yuyun_sha'); if(result.links.contains(2)) player.addTempSkill('yuyun_114514'); - if(!result.links.contains(3)){ - if(result.links.contains(4)) event.goto(6); - else event.finish(); - } 'step 4' - if(game.hasPlayer(function(current){ - return current!=player&¤t.hasCard((card)=>lib.filter.canBeDiscarded(card,current,player),'he'); - })){ - player.chooseTarget(true,'弃置一名其他角色手牌区和装备区内的各一张牌',function(card,player,current){ - return current!=player&¤t.hasCard((card)=>lib.filter.canBeDiscarded(card,current,player),'he'); - }).set('ai',function(current){ - var num2=0,player=_status.event.player; - if(get.attitude(player,current)>=0) return 0; - current.countDiscardableCards(player,'e',function(card){ - var val=get.value(card,current); - if(val>num2) num2=val; - }); - if(current.countCards('h')>0&&!current.hasSkillTag('noh')) num2++; - }); - } - else if(event.links.contains(4)) event.goto(6); + if(event.links.contains(1)&&game.hasPlayer(function(current){ + return current!=player; + })) player.chooseTarget(lib.filter.notMe,true,'对一名其他角色造成1点伤害').set('ai',function(target){ + var player=_status.event.player; + return get.damageEffect(target,player,player); + }); + else if(event.links.contains(3)) event.goto(6); + else if(event.links.contains(4)) event.goto(8); else event.finish(); 'step 5' if(result.bool){ var target=result.targets[0]; player.line(target,'green'); - var num=0; - if(target.hasCard((card)=>lib.filter.canBeDiscarded(card,target,player),'h')) num++; - if(target.hasCard((card)=>lib.filter.canBeDiscarded(card,target,player),'e')) num++; - if(num){ - player.discardPlayerCard(target,num,'he',true).set('filterButton',function(button){ - for(var i=0;ilib.filter.canBeGained(card,current,player),'hej'); + })){ + player.chooseTarget(true,'获得一名其他角色区域内的一张牌',function(card,player,current){ + return current!=player&¤t.hasCard((card)=>lib.filter.canBeGained(card,current,player),'hej'); + }).set('ai',function(target){ + var player=_status.event.player; + return get.effect(target,{name:'shunshou_copy'},player,player); + }); + } + else if(event.links.contains(4)) event.goto(8); + else event.finish(); + 'step 7' + if(result.bool){ + var target=result.targets[0]; + player.line(target,'green'); + player.gainPlayerCard(target,'hej',true); } if(!event.links.contains(4)) event.finish(); - 'step 6' - if(game.hasPlayer(function(current){ - return current.isMinHandcard()&¤t.countCards('h')true; @@ -1643,14 +1624,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 0' var hs=target.getCards('h','shan'); if(hs.length){ - var card=target.getEquip(2); - if(card) hs.push(card); + hs.addArray(target.getCards('he',function(card){ + return get.subtype(card)=='equip2'; + })) player.gain(hs,target,'give'); - event.num=(player.hasMark('zhtongyuan_tao')?1:hs.length); + if(player.hasMark('zhtongyuan_basic')) event.finish(); + else event.num=hs.length; } else{ - if(player.hasMark('zhtongyuan_wuxie')) player.draw(); - else if(player.countCards('h')) player.chooseToDiscard('h',true); + if(player.hasMark('zhtongyuan_trick')) player.draw(2); event.finish(); } 'step 1' @@ -1665,7 +1647,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ order:4, result:{ player:function(player,target){ - if(!target.countCards('h','shan')) return player.hasMark('zhtongyuan_wuxie')?1:-1; + if(!target.countCards('h','shan')) return player.hasMark('zhtongyuan_trick')?2:0; return 0; }, target:function(player,target){ @@ -1675,7 +1657,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(card) num-=(get.value(card,target)/2); return num; } - return 0; + return -0.01; }, }, }, @@ -1683,23 +1665,80 @@ game.import('character',function(lib,game,ui,get,ai,_status){ tongyuan:{audio:2}, zhtongyuan:{ audio:'tongyuan', - trigger:{player:'useCard'}, + trigger:{player:['useCardAfter','respondAfter']}, forced:true, filter:function(event,player){ - return (event.card.name=='tao'||event.card.name=='wuxie')&&((player!=_status.currentPhase&&!player.hasMark('zhtongyuan_'+event.card.name))||(player.hasMark('zhtongyuan_tao')&&player.hasMark('zhtongyuan_wuxie'))); + var type=get.type2(event.card,false); + return (type=='basic'||type=='trick')&&get.color(event.card,false)=='red'&&!player.hasMark('zhtongyuan_'+type); }, content:function(){ - if(!player.hasMark('zhtongyuan_'+trigger.card.name)){ - player.addMark('zhtongyuan_'+trigger.card.name,1,false); + var type=get.type2(trigger.card,false); + if(!player.hasMark('zhtongyuan_'+type)){ + player.addMark('zhtongyuan_'+type,1,false); game.log(player,'修改了技能','#g【摧坚】'); } - else{ - if(trigger.card.name=='wuxie') trigger.directHit.addArray(game.players); - else{ - if(typeof trigger.baseDamage!='number') trigger.baseDamage=1; - trigger.baseDamage++; - } - } + }, + group:['zhtongyuan_basic','zhtongyuan_trick'], + subSkill:{ + basic:{ + trigger:{player:'useCard2'}, + direct:true, + locked:true, + filter:function(event,player){ + if(!player.hasMark('zhtongyuan_basic')||!player.hasMark('zhtongyuan_trick')) return false; + var card=event.card; + if(get.color(card,false)!='red'||get.type(card,null,true)!='basic') return false; + var info=get.info(card); + if(info.allowMultiple==false) return false; + if(event.targets&&!info.multitarget){ + if(game.hasPlayer(function(current){ + return !event.targets.contains(current)&&lib.filter.targetEnabled2(card,player,current); + })){ + return true; + } + } + return false; + }, + content:function(){ + 'step 0' + var prompt2='为'+get.translation(trigger.card)+'增加一个目标' + player.chooseTarget(get.prompt('zhtongyuan'),function(card,player,target){ + var player=_status.event.player; + return !_status.event.targets.contains(target)&&lib.filter.targetEnabled2(_status.event.card,player,target); + }).set('prompt2',prompt2).set('ai',function(target){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + return get.effect(target,trigger.card,player,player); + }).set('card',trigger.card).set('targets',trigger.targets); + 'step 1' + if(result.bool){ + if(!event.isMine()&&!event.isOnline()) game.delayx(); + event.targets=result.targets; + } + else{ + event.finish(); + } + 'step 2' + if(event.targets){ + player.logSkill('zhtongyuan',event.targets); + trigger.targets.addArray(event.targets); + } + }, + }, + trick:{ + audio:'zhtongyuan', + trigger:{player:'useCard'}, + forced:true, + filter:function(event,player){ + if(!player.hasMark('zhtongyuan_basic')||!player.hasMark('zhtongyuan_trick')) return false; + var card=event.card; + return (get.color(card,false)=='red'&&get.type(card,null,false)=='trick'); + }, + content:function(){ + trigger.directHit.addArray(game.filterPlayer()); + game.log(trigger.card,'不可被响应'); + }, + }, }, }, xianwei:{ @@ -2498,32 +2537,35 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ 'step 0' - var target=trigger.source; + var target=trigger.source,str=get.translation(player); event.target=target; var th=target.countCards('h'); if(th>0){ + event.num=Math.ceil(th/2); var list=[ - '本回合不能使用或打出手牌', - '展示所有手牌并弃置其中一种花色的所有牌', - ],ph=player.countCards('h'); - if(ph!=th){ - var num=Math.ceil(Math.abs(ph-th)/2); - event.num=num; - list.push('交给'+get.translation(player)+get.cnNumber(num)+'张手牌'); - } - target.chooseControl().set('choiceList',list); + '本回合不能使用或打出手牌,然后'+str+'摸两张牌', + '展示所有手牌,并将其中一种花色的所有牌交给'+str, + '弃置'+get.cnNumber(event.num)+'张手牌', + ]; + target.chooseControl().set('choiceList',list).set('ai',function(){ + return get.rand(0,2); + }); } else event._result={index:0}; 'step 1' switch(result.index){ - case 0:target.addTempSkill('yachai_block');event.finish();break; + case 0: + target.addTempSkill('yachai_block'); + player.draw(2); + event.finish(); + break; case 1:target.showHandcards();break; case 2:event.goto(4);break; } 'step 2' var map={},hs=target.getCards('h'); for(var i of hs){ - if(lib.filter.cardDiscardable(card,target,'yachai')) map[get.suit(i,target)]=true; + map[get.suit(i,target)]=true; } var list=[]; for(var i of lib.suit){ @@ -2531,17 +2573,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } if(!list.length) event.finish(); else if(list.length==1) event._result={control:list[0]}; - else target.chooseControl(list).set('prompt','选择弃置一种花色'); + else target.chooseControl(list).set('prompt','将一种花色的牌交给'+get.translation(player)); 'step 3' var cards=target.getCards('h',function(card){ return get.suit(card,target)==result.control&&lib.filter.cardDiscardable(card,target,'yachai'); }); - if(cards.length) target.discard(cards); + if(cards.length) player.gain(cards,target,'give'); event.finish(); 'step 4' - target.chooseCard('h',true,'交给'+get.translation(player)+get.cnNumber(num)+'张手牌',num); - 'step 5' - if(result.bool) player.gain(result.cards,target,'giveAuto'); + target.chooseToDiscard('h',true,num); }, subSkill:{ block:{ @@ -2602,29 +2642,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){ game.delay(4); 'step 2' game.broadcastAll('closeDialog',event.videoId); - var max=0,max_suit=null,map={}; + var list=[],map={}; for(var i of cards){ var suit=get.suit(i); - if(!map[suit]) map[suit]=0; - map[suit]++; + if(!map[suit]) map[suit]=[]; + map[suit].push(i); } - for(var i in map){ - if(map[i]>max){ - max_suit=i; - max=map[i]; + var dialog=['选择获得一种花色的所有牌']; + for(var suit of lib.suit){ + if(map[suit]){ + var targetsx=map[suit].map(function(card){ + return targets[cards.indexOf(card)]; + }); + dialog.push('
'+get.translation(targetsx)+'
'); + dialog.push(map[suit]); + list.push(suit); } - else if(map[i]==max) max_suit=null; } - if(max_suit){ - var cards=cards.filter(function(card){ - return get.suit(card)==max_suit; - }); - event.cards2=cards; - player.chooseBool('是否获得所有'+get.translation(max_suit)+'牌?','可获得:'+get.translation(cards)); + if(list.length){ + player.chooseControl(list,'cancel2').set('dialog',dialog); } else event.finish(); 'step 3' - if(result.bool){ + if(result.control!='cancel2'){ + event.cards2=cards.filter(function(i){ + return get.suit(i)==result.control; + }) for(var i=0;i3) result2*=0.5; + if(target.hp==4) result2*=0.9; + if(target.hp==5) result2*=0.8; + if(target.hp>5) result2*=0.6; } - if(target.countCards('h')==1) result2*=1.3; - if(target.countCards('h')==2) result2*=1.1; - if(target.countCards('h')>3) result2*=0.5; - if(target.hp==4) result2*=0.9; - if(target.hp==5) result2*=0.8; - if(target.hp>5) result2*=0.6; - // if(get.attitude(player,target)<0){ - // result2*=threaten; - // } - // else{ - // result2*=Math.sqrt(threaten); - // } - // if(target.hp<=1) result2*=2; - // if(target.hp==2) result2*=1.1; - // if(target.countCards('h')==0){ - // result2*=1.1; - // if(get.tag(card,'respondSha')||get.tag(card,'respondShan')) result2*=1.4; - // } - // if(target.countCards('h')==1) result2*=1.05; - // if(target.countCards('h')==2) result2*=1.02; - // if(target.countCards('h')>3) result2*=0.9; - // if(target.hp==4) result2*=0.9; - // if(target.hp==5) result2*=0.8; - // if(target.hp>5) result2*=0.6; } else{ result2+=temp02; diff --git a/game/update.js b/game/update.js index dbfe3c799..ba4815d8b 100644 --- a/game/update.js +++ b/game/update.js @@ -1,21 +1,20 @@ window.noname_update={ - version:'1.9.111', - update:'1.9.110.10.1', + version:'1.9.111.1', + update:'1.9.111', changeLog:[ - '观星类技能操作逻辑修改', - '刘永、荀谌、童渊、TW于禁、万年公主、张宁', - '国战南华老仙、周夷', + '手杀新将', + '十周年武将修改', 'bug修复', ], files:[ - 'card/extra.js', + //'card/extra.js', //'card/gujian.js', - 'card/guozhan.js', + //'card/guozhan.js', //'card/gwent.js', //'card/huanlekapai.js', //'card/mtg.js', //'card/sp.js', - 'card/standard.js', + //'card/standard.js', //'card/swd.js', //'card/yunchou.js', //'card/yingbian.js', @@ -31,19 +30,19 @@ window.noname_update={ 'character/mobile.js', //'character/mtg.js', //'character/offline.js', - 'character/old.js', + //'character/old.js', //'character/ow.js', 'character/rank.js', 'character/refresh.js', 'character/shenhua.js', - 'character/sp.js', + //'character/sp.js', 'character/sp2.js', - 'character/tw.js', - 'character/standard.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', @@ -54,11 +53,11 @@ window.noname_update={ //'layout/mobile/equip.css', //'mode/boss.js', //'mode/brawl.js', - //'mode/chess.js', + 'mode/chess.js', //'mode/connect.js', //'mode/doudizhu.js', 'mode/guozhan.js', - //'mode/identity.js', + 'mode/identity.js', //'mode/single.js', //'mode/stone.js', //'mode/tafang.js', diff --git a/image/character/mayuanyi.jpg b/image/character/mayuanyi.jpg new file mode 100644 index 000000000..9b48c3db8 Binary files /dev/null and b/image/character/mayuanyi.jpg differ diff --git a/image/character/re_wangyi.jpg b/image/character/re_wangyi.jpg new file mode 100644 index 000000000..844fb0cd5 Binary files /dev/null and b/image/character/re_wangyi.jpg differ diff --git a/image/character/simafu.jpg b/image/character/simafu.jpg new file mode 100644 index 000000000..35b4fcd1a Binary files /dev/null and b/image/character/simafu.jpg differ diff --git a/image/character/sp_gaolan.jpg b/image/character/sp_gaolan.jpg new file mode 100644 index 000000000..9a52cf276 Binary files /dev/null and b/image/character/sp_gaolan.jpg differ diff --git a/image/character/sp_huaman.jpg b/image/character/sp_huaman.jpg new file mode 100644 index 000000000..d77087845 Binary files /dev/null and b/image/character/sp_huaman.jpg differ diff --git a/image/character/sp_wangshuang.jpg b/image/character/sp_wangshuang.jpg new file mode 100644 index 000000000..5110d67b4 Binary files /dev/null and b/image/character/sp_wangshuang.jpg differ diff --git a/image/character/sunyi.jpg b/image/character/sunyi.jpg new file mode 100644 index 000000000..8b7fe43b2 Binary files /dev/null and b/image/character/sunyi.jpg differ diff --git a/image/character/yanpu.jpg b/image/character/yanpu.jpg new file mode 100644 index 000000000..343cde0f3 Binary files /dev/null and b/image/character/yanpu.jpg differ diff --git a/layout/layout.css b/layout/layout.css index 2e88fe949..09acdadb5 100644 --- a/layout/layout.css +++ b/layout/layout.css @@ -1303,6 +1303,16 @@ body>.background.land { bottom: 5px; right: 5px; text-align: right; + text-shadow: rgba(213, 194, 179,1) 0 0 3px,rgba(213, 194, 179,1) 0 0 3px,rgba(213, 194, 179,1) 0 0 3px, + rgba(213, 194, 179,1) 0 0 3px,black 0 0 3px; +} +.card>.gaintag { + bottom: 5px; + left: 5px; + text-align: left; + color: white; + text-shadow: rgba(255, 120, 0,1) 0 0 2px,rgba(255, 120, 0,1) 0 0 2px,rgba(255, 120, 0,1) 0 0 2px, + rgba(255, 120, 0,1) 0 0 2px,black 0 0 1px; } .card>.name { top: 9px; @@ -1437,6 +1447,10 @@ div:not(.handcards)>.card>.info>span, .button.card.button>.intro { top: 69px; } +.buttons.guanxing { + min-height: 110px; + width: 90%; +} .buttons.smallzoom { display: block; zoom: 0.65 @@ -1453,10 +1467,10 @@ div:not(.handcards)>.card>.info>span, margin-left: 0px; margin-right: 0px; } -.buttons.scrollbuttons .button:first-child{ +.buttons.scrollbuttons:not(.popup) .button:first-child{ margin-left: 12px; } -.buttons.scrollbuttons .button:last-child{ +.buttons.scrollbuttons:not(.popup) .button:last-child{ margin-right: 12px; } /*.buttons.smallzoom .card.button>.name, @@ -1869,11 +1883,14 @@ div:not(.handcards)>.card>.info>span, } .skill { - font-size: 5px; left: 0 !important; width: 70px !important; white-space: nowrap; } +.skilln { + left: 0 !important; + width: 70px !important; +} .skill>.card { transform: scale(0.56); transform-origin: top left; @@ -1971,6 +1988,22 @@ div:not(.handcards)>.card>.info>span, transform: none !important; text-shadow: black 0 0 2px, black 0 0 3px; } + +.button.replaceButton, +.button.replaceButton.text{ + left: 2px; + top: auto; + text-align: center; + width: 42px; + right: auto; + bottom: 3px; + background-image: linear-gradient(rgba(150, 47, 47, 1), rgba(132, 43, 43, 1)); + border-radius: 3px; +} +.button.replaceButton>div{ + width: 10px; + height: 10px; +} /*--------确认--------*/ #control { text-align: center; @@ -2096,6 +2129,7 @@ div:not(.handcards)>.card>.info>span, width: 100%; font-size: 12px; text-align: center; + white-space: nowrap; /*opacity: 0;*/ } .player:hover>.nameol { @@ -2248,6 +2282,9 @@ div:not(.handcards)>.card>.info>span, #window>.damage.fullscreenavatar[data-nature='thunder']:not(.noshadow)>div:first-child>div{ box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 10px, rgba(0, 0, 0,0.3) 0 0 30px, rgba(100, 74, 139,1) 0 0 60px; } +#window>.damage.fullscreenavatar[data-nature='kami']:not(.noshadow)>div:first-child>div{ + box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 10px, rgba(0, 0, 0,0.3) 0 0 30px, rgba(90, 118, 99,1) 0 0 60px; +} #window>.damage.fullscreenavatar[data-nature='metal']>div:first-child>div{ box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 10px, rgba(255, 0, 0,0.1) 0 0 30px, rgba(255, 203, 0,0.6) 0 0 80px; } @@ -2257,6 +2294,9 @@ div:not(.handcards)>.card>.info>span, #window>.damage.fullscreenavatar[data-nature='water']>div:first-child>div{ box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 10px, rgba(0, 0, 0,0.3) 0 0 30px, rgba(78, 117, 140,1) 0 0 60px, rgba(78, 117, 140,1) 0 0 60px; } +#window>.damage.fullscreenavatar[data-nature='ice']>div:first-child>div{ + box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 20px, rgba(0, 0, 0,0.3) 0 0 40px, rgba(213, 194, 179, 1) 0 0 80px; +} #window>.damage.fullscreenavatar[data-nature='soil']>div:first-child>div{ box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 10px, rgba(0, 0, 0,0.3) 0 0 30px, rgba(128, 59, 2,1) 0 0 60px; } @@ -2724,28 +2764,38 @@ div:not(.handcards)>.card>.info>span, background-image: radial-gradient(circle at bottom left, rgb(255, 218, 71), rgb(224, 191, 62)) } +.identitycircle > div > div[data-color='jin'] { + background-image: radial-gradient(circle at bottom left, rgb(100, 74, 139), rgb(96, 72, 136)) +} + +.identitycircle > div > div[data-color='key'] { + background-image: radial-gradient(circle at bottom left, rgb(203, 177, 255), rgb(203, 177, 255)) +} + .unseen>.avatar,.unseen>.name:not(.name2), .unseen2>.avatar2,.unseen2>.name2 { opacity: 0 !important; } -.player[data-position='0'].unseen>.avatar, -.player[data-position='0'].unseen2>.avatar2, -.player[data-position='0'].unseen>.name:not(.name2):not(.name_seat), -.player[data-position='0'].unseen2>.name2, -.unseen_v>.avatar, -.unseen2_v>.avatar2, -.unseen_v>.name:not(.name2):not(.name_seat), -.unseen2_v>.name2 { +#arena:not(.observe) .player[data-position='0'].unseen>.avatar, +#arena:not(.observe) .player[data-position='0'].unseen2>.avatar2, +#arena:not(.observe) .player[data-position='0'].unseen>.name:not(.name2):not(.name_seat), +#arena:not(.observe) .player[data-position='0'].unseen2>.name2, +#arena:not(.observe) .unseen_v>.avatar, +#arena:not(.observe) .unseen2_v>.avatar2, +#arena:not(.observe) .unseen_v>.name:not(.name2):not(.name_seat), +#arena:not(.observe) .unseen2_v>.name2 { opacity: 0.2 !important } .player>.name_seat { opacity: 0; } -.player:not([data-position='0']).unseen.unseen2>.name_seat { +.player:not([data-position='0']).unseen.unseen2>.name_seat, +.player:not([data-position='0']):not(.fullskin2).unseen>.name_seat { opacity: 1 !important; } + .linked>.avatar,.linked>.avatar2 { transform: rotate(-90deg); } @@ -3187,6 +3237,47 @@ div:not(.handcards)>.card>.info>span, left: calc(50% + 20px); top: calc(50% + 80px) } +#window>.player.connect[data-position='cx0']{ + left:calc(150% / 7 - 1275px / 7); + top:calc(300% / 7 - 160px + 5px); +} +#window>.player.connect[data-position='cx1']{ + left:calc(247% / 7 - 850px / 7); + top:calc(300% / 7 - 160px + 5px); +} +#window>.player.connect[data-position='cx2']{ + left:calc(350% / 7 - 525px / 7); + top:calc(300% / 7 - 160px + 5px); +} +#window>.player.connect[data-position='cx3']{ + left:calc(453% / 7 - 200px / 7); + top:calc(300% / 7 - 160px + 5px); +} +#window>.player.connect[data-position='cx4']{ + left:calc(550% / 7 + 125px / 7); + top:calc(300% / 7 - 160px + 5px); +} +#window>.player.connect[data-position='cx5']{ + left:calc(150% / 7 - 1275px / 7); + top:calc(400% / 7 - 40px + 5px); +} +#window>.player.connect[data-position='cx6']{ + left:calc(247% / 7 - 850px / 7); + top:calc(400% / 7 - 40px + 5px); +} +#window>.player.connect[data-position='cx7']{ + left:calc(350% / 7 - 525px / 7); + top:calc(400% / 7 - 40px + 5px); +} +#window>.player.connect[data-position='cx8']{ + left:calc(453% / 7 - 200px / 7); + top:calc(400% / 7 - 40px + 5px); +} +#window>.player.connect[data-position='cx9']{ + left:calc(550% / 7 + 125px / 7); + top:calc(400% / 7 - 40px + 5px); +} + #window>.player.connect { width: 120px; } @@ -3203,6 +3294,7 @@ div:not(.handcards)>.card>.info>span, top: auto; right: 20px; bottom: 20px; + z-index: 5; } .connectevents.server{ left: 20px; @@ -3211,6 +3303,9 @@ div:not(.handcards)>.card>.info>span, .connectevents.left{ transform: translateX(-85px); } +.connectevents.left2{ + transform: translateX(-170px); +} .connectevents.icon{ width: 20px; height: 20px; @@ -3334,6 +3429,7 @@ div:not(.handcards)>.card>.info>span, #arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.name2, #arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.info, #arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.range, +#arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.gaintag, #arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.addinfo, #arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.background, #arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.image, @@ -3341,6 +3437,7 @@ div:not(.handcards)>.card>.info>span, #arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.name2, #arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.info, #arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.range, +#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.gaintag, #arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.addinfo, #arena.selecting:not(.video) #me .card:not(.selectable)>.background, #arena.selecting:not(.video) #me .card:not(.selectable)>.image, @@ -3348,8 +3445,9 @@ div:not(.handcards)>.card>.info>span, #arena.selecting:not(.video) #me .card:not(.selectable)>.name2, #arena.selecting:not(.video) #me .card:not(.selectable)>.info, #arena.selecting:not(.video) #me .card:not(.selectable)>.range, +#arena.selecting:not(.video) #me .card:not(.selectable)>.gaintag, #arena.selecting:not(.video) #me .card:not(.selectable)>.addinfo, -#arena.selecting:not(.video) .dialog:not(.noselect) .button:not(.selectable):not(.noclick), +#arena.selecting:not(.video) .dialog:not(.noselect) .button:not(.selectable):not(.noclick):not(.replaceButton), .dead,.likedead { opacity: 0.6; } @@ -3376,7 +3474,7 @@ div:not(.handcards)>.card>.info>span, #window:not(.nopointer) .pointertable td>span, #window:not(.nopointer) .config>.toggle.onoff, #window:not(.nopointer) .pointerdialog .button:not(.unselectable), -#window:not(.nopointer) .dialog.fullheight .buttons .button:not(.selectedx):not(.glow):not(.forbidden), +#window:not(.nopointer) .dialog.fullheight .buttons .button:not(.selectedx):not(.glow):not(.glows):not(.forbidden), #window:not(.nopointer) #arena.selecting:not(.video) .player .equips>.card.selectable, #window:not(.nopointer) #arena.selecting #me .card.selectable, #window:not(.nopointer) #arena.selecting .button.selectable, @@ -3432,6 +3530,7 @@ div:not(.handcards)>.card>.info>span, .card.selectable>.name2, .card.selectable>.info, .card.selectable>.range, +.card.selectable>.gaintag, .button.selectable { opacity: 1; } @@ -3446,6 +3545,12 @@ div:not(.handcards)>.card>.info>span, .thunder { color: rgba(0,80,255,0.3); } +.kami { + color: rgba(90,118,99,0.3); +} +.ice { + color: rgba(0,153,255,0.3); +} .poison { color: rgba(30, 133, 51,0.4); } @@ -3777,6 +3882,7 @@ span[data-nature='keymm'] { .player .identity[data-color="ye"], .player .identity[data-color="rYe"], .player .identity[data-color="bYe"], +.player .identity[data-color="jin"], div[data-nature='thunder'], span[data-nature='thunder'] { text-shadow: rgba(100, 74, 139,1) 0 0 2px,rgba(100, 74, 139,1) 0 0 5px,rgba(100, 74, 139,1) 0 0 10px, @@ -3793,6 +3899,23 @@ span[data-nature='thundermm'] { rgba(100, 74, 139,1) 0 0 2px,black 0 0 1px; } +.player .identity[data-color="kami"], +div[data-nature='kami'], +span[data-nature='kami'] { + text-shadow: rgba(90, 118, 99,1) 0 0 2px,rgba(90, 118, 99,1) 0 0 5px,rgba(90, 118, 99,1) 0 0 10px, + rgba(90, 118, 99,1) 0 0 10px,rgba(90, 118, 99,1) 0 0 20px,rgba(90, 118, 99,1) 0 0 20px,black 0 0 1px; +} +div[data-nature='kamim'], +span[data-nature='kamim'] { + text-shadow: rgba(90, 118, 99,1) 0 0 2px,rgba(90, 118, 99,1) 0 0 5px,rgba(90, 118, 99,1) 0 0 5px, + rgba(90, 118, 99,1) 0 0 5px,black 0 0 1px; +} +div[data-nature='kamimm'], +span[data-nature='kamimm'] { + text-shadow: rgba(90, 118, 99,1) 0 0 2px,rgba(90, 118, 99,1) 0 0 2px,rgba(90, 118, 99,1) 0 0 2px, + rgba(90, 118, 99,1) 0 0 2px,black 0 0 1px; +} + .player .identity[data-color="fan"], .player .identity[data-color="wu"], div[data-nature='wood'], @@ -3883,6 +4006,27 @@ span[data-nature='graymx'] { rgba(213, 194, 179,1) 0 0 5px,black 0 0 1px; } +div[data-nature='ice'], +span[data-nature='ice'] { + text-shadow: rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 5px,rgba(213, 194, 179,1) 0 0 10px, + rgba(213, 194, 179,1) 0 0 10px,rgba(213, 194, 179,1) 0 0 20px,rgba(213, 194, 179,1) 0 0 20px,black 0 0 1px; +} +div[data-nature='icem'], +span[data-nature='icem'] { + text-shadow: rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 5px,rgba(213, 194, 179,1) 0 0 5px, + rgba(213, 194, 179,1) 0 0 5px,black 0 0 1px; +} +div[data-nature='icemm'], +span[data-nature='icemm'] { + text-shadow: rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 2px, + rgba(213, 194, 179,1) 0 0 2px,black 0 0 1px; +} +div[data-nature='icemx'], +span[data-nature='icemx'] { + text-shadow: black 0 0 1px,rgba(213, 194, 179,0.2) 0 0 2px,rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 5px, + rgba(213, 194, 179,1) 0 0 5px,black 0 0 1px; +} + .player .identity[data-color="unknownx"], div[data-nature='black'], span[data-nature='black'] { @@ -4048,6 +4192,14 @@ div[data-decoration="bronze"]::after{ color: #152E63; border: 1px solid #152E63; } +.card.fullskin.kami>.name { + color: #1F3C38; + border: 1px solid #1F3C38; +} +.card.fullskin.ice>.name { + color: #3B6273; + border: 1px solid #3B6273; +} .card.fullskin.fire>.name { color: #631515; border: 1px solid #631515; @@ -4220,10 +4372,16 @@ div[data-decoration="bronze"]::after{ .greentext { color: rgb(104,221,127); } +.icetext { + color: rgb(59, 98, 115); +} .thundertext, .controlthundertext { color: rgb(117,186,255); } +.kamitext { + color: rgb(90,118,99); +} .whitetext .thundertext { color: white; } @@ -4313,15 +4471,12 @@ div[data-decoration="bronze"]::after{ top: 74px; right: 6px; } -.tempname { - font-family: 'huangcao','xinwei'; - font-size: 20px; - color: white !important; - pointer-events: none; -} .card .tempname { top: 6px; left: 6px; + font-size: 22px; + color: white !important; + pointer-events: none; } /*.card.equip1 .wunature, .card.equip3 .wunature, @@ -4409,6 +4564,11 @@ div[data-decoration="bronze"]::after{ #me>div:not(.scrollh)>.handcards>.card.selected{ top:-20px; }*/ + +#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; } @@ -5171,4 +5331,4 @@ div[data-decoration="bronze"]::after{ /*--------其它--------*/ ::-webkit-scrollbar { display: none; -} +} \ No newline at end of file diff --git a/mode/chess.js b/mode/chess.js index 718728613..09b20b985 100644 --- a/mode/chess.js +++ b/mode/chess.js @@ -517,11 +517,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } return grids; }, - chooseToMove:function(num,prompt){ - var next=game.createEvent('chooseToMove'); + chooseToMoveChess:function(num,prompt){ + var next=game.createEvent('chooseToMoveChess'); next.num=num||1; next.player=this; - next.setContent('chooseToMove'); + next.setContent('chooseToMoveChess'); next.prompt=prompt; return next; }, @@ -1243,7 +1243,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ game.modeSwapPlayer(player); } }, - chooseToMove:function(){ + chooseToMoveChess:function(){ "step 0" if(!player.movable(0,1)&&!player.movable(0,-1)&& !player.movable(1,0)&&!player.movable(-1,0)){ @@ -5102,7 +5102,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, content:function(){ "step 0" - player.chooseToMove(2,get.prompt('pianyi')); + player.chooseToMoveChess(2,get.prompt('pianyi')); "step 1" if(result.bool){ player.logSkill('pianyi'); @@ -5119,7 +5119,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, content:function(){ "step 0" - player.chooseToMove(player.getHistory('useCard',function(evt){ + player.chooseToMoveChess(player.getHistory('useCard',function(evt){ return evt.card.name=='sha'; }).length,get.prompt('lingdong')); "step 1" @@ -5308,7 +5308,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ "step 0" var move=2; move=game.checkMod(player,move,'chessMove',player); - player.chooseToMove(move).phasing=true; + player.chooseToMoveChess(move).phasing=true; "step 1" if(ui.confirm){ ui.confirm.classList.add('removing'); diff --git a/mode/guozhan.js b/mode/guozhan.js index efdff9acd..5ee3a254d 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -722,25 +722,30 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ return !lib.filter.cardDiscardable(card,player,'gzduannian'); },'h'); }, - check:function(card){ + check:function(event,player){ return player.countCards('h',function(card){ return get.value(card)>=6; })<=Math.max(1,player.countCards('h')/2); }, content:function(){ + 'step 0' var cards=player.getCards('h',function(card){ return lib.filter.cardDiscardable(card,player,'gzduannian'); }); if(cards.length){ player.discard(cards); - player.draw(cards.length); } + else event.finish(); + 'step 1' + player.drawTo(Math.min(5,player.maxHp)); }, }, gzlianyou:{ trigger:{player:'die'}, direct:true, forceDie:true, + skillAnimation:true, + animationColor:'fire', content:function(){ 'step 0' player.chooseTarget(lib.filter.notMe,get.prompt('gzlianyou'),'令一名其他角色获得〖兴火〗').set('forceDie',true).set('ai',function(target){ @@ -757,7 +762,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ derivation:'gzxinghuo', }, gzxinghuo:{ - trigger:{player:'damageBegin1'}, + trigger:{source:'damageBegin1'}, forced:true, filter:function(event){ return event.nature=='fire'; diff --git a/mode/identity.js b/mode/identity.js index 73c08e749..310944538 100644 --- a/mode/identity.js +++ b/mode/identity.js @@ -2826,20 +2826,20 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ silent:true, content:function(){ "step 0" - if(player.isUnderControl()){ - game.swapPlayerAuto(player); - } - var num=3; - var cards=get.cards(num); - event.cards=cards; - var switchToAuto=function(){ - _status.imchoosing=false; - if(event.dialog) event.dialog.close(); - if(event.control) event.control.close(); + var cards=get.cards(3); + game.cardsGotoOrdering(cards); + var next=player.chooseToMove(); + next.set('list',[ + ['牌堆顶',cards], + ['牌堆底'], + ]); + next.set('prompt','观星:点击将牌移动到牌堆顶或牌堆底'); + next.processAI=function(list){ + var cards=list[0][1],player=_status.event.player; var top=[]; var judges=player.getCards('j'); var stopped=false; - if(!player.countCards('h','wuxie')){ + if(!player.hasWuxie()){ for(var i=0;i