diff --git a/audio/die/ol_sunjian.mp3 b/audio/die/ol_sunjian.mp3 new file mode 100644 index 000000000..99b0e6a8e Binary files /dev/null and b/audio/die/ol_sunjian.mp3 differ diff --git a/audio/skill/bizheng1.mp3 b/audio/skill/bizheng1.mp3 new file mode 100644 index 000000000..05ef07b37 Binary files /dev/null and b/audio/skill/bizheng1.mp3 differ diff --git a/audio/skill/bizheng2.mp3 b/audio/skill/bizheng2.mp3 new file mode 100644 index 000000000..b5cb3a21e Binary files /dev/null and b/audio/skill/bizheng2.mp3 differ diff --git a/audio/skill/fz_liegong.mp3 b/audio/skill/fz_liegong.mp3 new file mode 100644 index 000000000..ae99dd2af Binary files /dev/null and b/audio/skill/fz_liegong.mp3 differ diff --git a/audio/skill/fz_new_longdan.mp3 b/audio/skill/fz_new_longdan.mp3 new file mode 100644 index 000000000..f4c44d8e9 Binary files /dev/null and b/audio/skill/fz_new_longdan.mp3 differ diff --git a/audio/skill/fz_new_paoxiao.mp3 b/audio/skill/fz_new_paoxiao.mp3 new file mode 100644 index 000000000..2ac1e90ee Binary files /dev/null and b/audio/skill/fz_new_paoxiao.mp3 differ diff --git a/audio/skill/fz_new_tieji.mp3 b/audio/skill/fz_new_tieji.mp3 new file mode 100644 index 000000000..88517468f Binary files /dev/null and b/audio/skill/fz_new_tieji.mp3 differ diff --git a/audio/skill/fz_wusheng.mp3 b/audio/skill/fz_wusheng.mp3 new file mode 100644 index 000000000..b004bb592 Binary files /dev/null and b/audio/skill/fz_wusheng.mp3 differ diff --git a/audio/skill/fz_xinkuanggu.mp3 b/audio/skill/fz_xinkuanggu.mp3 new file mode 100644 index 000000000..6c7753c26 Binary files /dev/null and b/audio/skill/fz_xinkuanggu.mp3 differ diff --git a/audio/skill/wulie1.mp3 b/audio/skill/wulie1.mp3 new file mode 100644 index 000000000..c7f979e22 Binary files /dev/null and b/audio/skill/wulie1.mp3 differ diff --git a/audio/skill/wulie2.mp3 b/audio/skill/wulie2.mp3 new file mode 100644 index 000000000..188954025 Binary files /dev/null and b/audio/skill/wulie2.mp3 differ diff --git a/audio/skill/yidian1.mp3 b/audio/skill/yidian1.mp3 new file mode 100644 index 000000000..62878b09c Binary files /dev/null and b/audio/skill/yidian1.mp3 differ diff --git a/audio/skill/yidian2.mp3 b/audio/skill/yidian2.mp3 new file mode 100644 index 000000000..49770fe54 Binary files /dev/null and b/audio/skill/yidian2.mp3 differ diff --git a/audio/skill/yinghun_ol_sunjian1.mp3 b/audio/skill/yinghun_ol_sunjian1.mp3 new file mode 100644 index 000000000..27b494e22 Binary files /dev/null and b/audio/skill/yinghun_ol_sunjian1.mp3 differ diff --git a/audio/skill/yinghun_ol_sunjian2.mp3 b/audio/skill/yinghun_ol_sunjian2.mp3 new file mode 100644 index 000000000..e3cd0cbe4 Binary files /dev/null and b/audio/skill/yinghun_ol_sunjian2.mp3 differ diff --git a/card/standard.js b/card/standard.js index 9d02c0d50..0d1e432dc 100644 --- a/card/standard.js +++ b/card/standard.js @@ -153,17 +153,20 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, result:{ target:function(player,target,card,isLink){ - if(!isLink&&player.hasSkill('jiu')&&!target.hasSkillTag('filterDamage',null,{ - player:player, - card:card, - jiu:true, - })){ - if(get.attitude(player,target)>0){ - return -7; - } - else{ - return -4; + if(!isLink&&player.hasSkill('jiu')){ + if(!target.hasSkillTag('filterDamage',null,{ + player:player, + card:card, + jiu:true, + })){ + if(get.attitude(player,target)>0){ + return -7; + } + else{ + return -4; + } } + return -0.5; } return -1.5; }, @@ -1165,7 +1168,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } var es=target.getCards('e'); var noe=(es.length==0||target.hasSkillTag('noe')); - var noe2=(es.length==1&&es[0].name!='tengjia'&&get.value(es[0])<=0); + var noe2=(es.filter(function(esx){ + return esx.name=='tengjia'||get.value(esx)>0 + }).length==0); var noh=(nh==0||target.hasSkillTag('noh')); if(noh&&(noe||noe2)) return 0; if(att<=0&&!target.countCards('he')) return 1.5; @@ -1665,8 +1670,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ popup:false, priority:12, content:function(){ - player.storage.qinggang2.remove(trigger.card); - if(!player.storage.qinggang2.length) player.removeSkill('qinggang2'); + player.storage.qinggang2.remove(trigger.card); + if(!player.storage.qinggang2.length) player.removeSkill('qinggang2'); }, }, qinglong_skill:{ diff --git a/character/diy.js b/character/diy.js index 898ca0b0c..81f5152af 100755 --- a/character/diy.js +++ b/character/diy.js @@ -51,6 +51,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_midori:['female','key',3,['midori_nonghuan','midori_tishen']], key_kyoko:['female','key',3,['kyoko_juwu','kyoko_zhengyi']], key_shizuru:['female','key',3,['shizuru_nianli','shizuru_benzhan']], + key_shiorimiyuki:['female','key',3,['shiorimiyuki_banyin','shiorimiyuki_tingxian']], // diy_caocao:['male','wei',4,['xicai','diyjianxiong','hujia']], // diy_hanlong:['male','wei',4,['siji','ciqiu']], diy_feishi:['male','shu',3,['shuaiyan','moshou']], @@ -133,7 +134,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ diy:{ diy_tieba:["diy_wenyang","ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua","ns_zhangwei"], diy_default:["diy_feishi","diy_liuyan","diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji","diy_liufu","diy_xizhenxihong","diy_liuzan","diy_zaozhirenjun","diy_yangyi","diy_tianyu"], - diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_kagari","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru"], + diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_kagari","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki"], diy_yongjian:["ns_chendao","yj_caoang"], }, }, @@ -149,6 +150,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。', }, characterTitle:{ + key_shiorimiyuki:'#rAngel Beats!', key_shizuru:'#bRewrite', key_kyoko:'#bSummer Pockets', sp_key_kanade:'#rAngel Beats!', @@ -234,6 +236,81 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_lucia:['key_shizuru'], }, skill:{ + shiorimiyuki_banyin:{ + trigger:{player:['damageEnd','recoverEnd']}, + direct:true, + filter:function(event,player){ + return game.hasPlayer(function(current){ + return current!=player&¤t.isDamaged(); + }) + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('shiorimiyuki_banyin'),'令一名其他角色回复1点体力',lib.filter.notMe).set('ai',function(target){ + var player=_status.event.player; + return get.recoverEffect(target,player,player); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('shiorimiyuki_banyin',target); + target.recover(); + } + }, + }, + shiorimiyuki_tingxian:{ + trigger:{player:'phaseUseBegin'}, + direct:true, + content:function(){ + 'step 0' + player.chooseControl('一张','两张','三张','cancel2').set('prompt',get.prompt2('shiorimiyuki_tingxian')).set('ai',function(){ + var player=_status.event.player; + var max=Math.min(player.hp+1,player.maxHp) + var min=Math.min(Math.max(max-2,max-player.hp),3); + if(min) return min-1; + return 3; + }); + 'step 1' + if(result.control=='cancel2'){event.finish();return;} + var num=1+result.index; + player.draw(num); + 'step 2' + event.cards=result; + player.recover(); + 'step 3' + if(get.itemtype(cards)=='cards'){ + trigger.shiorimiyuki_tingxian=cards; + player.addTempSkill('shiorimiyuki_tingxian2'); + } + }, + }, + shiorimiyuki_tingxian2:{ + trigger:{player:'phaseUseEnd'}, + forced:true, + charlotte:true, + mod:{ + aiOrder:function(player,card,num){ + var cards=_status.event.getParent('phaseUse').shiorimiyuki_tingxian; + if(cards&&cards.contains(card)) return num+2; + }, + aiValuetarget:function(player,card,num){ + var cards=_status.event.getParent('phaseUse').shiorimiyuki_tingxian; + if(cards&&cards.contains(card)) return 0; + }, + }, + filter:function(event,player){ + var hs=player.getCards('h'); + return Array.isArray(event.shiorimiyuki_tingxian)&&event.shiorimiyuki_tingxian.filter(function(card){ + return hs.contains(card); + }).length>0 + }, + content:function(){ + var hs=player.getCards('h'); + player.loseHp(trigger.shiorimiyuki_tingxian.filter(function(card){ + return hs.contains(card); + }).length); + }, + }, shizuru_nianli:{ enable:'chooseToUse', prompt:'展示一张♦/♣/♥/♠手牌,然后视为使用一张雷杀/闪/桃/无懈可击', @@ -426,9 +503,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ 'step 0' - player.chooseButton([get.prompt('kyoko_juwu'),[1,Infinity],trigger.cards.filter(function(card){ + player.chooseButton([get.prompt('kyoko_juwu'),trigger.cards.filter(function(card){ return get.position(card,true)=='d'&&get.type(card,false)=='equip'; - })]); + })],[1,Infinity]).set('ai',function(){return 1}); 'step 1' if(result.bool){ player.gain(result.links,'gain2','log'); @@ -8722,6 +8799,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_midori:'西园美鸟', key_kyoko:'岬镜子', key_shizuru:'中津静流', + key_shiorimiyuki:'关根诗织&入江美雪', + key_shiorimiyuki_ab:'关根入江', lucia_duqu:'毒躯', lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。
②当你因【毒】失去体力时,你改为回复等量的体力。
③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。', lucia_zhenren:'振刃', @@ -8932,9 +9011,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ kyoko_shelie:'涉猎', kyoko_zhiheng:'制衡', shizuru_nianli:'念力', - shizuru_nianli_info:'每轮限一次,你可以展示一张♦/♣/♥/♠手牌,然后视为使用一张雷【杀】/【闪】/【桃】/【无懈可击】。', + shizuru_nianli_info:'每轮限一次,你可以展示一张♦/♣/♥/♠手牌,然后视为使用一张不计入次数限制和记录的雷【杀】/【闪】/【桃】/【无懈可击】。', shizuru_benzhan:'奔战', shizuru_benzhan_info:'当你使用或打出牌响应其他角色,或其他角色使用或打出牌响应你后,若此牌为:基本牌,你可令一名角色弃置两张牌或令一名角色摸两张牌;非基本牌,你可对一名角色造成1点伤害或令一名其他角色回复1点体力。', + shiorimiyuki_banyin:'伴音', + shiorimiyuki_banyin_info:'当你受到伤害或回复体力后,你可令一名其他角色回复1点体力。', + shiorimiyuki_tingxian:'铤险', + shiorimiyuki_tingxian_info:'出牌阶段开始时,你可以摸至多三张牌。若如此做,你回复1点体力,且此阶段结束时你失去X点体力。(X为你获得的牌中仍在手牌区的牌的数量)', + shiorimiyuki_tingxian2:'铤险', yj_caoang:'SP曹昂', diff --git a/character/mobile.js b/character/mobile.js index a699008d8..00154306f 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -7,11 +7,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 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"], + mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning"], mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","xin_yuanshao","re_liushan","xin_xiahoudun","re_sp_zhugeliang","re_heqi","re_guanqiujian","re_pangtong","old_liuzan","xin_chengpu","re_sunjian"], mobile_sunben:["re_sunben"], }, }, character:{ + yj_zhanghe:['male','qun',4,['zhilve']], + yj_xuhuang:['male','qun',4,['xhzhiyan']], re_sunjian:['male','wu',4,['gzyinghun','repolu']], zhengxuan:['male','qun',3,['zhengjing']], dengzhi:['male','shu',3,['jimeng','shuaiyan']], @@ -278,6 +281,130 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, characterFilter:{}, skill:{ + //一 将 成 名 + zhilve:{ + trigger:{player:'phaseZhunbeiBegin'}, + forced:true, + content:function(){ + 'step 0' + if(!player.canMoveCard()) event._result={index:1}; + else player.chooseControl().set('choiceList',[ + '移动场上的一张牌', + '本回合的摸牌阶段多摸一张牌且第一张杀无距离次数限制', + ]).set('ai',function(){return 1}); + 'step 1' + if(result.index==1){ + player.addTempSkill('zhilve_yingzi'); + if(!player.getHistory('useCard',function(card){ + return card.card.name=='sha'; + }).length) player.addTempSkill('zhilve_xiandeng'); + event.finish(); + } + else player.moveCard(true); + 'step 2' + if(result.position=='e') player.loseHp(); + else player.addTempSkill('zhilve_dis'); + }, + subSkill:{ + dis:{ + mod:{ + maxHandcard:function(player,num){ + return num-1; + }, + }, + }, + yingzi:{ + trigger:{player:'phaseDrawBegin2'}, + popup:false, + forced:true, + filter:function(event,player){ + return !event.numFixed; + }, + content:function(){trigger.num++}, + }, + xiandeng:{ + mod:{ + targetInRange:function(card,player){ + if(card.name=='sha') return true; + }, + }, + trigger:{player:'useCard1'}, + forced:true, + popup:false, + firstDo:true, + filter:function(event,player){ + return event.card.name=='sha'; + }, + content:function(){ + player.removeSkill(event.name); + if(trigger.addCount!==false){ + trigger.addCount=false; + var stat=player.getStat('card'); + if(stat&&stat.sha) stat.sha--; + } + }, + }, + }, + }, + xhzhiyan:{ + enable:'phaseUse', + filter:function(event,player){ + return player.countCards('h')!=player.maxHp; + }, + filterCard:true, + selectCard:function(){ + var player=_status.event.player; + var num=Math.max(0,player.countCards('h')-player.maxHp); + return [num,num]; + }, + check:function(card){ + var player=_status.event.player; + if(player.getUseValue(card)<=0&&game.hasPlayer(function(current){ + return current!=player&&get.value(card,current)*get.attitude(player,current)>0; + })) return 1; + return 0; + }, + content:function(){ + 'step 0' + if(!cards.length){ + player.draw(player.maxHp-player.countCards('h')); + player.addTempSkill('zishou2'); + event.finish(); + } + else{ + cards=cards.filterInD('d'); + if(cards.length) player.chooseButton(['是否将其中的一张牌交给一名其他角色?',cards]).set('',function(button){ + var player=_status.event.player; + if(game.hasPlayer(function(current){ + return current!=player&&get.value(button.link,current)*get.attitude(player,current)>0; + })) return Math.abs(get.value(button.link)); + return 0; + }); + else event.finish(); + } + 'step 1' + if(result.bool){ + event.card=result.links[0]; + player.chooseTarget(true,lib.filter.notMe,'选择一名其他角色获得'+get.translation(event.card)).set('ai',function(target){ + return get.value(_status.event.getParent().card,target)*get.attitude(_status.event.player,target); + }); + } + else event.finish(); + 'step 2' + var target=result.targets[0]; + player.line(target,'green'); + target.gain(card,'gain2','log'); + }, + ai:{ + order:function(obj,player){ + if(player.countCards('h')>player.maxHp) return 10; + return 0.5; + }, + result:{ + player:1, + }, + }, + }, //水 果 忍 者 zhengjing_guanju:{audio:true}, zhengjing:{ @@ -2830,7 +2957,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ global:"phaseDrawAfter", }, filter:function (event,player){ - if(!player.storage.xinfu_zhaoxin||!player.storage.xinfu_zhaoxin.length) return false; + if(!player.storage.xinfu_zhaoxin||player.storage.xinfu_zhaoxin.length) return false; return player==event.player||player.inRange(event.player); }, direct:true, @@ -4593,6 +4720,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhengjing:'整经', zhengjing_info:'出牌阶段,你可以整理卡牌。然后,你将整理出的卡牌置于一名角色的武将牌上。该角色的准备阶段获得这些牌,跳过此回合的判定和摸牌阶段且本回合内不能发动【整经】。', zhengjing2:'整经', + + mobile_yijiang:'武将设计征集大赛', + yj_zhanghe:'SP张郃', + yj_zhangliao:'SP张辽', + yj_xuhuang:'SP徐晃', + yj_ganning:'SP甘宁', + xhzhiyan:'治严', + xhzhiyan_info:'出牌阶段,若你的手牌数不等于体力上限,则你可以将手牌摸至/弃至手牌上限,然后本回合不能对其他角色使用牌/可以将弃置的一张牌交给一名其他角色。', + zhilve:'知略', + zhilve_info:'锁定技,准备阶段,你选择一项:1.移动场上装备区的一张牌并失去1点体力。2.移动场上判定区的一张牌并令本回合手牌上限-1。3.本回合摸牌阶段多摸一张牌且使用的第一张【杀】无距离限制且不计入次数限制。', } }; }); diff --git a/character/old.js b/character/old.js index f4c96c125..d62b40dbf 100755 --- a/character/old.js +++ b/character/old.js @@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ characterSort:{ old:{ old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","xiaoqiao"], - old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun"], + old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong"], old_yijiang1:["masu","xushu","fazheng","yujin","xin_yujin","old_xusheng","old_lingtong","ol_yujin"], old_yijiang2:["old_madai","old_zhonghui","old_wangyi","old_guanzhang"], old_yijiang3:["liru","old_zhuran","ol_manchong","old_fuhuanghou","old_caochong"], @@ -17,6 +17,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ + ol_huaxiong:["male","qun",6,["new_reyaowu"]], old_wangyun:['male','qun',4,['wylianji','moucheng']], panfeng:['male','qun',4,['kuangfu']], xiaoqiao:['female','wu',3,['tianxiang','hongyan']], @@ -882,6 +883,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_liuyu:'OL刘虞', old_wangyun:'旧王允', old_zhaoyun:'旧赵云', + ol_huaxiong:'旧华雄', old_fuhun:'父魂', old_fuhun_info:'摸牌阶段开始时,你可以放弃摸牌,改为从牌堆顶亮出两张牌并获得之,若亮出的牌颜色不同,你获得技能“武圣”、“咆哮”,直到回合结束。', diff --git a/character/refresh.js b/character/refresh.js index cf585892b..98f23ff57 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -59,7 +59,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_sunshangxiang:['female','wu',3,['xiaoji','rejieyin']], re_zhenji:['female','wei',3,['reluoshen','reqingguo']], re_zhugeliang:['male','shu',3,['reguanxing','kongcheng']], - re_huaxiong:["male","qun",6,["new_reyaowu"]], + re_huaxiong:["male","qun",6,["reyaowu"]], re_zhangjiao:['male','qun',3,['xinleiji','xinguidao','huangtian'],['zhu']], xin_yuji:['male','qun',3,['reguhuo']], @@ -137,9 +137,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'damageBegin3'}, forced:true, content:function(){ - var num=Math.min(trigger.num,player.countMark('wulie2')); - trigger.num-=num; - player.removeMark('wulie2',num); + trigger.cancel(); + player.removeMark('wulie2',1); if(!player.storage.wulie2) player.removeSkill('wulie2'); }, }, @@ -268,7 +267,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, ollongdan:{ audio:'longdan_sha', - audioname:['re_zhaoyun','sp_zhaoyun'], + audioname:['re_zhaoyun'], enable:['chooseToUse','chooseToRespond'], prompt:'将杀当做闪,或将闪当做杀,或将桃当做酒,或将酒当做桃使用或打出', viewAs:function(cards,player){ @@ -3896,6 +3895,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ threaten:2, }, }, + reyaowu:{ + trigger:{player:'damageBegin3'}, + audio:'new_reyaowu', + forced:true, + filter:function(event){ + return event.card&&(get.color(event.card)!='red'||event.source&&event.source.isAlive()); + }, + content:function(){ + trigger[get.color(trigger.card)!='red'?'player':'source'].draw(); + }, + }, "new_reyaowu":{ trigger:{ player:"damageBegin3", @@ -3903,7 +3913,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //priority:1, audio:2, filter:function (event){ - return event.card&&event.card.name=='sha'; + return event.card&&event.card.name=='sha'&&(get.color(event.card)!='red'||event.source&&event.source.isAlive()); }, forced:true, check:function (event){ @@ -3918,11 +3928,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ effect:{ target:function (card,player,target,current){ - if(card.name=='sha'&&(get.color(card)=='red')){ - return [1,-2]; + if(card.name=='sha'&&(get.color(card)=='red')&&get.attitude(player,target)<=0){ + return [1,0.8,1,0]; } if(card.name=='sha'&&(get.color(card)=='black')){ - return [0,-0.6]; + return [1,0.4]; } }, }, @@ -6652,6 +6662,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "new_reqingnang_info":"出牌阶段,你可以弃置一张手牌,令一名本回合内未成为过〖青囊〗的目标的角色回复一点体力。若你弃置的是黑色牌,则你本回合内不能再发动〖青囊〗。", "new_reyaowu":"耀武", "new_reyaowu_info":"锁定技,当一名角色使用【杀】对你造成伤害时,若此杀为红色,该角色回复1点体力或摸一张牌。否则则你摸一张牌。", + reyaowu:'耀武', + reyaowu_info:'锁定技,当你受到牌造成的伤害时,若此牌为红色,则伤害来源摸一张牌;否则你摸一张牌。', reqingguo:'倾国', reqingguo_info:'你可以将一张黑色牌当做【闪】使用或打出。', @@ -6862,7 +6874,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_sunjian:'界孙坚', wulie:'武烈', wulie2:'武烈', - wulie_info:'限定技,结束阶段,你可以失去任意点体力并指定等量的角色。这些角色各获得一枚「烈」。有「烈」的角色受到1点伤害时,其移去一枚「烈」,然后令伤害-1。', + wulie_info:'限定技,结束阶段,你可以失去任意点体力并指定等量的角色。这些角色各获得一枚「烈」。有「烈」的角色受到伤害时,其移去一枚「烈」,然后防止此伤害。', refresh_standard:'界限突破·标', refresh_feng:'界限突破·风', diff --git a/character/shenhua.js b/character/shenhua.js index aee9b42e3..f8cdf38a4 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -177,8 +177,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(!player.storage.zhengrong) player.storage.zhengrong=[]; player.storage.zhengrong.push(card); player.markSkill('zhengrong'); - game.delayx(); } + 'step 3' + game.delayx(); }, marktext:'荣', intro:{ @@ -1587,13 +1588,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return (player.getHistory('useCard',function(evt){ return evt.getParent('phaseUse')==event; }).length0; diff --git a/character/sp.js b/character/sp.js index 2b4a1a316..22fae3390 100755 --- a/character/sp.js +++ b/character/sp.js @@ -832,7 +832,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, direct:true, filter:function(event,player){ - return player.countCards('he')>0; + return player.countCards('h',function(card){ + return _status.connectMode||get.type(card)!='basic'; + })>0; }, content:function(){ 'step 0' @@ -841,7 +843,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); list.sortBySeat(); event.targets=list; - player.chooseToDiscard(get.prompt2('xiying'),'he').set('logSkill',['xiying',list]).set('ai',function(card){ + player.chooseToDiscard(get.prompt2('xiying'),'h',function(card){ + return get.type(card)!='basic'; + }).set('logSkill',['xiying',list]).set('ai',function(card){ return _status.event.val-get.value(card) }).set('val',function(){ return 4*Math.sqrt(game.countPlayer(function(current){ @@ -876,11 +880,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, gangzhi:{ audio:2, - trigger:{player:'damageBefore'}, + trigger:{ + player:'damageBefore', + source:'damageBefore', + }, forced:true, content:function(){ trigger.cancel(); - player.loseHp(trigger.num); + trigger.player.loseHp(trigger.num); }, }, beizhan:{ @@ -1018,7 +1025,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, filterCard:true, filterTarget:function(card,player,target){ - //if(target.storage.mouzhi2&&target.storage.mouzhi2.contains(player)) return false; + if(target.storage.mouzhi2&&target.storage.mouzhi2.contains(player)) return false; return target!=player; }, delay:0, @@ -3607,7 +3614,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ next.target=trigger.player; next.num=num; next.setContent(function(){ - if(target.isAlive()) player.chooseToDiscard(num,true); + if(target.isAlive()) player.chooseToDiscard(num,true,'he'); }); }, }, @@ -6550,7 +6557,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ logTarget:'player', check:function(event,player){ if(get.mode()=='guozhan'){ - if(!event.player.isUnseen(1)&&get.guozhanRank(event.player.name2)<4) return false; + if(!event.player.isUnseen(1)&&get.guozhanRank(event.player.name2,event.player)<4) return false; } if(event.player.hasSkill('subplayer')) return false; if(get.attitude(player,event.player)<0){ @@ -6564,7 +6571,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger.cancel(); if(trigger.player.countCards('e')){ trigger.player.chooseControl(function(event,player){ - if(get.mode()=='guozhan'&&get.guozhanRank(player.name2)<4) return 1; + if(get.mode()=='guozhan'&&get.guozhanRank(player.name2,player)<4) return 1; if(player.hp==1) return 1; if(player.hp==2&&player.countCards('e')>=2) return 1; return 0; @@ -7304,8 +7311,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, ai:{ effect:{ - player:function(card,player,target){ - if(card.name=='sha'){ + player:function(card,player,target,current,isLink){ + if(!isLink&&card.name=='sha'){ if(player._duanbingtmp) return; player._duanbingtmp=true; if(get.effect(target,card,player,player)<=0){ @@ -8691,7 +8698,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'饶舌', content:'mark' }, - chat:['粗鄙之语','天地不容','谄谀之臣','皓首匹夫,苍髯老贼','二臣贼子','断脊之犬','我从未见过有如此厚顔无耻之人!'], + chat:['粗鄙之语','天地不容','谄谀之臣','皓首匹夫,苍髯老贼','二臣贼子','断脊之犬','我从未见过有如此厚颜无耻之人!'], callback:function(){ 'step 0' if(event.num1<=event.num2){ @@ -9194,8 +9201,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(!player.hasSkill('xindangxian')){ list.push('xindangxian'); } - if(!player.hasSkill('zhiman')){ - list.push('zhiman'); + if(!player.hasSkill('rezhiman')){ + list.push('rezhiman'); } if(list.length){ player.draw(); @@ -9223,6 +9230,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ intro:{ content:'已因$发动过技能', }, + derivation:['new_rewusheng','xindangxian','rezhiman'], }, zhengnan:{ audio:1, @@ -9251,7 +9259,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, ai:{ threaten:2.4 - } + }, + derivation:['wusheng','dangxian','zhiman'], }, xiefang:{ mod:{ @@ -14711,6 +14720,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, chongzhen:{ group:['chongzhen1','chongzhen2'], + audio:'chongzhen1', ai:{ combo:'ollongdan', mingzhi:false, @@ -18429,7 +18439,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mouzhi_info:'出牌阶段限一次,你可以将一张手牌交给一名角色,若如此做,当其于其下回合的出牌阶段内对一名角色造成伤害后,若是此阶段其第一次对该角色造成伤害,你摸一张牌。', sp_shenpei:'SP审配', gangzhi:'刚直', - gangzhi_info:'锁定技,当你即将受到伤害时,你防止此伤害,改为失去等量的体力。', + gangzhi_info:'锁定技,当你即将受到或造成伤害时,你防止此伤害,改为受到伤害的角色失去等量的体力。', beizhan:'备战', beizhan2:'备战', beizhan_info:'结束阶段,你可以令一名角色将手牌摸至体力上限(至多为5)。其下个回合开始时,若其手牌数为全场最多,则其此回合内使用的牌不能指定其他角色为目标。', diff --git a/character/yijiang.js b/character/yijiang.js index 3a65859ee..d7e0f2856 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -23,7 +23,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ caochong:['male','wei',3,['chengxiang','renxin']], xunyou:['male','wei',3,['qice','zhiyu']], xin_xushu:['male','shu',3,['xinwuyan','xinjujian']], - xin_masu:['male','shu',3,['sanyao','zhiman']], + xin_masu:['male','shu',3,['resanyao','rezhiman']], xin_fazheng:['male','shu',3,['xinenyuan','xinxuanhuo'],['die_audio']], zhuran:['male','wu',4,['danshou']], xusheng:['male','wu',4,['xinpojun']], @@ -43,7 +43,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ manchong:['male','wei',3,['xinjunxing','yuce']], guanzhang:['male','shu',4,['fuhun']], chenqun:['male','wei',3,['pindi','faen']], - sunluban:['female','wu',3,['chanhui','jiaojin']], + sunluban:['female','wu',3,['rechanhui','rejiaojin']], guyong:['male','wu',3,['shenxing','bingyi']], caifuren:['female','qun',3,['qieting','xianzhou']], yj_jushou:['male','qun',3,['jianying','shibei']], @@ -62,7 +62,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ hanhaoshihuan:['male','wei',4,['shenduan','yonglve']], caorui:['male','wei',3,['huituo','mingjian','xingshuai'],['zhu']], - caoxiu:['male','wei',4,['qianju','qingxi']], + caoxiu:['male','wei',4,['reqianju','reqingxi']], zhongyao:['male','wei',3,['huomo','zuoding']], liuchen:['male','shu',4,['zhanjue','qinwang'],['zhu']], zhangyi:['male','shu',4,['wurong','shizhi']], @@ -4711,6 +4711,96 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } }, + reqianju:{ + mod:{ + globalFrom:function(from,to,distance){ + return distance-(Math.max(1,from.getDamagedHp())); + } + } + }, + reqingxi:{ + audio:'qingxi', + trigger:{player:'useCardToPlayered'}, + filter:function(event,player){ + return event.card.name=='sha'; + }, + check:function(event,player){ + return get.attitude(player,event.target)<0; + }, + content:function(){ + 'step 0' + var num=game.countPlayer(function(current){ + return player.inRange(current); + }); + if(trigger.target.countCards('h')2){ + return 0; + } + return 8-get.value(card); + } + }); + } + 'step 1' + if(!event.directfalse&&result.bool){ + var e1=player.getEquip(1); + if(e1){ + player.discard(e1,'notBySelf'); + } + } + else{ + var storage=trigger.target.storage; + var id=trigger.target.playerid; + var map=trigger.customArgs; + if(!map[id]) map[id]={}; + if(!map[id].extraDamage) map[id].extraDamage=0; + map[id].extraDamage++; + if(!storage.reqingxi2) storage.reqingxi2=[]; + storage.reqingxi2.push(trigger.card); + trigger.target.addTempSkill('reqingxi2'); + } + } + }, + reqingxi2:{ + mod:{ + cardEnabled:function(card,player){ + if(card.name=='shan'&&player.storage.reqingxi2&&player.storage.reqingxi2.filter(function(cd){ + return get.suit(cd)!=get.suit(card); + }).length) return false; + }, + }, + firstDo:true, + onremove:true, + trigger:{ + player:['damage','damageCancelled','damageZero'], + target:['shaMiss','useCardToExcluded'], + }, + charlotte:true, + filter:function(event,player){ + return player.storage.reqingxi2&&event.card&&player.storage.reqingxi2.contains(event.card); + }, + silent:true, + forced:true, + popup:false, + priority:12, + content:function(){ + player.storage.reqingxi2.remove(trigger.card); + if(!player.storage.reqingxi2.length) player.removeSkill('reqingxi2'); + }, + }, qingxi:{ audio:2, trigger:{source:'damageBegin1'}, @@ -4924,8 +5014,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(arg.target!=player.storage.xinxianzhen) return false; }, effect:{ - player:function(card,player,target,current){ - if(!player.storage.xinxianzhen) return; + player:function(card,player,target,current,lsLink){ + if(isLink||!player.storage.xinxianzhen) return; if(target!=player.storage.xinxianzhen&&['sha','guohe','shunshou','huogong','juedou'].contains(card.name)){ if(get.effect(player.storage.xinxianzhen,card,player,player)>0){ return [1,2]; @@ -7914,6 +8004,80 @@ game.import('character',function(lib,game,ui,get,ai,_status){ order:7 } }, + rezhiman:{ + audio:'zhiman', + audioname:['guansuo'], + trigger:{source:'damageBegin2'}, + check:function(event,player){ + if(get.damageEffect(event.player,player,player)<0) return true; + var att=get.attitude(player,event.player); + if(att>0&&event.player.countCards('j')) return true; + if(event.num>1){ + if(att<0) return false; + if(att>0) return true; + } + var cards=event.player.getGainableCards(player,'he'); + for(var i=0;i=6) return true; + } + return false; + }, + logTarget:'player', + content:function(){ + if(trigger.player.countGainableCards(player,'hej')){ + player.gainPlayerCard(trigger.player,'hej',true); + } + trigger.cancel(); + } + }, + resanyao:{ + audio:'sanyao', + enable:'phaseUse', + usable:1, + selectCard:function(){ + return [Math.max(1,ui.selected.targets.length),game.countPlayer(function(current){ + return current.isMaxHp(); + })]; + }, + selectTarget:function(){ + return ui.selected.cards.length; + }, + filterTarget:function(card,player,target){ + return target.isMaxHp(); + }, + check:function(card){ + if(game.countPlayer(function(current){ + return current.isMaxHp()&&get.effect(current,'sanyao',player,player)>0; + })<=ui.selected.cards.length) return 0; + return 7-get.value(card); + }, + position:'he', + filterCard:true, + content:function(){ + target.damage('nocard'); + }, + ai:{ + result:{ + target:function(player,target){ + var disbool=false; + if(player.hasSkill('rezhiman')){ + if(target.countCards('j')&&get.attitude(player,target)>0){ + return 1; + } + if(target.countCards('he',function(card){ + return card.name=='tengjia'||get.value(card)>0; + })){ + disbool=true; + } + } + var damage=get.damageEffect(target,player); + if(disbool&&get.attitude(player,target)<0) return Math.min(-1,damage); + return damage; + }, + }, + order:7 + } + }, reqiaoshui:{ audio:'qiaoshui', enable:'phaseUse', @@ -8450,6 +8614,90 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } }, + rechanhui:{ + audio:'chanhui', + trigger:{player:'useCardToPlayer'}, + filter:function(event,player){ + if(_status.currentPhase!=player) return false; + if(event.targets.length>1) return false; + var card=event.card; + if(card.name=='sha'||get.type(card)=='trick') return true; + return false; + }, + direct:true, + content:function(){ + "step 0" + player.chooseTarget(get.prompt2('rechanhui'),function(card,player,target){ + if(player==target||target.hasSkill('rechanhui2')) return false; + var trigger=_status.event; + return player.canUse(trigger.card,target)&&trigger.targets.contains(target)==false; + }).set('ai',function(target){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + return get.effect(target,trigger.card,player,player)+0.01; + }).set('targets',trigger.targets).set('card',trigger.card); + "step 1" + if(result.bool){ + //game.delay(0,200); + event.target=result.targets[0]; + } + else{ + event.finish(); + } + "step 2" + player.logSkill('rechanhui',event.target); + event.target.chooseCard('交给'+get.translation(player)+'一张手牌,或成为'+ + get.translation(trigger.card)+'的额外目标').set('ai',function(card){ + return 5-get.value(card); + }); + "step 3" + if(result.bool){ + player.gain(result.cards,event.target,'giveAuto'); + trigger.untrigger(); + trigger.getParent().player=event.target; + game.log(event.target,'成为了',trigger.card,'的使用者'); + } + else{ + game.log(event.target,'成为了',trigger.card,'的额外目标'); + trigger.getParent().targets.push(event.target); + target.addTempSkill('rechanhui2'); + } + } + }, + rechanhui2:{}, + rejiaojin:{ + audio:'jiaojin', + trigger:{target:'useCardToTargeted'}, + filter:function(event,player){ + return player.countCards('he',function(card){ + return _status.connectMode||get.type(card)=='equip'; + })&&event.player&&event.player.sex=='male'; + }, + direct:true, + content:function(){ + "step 0" + var next=player.chooseToDiscard('he','骄矜:是否弃置一张装备牌令'+get.translation(trigger.card)+'对你无效?',function(card,player){ + return get.type(card)=='equip'; + }); + next.set('ai',function(card){ + if(_status.event.goon){ + return 9-get.value(card); + } + else if(_status.event.goon2){ + return 4-get.value(card); + } + return 0; + }); + next.set('goon',lib.skill.zhenlie.check(trigger,player)); + next.set('goon2',get.effect(player,trigger.card,trigger.player,player)<0) + next.logSkill='rejiaojin'; + "step 1" + if(result.bool){ + game.delay(0.5); + trigger.excluded.push(player); + } + } + }, chanhui2:{ trigger:{player:'phaseJieshuBegin'}, forced:true, @@ -11540,6 +11788,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qianju_info:'锁定技,若你已受伤,你计算与其他角色的距离时-X(X为你已损失的体力值)。', qingxi:'倾袭', qingxi_info:'当你使用【杀】对目标角色造成伤害时,若你的装备区里有武器牌,你可以令其选择一项:1、弃置X张手牌(X为此武器牌的攻击范围),若如此做,其弃置你的此武器牌;2、令伤害值+1', + reqianju:'千驹', + reqianju_info:'锁定技,若你已受伤,你计算与其他角色的距离时-X(X为你已损失的体力值且至少为1)。', + reqingxi:'倾袭', + reqingxi_info:'当你使用【杀】指定目标后,你可以令其选择一项:1、弃置X张手牌(X为你攻击范围内的角色数),若如此做,其弃置你的此武器牌;2、令此【杀】伤害值+1且其不能使用与此牌花色不同的【闪】或转化的【闪】直到此【杀】结算完成。', jieyue:'节钺', jieyue1:'节钺', jieyue2:'节钺', @@ -11687,8 +11939,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xiansi_info:'准备阶段开始时,你可以将一至两名角色的各一张牌置于你的武将牌上,称为“逆”;当一名角色需要对你使用【杀】时,其可以移去两张“逆”,然后视为对你使用了一张【杀】。', chanhui:'谮毁', chanhui_info:'出牌阶段限一次,当你使用【杀】或黑色普通锦囊牌指定唯一目标时,你可令可以成为此牌目标的另一名其他角色选择一项:交给你一张牌并成为此牌的使用者;或成为此牌的额外目标。', + rechanhui:'谮毁', + rechanhui_info:'出牌阶段,当你使用【杀】或普通锦囊牌指定唯一目标时,你可令可以成为此牌目标的另一名其他角色选择一项:交给你一张牌并成为此牌的使用者;或成为此牌的额外目标且本回合内不能再次成为〖谮毁〗的目标。', jiaojin:'骄矜', jiaojin_info:'当你受到男性角色造成的伤害时,你可以弃置一张装备牌,令此伤害-1。', + rejiaojin:'骄矜', + rejiaojin_info:'当你成为男性角色使用的牌的目标后,你可以弃置一张装备牌,令此牌对你无效。', shenxing:'慎行', shenxing_info:'出牌阶段,你可以弃置两张牌,然后摸一张牌。', bingyi:'秉壹', @@ -11782,6 +12038,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ paiyi_backup:'排异', sanyao:'散谣', zhiman:'制蛮', + resanyao:'散谣', + rezhiman:'制蛮', qianxi:'潜袭', qianxi2:'潜袭', qianxi2_bg:'袭', @@ -11802,6 +12060,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qianxi_info:'准备阶段,你可以摸一张牌,并弃置一张牌,然后令一名距离为1的角色不能使用或打出与你弃置的牌颜色相同的手牌直到回合结束。', zhiman_info:'当你对一名其他角色造成伤害时,你可以防止此伤害,然后获得其装备区或判定区的一张牌。', sanyao_info:'出牌阶段限一次,你可以弃置一张牌并指定一名体力值最多(或之一)的角色,你对其造成1点伤害。', + rezhiman_info:'当你对一名其他角色造成伤害时,你可以防止此伤害,然后获得其区域内的一张牌。', + resanyao_info:'出牌阶段限一次,你可以弃置任意张牌并指定等量体力值最多(或之一)的角色。你对这些角色依次造成1点伤害。', paiyi_info:'出牌阶段限一次,你可以移去一张“权”并选择一名角色,令其摸两张牌,然后若其手牌数大于你,你对其造成1伤害。', zili_info:'觉醒技,准备阶段开始时,若“权”的数量不小于3,你减1点体力上限,然后选择一项:1、回复1点体力;2、摸两张牌。然后你获得技能“排异”。', quanji_info:'当你受到1点伤害后,你可以摸一张牌,然后将一张手牌置于武将牌上,称为“权”;你的手牌上限+X(X为“权”的数量)。', diff --git a/game/asset.js b/game/asset.js index a6668e02f..ab5c98b49 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.100.2', + 'v1.9.100.3', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -573,6 +573,7 @@ window.noname_asset_list=[ 'audio/die/re_zhonghui.mp3', 'audio/die/xin_chengpu.mp3', 'audio/die/zhengxuan.mp3', + 'audio/die/ol_sunjian.mp3', 'audio/skill/anguo1.mp3', 'audio/skill/anguo2.mp3', @@ -2525,6 +2526,20 @@ window.noname_asset_list=[ 'audio/skill/zhengjing_guanju.mp3', 'audio/skill/zhengjing1.mp3', 'audio/skill/zhengjing2.mp3', + 'audio/skill/bizheng1.mp3', + 'audio/skill/bizheng2.mp3', + 'audio/skill/fz_liegong.mp3', + 'audio/skill/fz_new_longdan.mp3', + 'audio/skill/fz_new_paoxiao.mp3', + 'audio/skill/fz_new_tieji.mp3', + 'audio/skill/fz_wusheng.mp3', + 'audio/skill/fz_xinkuanggu.mp3', + 'audio/skill/wulie1.mp3', + 'audio/skill/wulie2.mp3', + 'audio/skill/yidian1.mp3', + 'audio/skill/yidian2.mp3', + 'audio/skill/yinghun_ol_sunjian1.mp3', + 'audio/skill/yinghun_ol_sunjian2.mp3', 'font/huangcao.ttf', 'font/shousha.ttf', @@ -3096,6 +3111,10 @@ window.noname_asset_list=[ 'image/character/key_kyoko.jpg', 'image/character/key_shizuru.jpg', 'image/character/ol_sunjian.jpg', + 'image/character/key_shiorimiyuki.jpg', + 'image/character/ol_huaxiong.jpg', + 'image/character/yj_xuhuang.jpg', + 'image/character/yj_zhanghe.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', diff --git a/game/game.js b/game/game.js index 261a1a2b6..55480c8c1 100644 --- a/game/game.js +++ b/game/game.js @@ -13361,7 +13361,7 @@ var js=from.getCards('j'); for(var i=0;i0){ if(!_status.event.nojudge&&target.countCards('j',function(card){ return game.hasPlayer(function(current){ - return !current.hasJudge(card)&&get.attitude(player,current)<0; + return current.canAddJudge(card)&&get.attitude(player,current)<0; }) })) return 14; if(target.countCards('e',function(card){ @@ -13420,7 +13420,7 @@ } } if(i==es.length&&(_status.event.nojudge||!ui.selected.targets[0].countCards('j',function(card){ - return !target.hasJudge(card); + return target.canAddJudge(card); }))){ return 0; } @@ -13432,6 +13432,7 @@ if(event.prompt2) next.set('prompt2',event.prompt2); if(event.forced) next.set('forced',true); 'step 1' + event.result=result; if(result.bool){ player.line2(result.targets,'green'); event.targets=result.targets; @@ -13460,7 +13461,7 @@ var targets1=_status.event.targets1; if(get.position(button.link)=='j'){ if(_status.event.nojudge) return false; - return !targets1.storage._disableJudge&&!targets1.hasJudge(button.link); + return targets1.canAddJudge(button.link); } else{ return targets1.isEmpty(get.subtype(button.link)); @@ -13483,8 +13484,9 @@ event.targets[1].addJudge(link); } event.targets[0].$give(link,event.targets[1]) + event.result.card=link; + event.result.position=get.position(link); game.delay(); - event.result={bool:true}; } }, useCard:function(){ @@ -18105,7 +18107,7 @@ var att2=get.attitude(player,current2); if(att2>=0) return false; } - return current!=current2&&!current2.storage._disableJudge&&!current2.hasJudge(js[i]); + return current!=current2&¤t2.canAddJudge(js[i]); })){ return true; } @@ -18995,6 +18997,7 @@ return next; }, canAddJudge:function(card){ + if(this.storage._disableJudge) return false; var name; if(typeof card=='string'){ name=card; @@ -32324,7 +32327,7 @@ if(card.ai.basic.equipValue==undefined) card.ai.basic.equipValue=1; } if(card.ai.basic.value==undefined) card.ai.basic.value=function(card,player,index,method){ - if(player.isDisabled(get.subtype(card))) return 0.1; + if(player.isDisabled(get.subtype(card))) return 0.01; var value=0; var info=get.info(card); var current=player.getEquip(info.subtype); @@ -32337,11 +32340,13 @@ } if(typeof equipValue=='function'){ if(method=='raw') return equipValue(card,player); - return equipValue(card,player)-value; + if(method=='raw2') return equipValue(card,player)-value; + return Math.max(0.1,equipValue(card,player)-value); } if(typeof equipValue!='number') equipValue=0; if(method=='raw') return equipValue; - return equipValue-value; + if(method=='raw2') return equipValue-value; + return Math.max(0.1,equipValue-value); } if(!card.ai.result.keepAI) card.ai.result.target=function(player,target,card){ return get.equipResult(player,target,card.name); @@ -50560,7 +50565,7 @@ else return 0; } if(typeof value=='number') return value; - if(typeof value=='function') return value(card,player); + if(typeof value=='function') return value(card,player,null,'raw2'); return 0; }, equipValueNumber:function(card){ @@ -50652,7 +50657,7 @@ for(var i=0;i1) rank=5; if(skills.contains('qiaobian')&&player.countCards('h')>4) rank=6; - if((get.guozhanRank(player.name1)0.5?1:-1; return (rank*get.attitude(player,trigger.source))>0?'副将':'主将'; }()); @@ -7330,6 +7478,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ "new_mouduan_info":"结束阶段,若你于本回合内使用过四种花色或三种类别的牌,则你可以移动场上的一张牌。", "new_longdan":"龙胆", "new_longdan_info":"你可以将【杀】当【闪】,【闪】当【杀】使用或打出。当你发动〖龙胆〗使用的【杀】被【闪】抵消时,你可以对另一名角色造成1点伤害;当你发动〖龙胆〗使用的【闪】抵消了【杀】时,你可以令一名其他角色回复1点体力(不能是【杀】的使用者)。", + "fz_new_longdan":"龙胆", + "fz_new_longdan_info":"你可以将【杀】当【闪】,【闪】当【杀】使用或打出。当你发动〖龙胆〗使用的【杀】被【闪】抵消时,你可以对另一名角色造成1点伤害;当你发动〖龙胆〗使用的【闪】抵消了【杀】时,你可以令一名其他角色回复1点体力(不能是【杀】的使用者)。", "new_paoxiao":"咆哮", "new_paoxiao_info":"锁定技,你使用【杀】无数量限制;当你于一回合内使用第二张【杀】时,摸一张牌。", "new_kurou":"苦肉", @@ -7870,12 +8020,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ mayChangeVice:function(){ 'step 0' player.chooseBool('是否变更副将?').set('ai',function(){ - var name=player.name2; - var skills=lib.character[name][3].slice(0); - for(var i=0;i