From 772ea6b7498c82180bb0ac6740a08f8232568770 Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Wed, 15 Jan 2020 23:08:08 +0800 Subject: [PATCH] v1.9.97.2 --- character/diy.js | 98 +++++++++++++++++++++++++++++++ character/extra.js | 9 +-- character/old.js | 8 ++- character/refresh.js | 30 ++++------ character/shenhua.js | 2 +- character/sp.js | 108 +++++++++++++---------------------- character/xinghuoliaoyuan.js | 6 +- character/yijiang.js | 4 +- 8 files changed, 167 insertions(+), 98 deletions(-) diff --git a/character/diy.js b/character/diy.js index 87eb9c1ad..45ea080b7 100755 --- a/character/diy.js +++ b/character/diy.js @@ -14,6 +14,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_umi2:['female','key',3,[],['unseen']], key_kagari:['female','shen',3,['kagari_zongsi']], key_rei:['male','key',4,['xiandeng','shulv','xisheng']], + key_komari:['female','key',3,['komari_tiankou','komari_xueshang']], // diy_caocao:['male','wei',4,['xicai','diyjianxiong','hujia']], // diy_hanlong:['male','wei',4,['siji','ciqiu']], diy_feishi:['male','shu',3,['shuaiyan','moshou']], @@ -104,6 +105,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。', }, characterTitle:{ + key_komari:'#bLittle Busters!', key_umi:'#bSummer Pockets', key_rei:'#gHarmonia', key_kagari:'#bRewrite', @@ -146,6 +148,97 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yuji:['zuoci'] }, skill:{ + komari_tiankou:{ + trigger:{ + player:'useCard2', + target:'useCardToTarget', + }, + forced:true, + filter:function(event,player,name){ + if(name=='useCardToTarget'&&player==event.player) return false; + if(get.color(event.card)!='red') return false; + if(get.tag(event.card,'damage')) return false; + return ['basic','trick'].contains(get.type(event.card)); + }, + content:function(){ + 'step 0' + var info=get.info(trigger.card); + var bool=true; + if(info.multitarget||info.allowMultiple===false) bool=false; + else{ + var list=game.filterPlayer(function(current){ + return !trigger.targets.contains(current)&&lib.filter.targetEnabled2(trigger.card,trigger.player,current); + }) + if(!list.length) bool=false; + } + if(bool) player.chooseTarget('甜口:为'+get.translation(trigger.card)+'增加一个额外目标,或点【取消】摸一张牌。',function(candy,komari,rin){ + return _status.event.rin_chan.contains(rin); + }).set('rin_chan',list).set('ai',function(target){ + var evt=_status.event; + return get.effect(target,evt.candy,evt.source,evt.player); + }).set('candy',trigger.card).set('',trigger.player); + else event._result={bool:false}; + 'step 1' + if(result.bool){ + var rin=result.targets[0]; + trigger.targets.push(rin); + player.line(rin,{color:[255, 224,172]}); + } + else player.draw(); + }, + }, + komari_xueshang:{ + trigger:{global:'die'}, + forced:true, + skillAnimation:true, + filter:function(event,player){ + return player.hp>0; + }, + animationColor:'metal', + content:function(){ + 'step 0' + player.addSkill('riki_xueshang'); + var map={}; + var list=[]; + for(var i=1;i<=player.hp;i++){ + var cn=get.cnNumber(i,true); + map[cn]=i; + list.push(cn); + } + event.map=map; + player.chooseControl(list,function(){ + return '一'; + }).set('prompt','血殇:请选择自己受到的伤害的点数'); + 'step 1' + var num=event.map[result.control]||1; + event.num=num>1?2:1; + event.list=game.filterPlayer(function(current){ + return current!=player; + }).sortBySeat(); + player.damage(num); + player.line(event.list,{color:[255, 224,172]}); + 'step 2' + if(!player.hasSkill(event.name)) return; + else{ + event.list.shift().damage(num); + if(event.list.length) event.redo(); + } + }, + }, + riki_xueshang:{ + trigger:{global:'dying'}, + forced:true, + popup:false, + charlotte:true, + filter:function(event,player){ + return event.getParent(2).name=='komari_xueshang'&&event.getParent(2).player==player; + }, + content:function(){ + player.removeSkill('komari_xueshang'); + player.gainMaxHp(true); + player.recover(); + }, + }, umi_chaofan:{ enable:'phaseUse', usable:1, @@ -5383,6 +5476,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_umi:'加藤うみ', key_umi2:'鹰原羽未', key_rei:'零', + key_komari:'神北小毬', lucia_duqu:'毒躯', lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。
②当你因【毒】失去体力时,你改为回复等量的体力。
③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。', lucia_zhenren:'振刃', @@ -5408,6 +5502,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ umi_shiroha:'轮回 - 延时效果', umi_qihuan:'七幻', umi_qihuan_info:'限定技,当你处于濒死状态时,你可以移去此武将牌。若如此做,你回复X点体力(X为场上势力数)。然后,你可获得场上已死亡角色武将牌上的至多两个技能。', + komari_tiankou:'甜口', + komari_tiankou_info:'锁定技,当你使用红色的非伤害性基本牌/锦囊牌选择目标时,或成为其他角色使用的这些牌的目标时,你选择一项:1.摸一张牌;2.为此牌增加一个目标', + komari_xueshang:'血殇', + komari_xueshang_info:'锁定技,蓄力技,当有角色死亡时,你对自己造成1点伤害,然后对所有其他角色依次造成1点伤害。当有角色因此法进入濒死状态时,你加1点体力上限并回复1点体力,然后失去此技能并终止此技能的所有后续结算。', ns_chuanshu:'传术', ns_chuanshu_info:'限定技 当一名其他角色进入濒死状态时,你可以令其选择获得技能【雷击】或【鬼道】,其回复体力至1并摸两张牌。当该被【传术】的角色造成或受到一次伤害后,你摸一张牌。其阵亡后,你重置技能【传术】', diff --git a/character/extra.js b/character/extra.js index a2a030383..d192bdc79 100755 --- a/character/extra.js +++ b/character/extra.js @@ -439,17 +439,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, lianpo:{ audio:true, - trigger:{source:'dieAfter'}, - forced:true, + trigger:{player:'phaseAfter'}, + frequent:true, filter:function(event,player){ - return !player.hasSkill('lianpo2'); + return player.getStat('kill')>0; }, content:function(){ - player.addTempSkill('lianpo2'); player.insertPhase(); } }, - lianpo2:{}, baonu:{ audio:2, mark:true, @@ -2636,7 +2634,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jilue_zhiheng:'制衡', jilue_jizhi:'集智', lianpo:'连破', - lianpo2:'连破', lianpo_info:'若你在一回合内杀死了至少一名角色,此回合结束后,你可以进行一个额外的回合。', guixin:'归心', qinyin:'琴音', diff --git a/character/old.js b/character/old.js index 2118d900a..b5815eabf 100755 --- a/character/old.js +++ b/character/old.js @@ -12,10 +12,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan","ol_wuyi"], old_yijiang5:["old_caoxiu","old_quancong","old_zhuzhi"], old_yijiang67:["ol_xinxianying","ol_zhangrang","ol_liuyu"], - old_sp:["old_caochun","old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo"], + old_sp:["old_caochun","old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai"], }, }, character:{ + old_zhangxingcai:['female','shu',3,['oldshenxian','qiangwu']], old_fuhuanghou:['female','qun',3,['oldzhuikong','oldqiuyuan']], old_caochong:['male','wei',3,['oldrenxin','oldchengxiang']], yuji:['male','qun',3,['old_guhuo'],['forbidai']], @@ -68,6 +69,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, skill:{ + oldshenxian:{ + audio:'shenxian', + inherit:'shenxian', + }, old_fuhun:{ audio:'fuhun', trigger:{player:'phaseDrawBefore'}, @@ -841,6 +846,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, translate:{ + old_zhangxingcai:'旧张星彩', old_yuanshu:'手杀袁术', old_xusheng:'旧徐盛', old_lingtong:'旧凌统', diff --git a/character/refresh.js b/character/refresh.js index 2e297bad5..4adee3409 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -671,7 +671,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'phaseAfter'}, frequent:true, filter:function(event,player){ - var history=player.getHistory('useCard'); + var history=player.getHistory('useCard',function(evt){ + return evt.isPhaseUsing(); + }); var suits=[]; for(var i=0;i0); + trigger.source.chooseBool('是否对'+get.translation(player)+'发动【暴虐】?').set('choice',get.attitude(trigger.source,player)>0); 'step 1' if(result.bool){ player.logSkill('baonue'); diff --git a/character/sp.js b/character/sp.js index 1f0b3c697..aae385847 100755 --- a/character/sp.js +++ b/character/sp.js @@ -21,7 +21,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ - xujing:['male','shu',3,['yuxu','xjshijian'],['unseen']], + xujing:['male','shu',3,['yuxu','xjshijian']], xushao:['male','qun',3,['pingjian'],['unseen']], puyuan:['male','shu',4,['pytianjiang','pyzhuren']], xinpi:['male','wei',3,['xpchijie','yinju']], @@ -654,9 +654,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //许邵许靖 yuxu:{ audio:2, - trigger:{player:'useCard'}, + trigger:{player:'useCardEnd'}, filter:function(event,player){ - return event.isPhaseUsing(player); + var evt=event.getParent('phaseUse'); + if(!evt||evt.player!=player) return false; + var history=player.getHistory('useCard',function(evtt){ + return evtt.getParent('phaseUse')==evt; + }); + var index=history.indexOf(event); + if(index==0) return true; + return history[index-1].yuxu!=true&&player.countCards('he')>0; }, content:function(){ trigger.yuxu=true; @@ -665,7 +672,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, yuxu2:{ - trigger:{player:'useCard'}, + trigger:{player:'useCardEnd'}, direct:true, charlotte:true, locked:true, @@ -1287,16 +1294,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ if(trigger.name=='damage') player.addTempSkill(player==trigger.player?'xpchijie3':'xpchijie4'); - else if(!player.hasSkill('xpchijie4')&&!player.hasSkill('xpchijie3')){ - var cards=[]; - var cs=trigger.cards; - for(var i=0;i0&&!get.is.single(); @@ -4203,7 +4218,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, xianfu:{ - trigger:{global:'gameDrawAfter'}, + trigger:{ + global:'gameDrawAfter', + player:'enterGame', + }, forced:true, filter:function(){ return game.players.length>1; @@ -7323,7 +7341,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } 'step 3' if(event.num1<=event.num2){ - player.chooseToDiscard('弃置一张牌,或摸一张牌').set('ai',function(){return -1;}); + player.chooseToDiscard('he','弃置一张牌,或摸一张牌').set('ai',function(){return -1;}); } else event.finish(); 'step 4' @@ -11607,7 +11625,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(trigger.delay==false) game.delay(); "step 1" player.draw(); - player.addTempSkill('shenxian2'); + if(event.name=='shenxian') player.addTempSkill('shenxian2'); }, ai:{ threaten:1.5 @@ -11708,68 +11726,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, qiluan:{ audio:'qiluan2', - trigger:{source:'dieAfter'}, - priority:-10, - silent:true, - locked:false, - onremove:function(player){ - delete player.storage.qiluan; - }, - filter:function(event){ - return _status.currentPhase!=event.player; - }, - content:function(){ - if(!player.storage.qiluan){ - player.storage.qiluan=1; - } - else{ - player.storage.qiluan++; - } - }, - group:['qiluan2','qiluan3','qiluan4'] - }, - qiluan2:{ - audio:2, trigger:{global:'phaseEnd'}, frequent:true, filter:function(event,player){ - return player.storage.qiluan?true:false; + return player.getStat('kill')>0; }, content:function(){ if(get.mode()=='guozhan'){ player.draw(3); } else{ - player.draw(3*player.storage.qiluan); + player.draw(3*player.getStat('kill')); } - player.storage.qiluan=0; } }, - qiluan3:{ - audio:'qiluan2', - trigger:{source:'dieAfter'}, - frequent:true, - priority:-10, - filter:function(event){ - return _status.currentPhase==event.player; - }, - content:function(){ - var num=3; - if(player.storage.qiluan){ - if(get.mode()!='guozhan'){ - num+=3*player.storage.qiluan; - } - player.storage.qiluan=0; - } - player.draw(num); - }, - }, - qiluan4:{ - trigger:{global:'phaseZhunbeiBegin'}, - silent:true, - content:function(){ - player.storage.qiluan=0; - } + qiluan2:{ + audio:2, }, shangyi:{ audio:2, @@ -14316,6 +14288,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qiluan2:'戚乱', qiluan3:'戚乱', shenxian:'甚贤', + oldshenxian:'甚贤', qiangwu:'枪舞', moukui:'谋溃', moukui2:'谋溃', @@ -14415,6 +14388,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ moukui_info:'当你使用【杀】指定一名角色为目标后,你可以选择一项:摸一张牌,或弃置其一张牌。若如此做,此【杀】被【闪】抵消时,该角色弃置你的一张牌。 ', qiangwu_info:'出牌阶段,你可以进行一次判定。若如此做,则直到回合结束,你使用点数小于判定牌的 【杀】时不受距离限制,且你使用点数大于判定牌的【杀】时不计入出牌阶段的使用次数。', shenxian_info:'每名角色的回合限一次,你的回合外,每当有其他角色因弃置而失去牌时,若其中有基本牌,你可以摸一张牌。', + oldshenxian_info:'你的回合外,每当有其他角色因弃置而失去牌时,若其中有基本牌,你可以摸一张牌。', qiluan_info:'每当你杀死一名角色后,可以在此回合结束时摸三张牌。', qiluan_info_guozhan:'当你杀死一名角色后,你可于此回合结束后摸三张牌', zhendu_info:'其他角色的出牌阶段开始时,你可以弃置一张手牌,视为该角色使用一张【酒】,然后你对其造成一点伤害。', diff --git a/character/xinghuoliaoyuan.js b/character/xinghuoliaoyuan.js index 26d33e9f6..3bcda60df 100755 --- a/character/xinghuoliaoyuan.js +++ b/character/xinghuoliaoyuan.js @@ -71,7 +71,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ usable:1, audio:2, trigger:{ - player:"useCardAfter", + player:"useCardEnd", }, check:function (event,player){ return 18-get.value(event.card)-player.maxHp*2; @@ -2758,7 +2758,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ group:["qinguo_use","qinguo_lose"], audio:2, trigger:{ - player:"useCardAfter", + player:"useCardEnd", }, filter:function (event,player){ return get.type(event.card)=='equip'; @@ -5514,7 +5514,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "xinfu_daigong":"怠攻", "xinfu_daigong_info":"每回合限一次。当你受到伤害时,你可以展示所有手牌,然后令伤害来源选择一项:交给你一张与你所有手牌花色均不相同的一张牌,或防止此伤害。", "xinfu_zhaoxin":"昭心", - "xinfu_zhaoxin_info":"出牌阶段限一次,你可以将任意张手牌置于武将牌上,称之为「望」(你至多拥有三张「望」)。你攻击范围内的一名其他角色的摸牌阶段结束后,其可以获得一张由你选择的「望」,然后你可以对其造成1点伤害。", + "xinfu_zhaoxin_info":"出牌阶段限一次,你可以将任意张手牌置于武将牌上并摸等量的牌,称之为「望」(你至多拥有三张「望」)。你攻击范围内的一名其他角色的摸牌阶段结束后,其可以获得一张由你选择的「望」,然后你可以对其造成1点伤害。", "zhaoxin_give":"昭心", "zhaoxin_give_info":"", "xinfu_qianchong":"谦冲", diff --git a/character/yijiang.js b/character/yijiang.js index ae6b2c61d..6bf2f5f63 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -1975,7 +1975,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "step 3" if(event.card){ player.logSkill('jianzheng',trigger.player); - player.lose(result.cards,ui.special); + player.lose(event.card,ui.special); game.broadcastAll(function(player){ var cardx=ui.create.card(); cardx.classList.add('infohidden'); @@ -10228,7 +10228,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, check:function(event,player){ if(get.attitude(player,event.player)<0) return false; - if(player.countCards('h',{name:['tao','jiu']})+target.hp<0) return false; + if(player.countCards('h',{name:['tao','jiu']})+event.player.hp<0) return false; return true; }, content:function(){