diff --git a/audio/die/star_dongzhuo.mp3 b/audio/die/star_dongzhuo.mp3 new file mode 100644 index 000000000..a56900c84 Binary files /dev/null and b/audio/die/star_dongzhuo.mp3 differ diff --git a/audio/skill/starhaoshou1.mp3 b/audio/skill/starhaoshou1.mp3 new file mode 100644 index 000000000..24e2cfd80 Binary files /dev/null and b/audio/skill/starhaoshou1.mp3 differ diff --git a/audio/skill/starhaoshou2.mp3 b/audio/skill/starhaoshou2.mp3 new file mode 100644 index 000000000..0d114e95d Binary files /dev/null and b/audio/skill/starhaoshou2.mp3 differ diff --git a/audio/skill/starweilin1.mp3 b/audio/skill/starweilin1.mp3 new file mode 100644 index 000000000..c9045c9db Binary files /dev/null and b/audio/skill/starweilin1.mp3 differ diff --git a/audio/skill/starweilin2.mp3 b/audio/skill/starweilin2.mp3 new file mode 100644 index 000000000..364df44cb Binary files /dev/null and b/audio/skill/starweilin2.mp3 differ diff --git a/audio/skill/starzhangrong1.mp3 b/audio/skill/starzhangrong1.mp3 new file mode 100644 index 000000000..320dbeb92 Binary files /dev/null and b/audio/skill/starzhangrong1.mp3 differ diff --git a/audio/skill/starzhangrong2.mp3 b/audio/skill/starzhangrong2.mp3 new file mode 100644 index 000000000..a09ec8977 Binary files /dev/null and b/audio/skill/starzhangrong2.mp3 differ diff --git a/character/diy.js b/character/diy.js index 0ce5321d8..535752670 100755 --- a/character/diy.js +++ b/character/diy.js @@ -12637,10 +12637,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.getStorage('junktaoluan2').includes(get.suit(card))) return false; if(player.getStorage('junktaoluan').includes(name)) return false; if(get.type(name)!='basic'&&get.type(name)!='trick') return false; - if(event.filterCard({name:name,isCard:true,cards:[card]})) return true; + if(event.filterCard({name:name,isCard:true,cards:[card]},player,event)) return true; if(name=='sha'){ for(var nature of lib.inpile_nature){ - if(event.filterCard({name:name,nature:nature,isCard:true,cards:[card]})) return true; + if(event.filterCard({name:name,nature:nature,isCard:true,cards:[card]},player,event)) return true; } } return false; diff --git a/character/jsrg.js b/character/jsrg.js index 04e8cf0ba..f5867294d 100644 --- a/character/jsrg.js +++ b/character/jsrg.js @@ -4222,7 +4222,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ direct:true, content:function(){ 'step 0' - player.chooseToDiscard(get.prompt('jsrgjuelie',trigger.target),'当你使用【杀】指定一名角色为目标后,你可以弃置任意张牌,然后弃置其等量的牌,然后若你的手牌数或体力值最小,此【杀】对其的伤害基数+1。',[1,Infinity],'he').set('ai',card=>{ + player.chooseToDiscard(get.prompt('jsrgjuelie',trigger.target),'当你使用【杀】指定一名角色为目标后,你可以弃置任意张牌,然后弃置其等量的牌',[1,Infinity],'he').set('ai',card=>{ if(ui.selected.cards.length>=_status.event.max) return 0; if(_status.event.goon) return 4.5-get.value(card); return 0; @@ -4232,6 +4232,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var num=result.cards.length; if(trigger.target.countDiscardableCards(player,'he')) player.discardPlayerCard('平讨:弃置'+get.translation(trigger.target)+get.cnNumber(num)+'张牌',num,'he',trigger.target,true); } + /* else event.finish(); 'step 2' if(player.isMinHandcard()||player.isMinHp()){ @@ -4243,6 +4244,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } map[id].extraDamage++; } + */ }, shaRelated:true, ai:{ @@ -4256,6 +4258,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); }, }, + group:'jsrgjuelie_pojun', + subSkill:{ + pojun:{ + trigger:{source:'damageBegin1'}, + filter:function(event,player){ + if(!player.isMinHandcard()&&!player.isMinHp()) return false; + return event.getParent().name=='sha'; + }, + forced:true, + locked:false, + logTarget:'player', + content:function(){ + trigger.num++; + }, + }, + }, }, //皇甫嵩 jsrgguanhuo:{ @@ -5714,14 +5732,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, forced:true, trigger:{ - player:'enterGame', - global:'phaseBefore', + //player:'enterGame', + //global:'phaseBefore', + global:'roundStart', }, filter:function(event,player){ if(game.hasPlayer(function(current){ return current.countCards('hej','taipingyaoshu'); })) return false; - return event.name!='phase'||game.phaseNumber==0; + return true; + //return event.name!='phase'||game.phaseNumber==0; }, direct:true, group:'jsrgshoushu_destroy', @@ -5973,7 +5993,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jsrgpingtao:'平讨', jsrgpingtao_info:'出牌阶段限一次。你可以令一名其他角色选择一项:1.交给你一张牌,然后你于此回合使用【杀】的次数上限+1;2.令你视为对其使用一张【杀】。', jsrgjuelie:'绝烈', - jsrgjuelie_info:'当你使用【杀】指定一名角色为目标后,你可以弃置任意张牌并弃置其等量的牌,然后若你的手牌数或体力值最小,此【杀】对其的伤害基数+1。', + jsrgjuelie_info:'①当你使用【杀】指定一名角色为目标后,你可以弃置任意张牌并弃置其等量的牌。②若你的手牌数或体力值为全场最小,则你使用【杀】造成的伤害+1。', jsrg_huangfusong:'起皇甫嵩', jsrg_huangfusong_prefix:'起', jsrgguanhuo:'观火', @@ -6048,7 +6068,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jsrg_nanhualaoxian:'起南华老仙', jsrg_nanhualaoxian_prefix:'起', jsrgshoushu:'授术', - jsrgshoushu_info:'锁定技。①游戏开始时,若场上没有【太平要术】,你可以从游戏外将【太平要术】置于一名角色的装备区内。②当【太平要术】离开一名角色的装备区后,你令此牌销毁。', + jsrgshoushu_info:'锁定技。①一轮游戏开始时,若场上没有【太平要术】,你可以从游戏外将【太平要术】置于一名角色的装备区内。②当【太平要术】离开一名角色的装备区后,你令此牌销毁。', jsrgxundao:'寻道', jsrgxundao_info:'当你的判定牌生效前,你可以令至多两名角色依次弃置一张牌,然后你选择一张以此法弃置且位于弃牌堆中的牌代替此判定牌。', jsrglinghua:'灵化', diff --git a/character/mobile.js b/character/mobile.js index cf0588a74..90a1c44bf 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -2718,7 +2718,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 0' var trigger=event.getParent().getTrigger(); if(trigger.name=='useCard'){ - var target=lib.skill.chongzhen1.logTarget(trigger,player); + var target=lib.skill.chongzhen.logTarget(trigger,player); } else{ var target=trigger.source; diff --git a/character/onlyOL.js b/character/onlyOL.js new file mode 100644 index 000000000..3b0ac2d7f --- /dev/null +++ b/character/onlyOL.js @@ -0,0 +1,361 @@ +'use strict'; +game.import('character',function(lib,game,ui,get,ai,_status){ + return { + name:'onlyOL', + connect:true, + character:{ + ol_sb_jiangwei:['male','shu',4,['olsbzhuri','olsbranji']], + ol_caozhang:['male','wei',4,['oljiangchi']], + ol_jianyong:['male','shu',3,['olqiaoshui','jyzongshi']], + ol_lingtong:['male','wu',4,['olxuanfeng'],['die_audio:re_lingtong']], + }, + characterSort:{ + onlyOL:{ + onlyOL_yijiang1:['ol_caozhang','ol_jianyong','ol_lingtong'], + onlyOL_sb:['ol_sb_jiangwei'], + }, + }, + characterIntro:{ + }, + characterReplace:{ + }, + skill:{ + //OL谋姜维 + olsbzhuri:{ + audio:2, + trigger:{player:['phaseZhunbeiEnd','phaseJudgeEnd','phaseDrawEnd','phaseUseEnd','phaseDiscardEnd','phaseJieshuEnd']}, + filter:function(event,player){ + if(player.hasSkill('olsbzhuri_block')) return false; + if(!game.hasPlayer(target=>player.canCompare(target))) return false; + return player.getHistory('gain',evt=>evt.getParent(event.name)==event).length+player.getHistory('lose',evt=>evt.getParent(event.name)==event&&evt.hs.length).length; + }, + direct:true, + content:function*(event,map){ + var player=map.player; + var trigger=map.trigger; + var result=yield player.chooseTarget(get.prompt('olsbzhuri'),'与一名角色进行拼点,若你赢,你可以使用其中的一张拼点牌;若你没赢,你失去1点体力或令此技能于本回合失效',(card,player,target)=>{ + return player.canCompare(target); + }).set('ai',target=>{ + var player=_status.event.player; + var ts=target.getCards('h').sort((a,b)=>get.number(a)-get.number(b)); + if(get.attitude(player,target)<0){ + var hs=player.getCards('h').sort((a,b)=>get.number(b)-get.number(a)); + var ts=target.getCards('h').sort((a,b)=>get.number(b)-get.number(a)); + if(get.number(hs[0])>get.number(ts[0])) return 1; + if(get.effect(player,{name:'losehp'},player,player)>0) return Math.random()+0.2; + if(player.getHp()>2) return Math.random()-0.5; + return 0; + } + return 0; + }); + if(result.bool){ + var target=result.targets[0]; + player.logSkill('olsbzhuri',target); + var result2=yield player.chooseToCompare(target); + if(result2.bool){ + var cards=[result2.player,result2.target].filterInD('d'); + cards=cards.filter(card=>player.hasUseTarget(card)); + if(cards.length){ + var result3=yield player.chooseButton(['是否使用其中的牌?',cards]).set('ai',button=>_status.event.player.getUseValue(button.link)); + if(result3.bool){ + var card=result3.links[0]; + player.$gain2(card,false); + game.delayx(); + player.chooseUseTarget(true,card,false); + } + } + } + else{ + var list=lib.skill.olsbranji.getList(trigger); + var result3=yield player.chooseControl('失去体力','技能失效').set('prompt','逐日:失去1点体力,或令此技能于本回合失效').set('ai',()=>{ + var player=_status.event.player; + if(player.getHp()>2){ + var list=_status.event.list; + list.removeArray(player.skipList); + if(list.includes('phaseDraw')||list.includes('phaseUse')) return '失去体力'; + } + if(get.effect(player,{name:'losehp'},player,player)>0) return '失去体力'; + return '技能失效'; + }).set('list',list.slice(trigger.getParent().num,list.length)); + player[result3.control=='失去体力'?'loseHp':'addTempSkill'](result3.control=='失去体力'?1:'olsbzhuri_block'); + } + } + }, + subSkill:{ + block:{ + charlotte:true, + mark:true, + marktext:'日', + intro:{content:'追不动太阳了'}, + }, + }, + }, + olsbranji:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + prompt2:function(event,player){ + var str='获得技能'; + var num=lib.skill.olsbranji.getNum(event,player); + if(num>=player.getHp()) str+='【困奋】'; + if(num==player.getHp()) str+='和'; + if(num<=player.getHp()) str+='【诈降】'; + str+=',然后'; + var num1=(player.countCards('h')-player.getHandcardLimit()); + if(num1||player.isDamaged()){ + if(num1) str+=(num1<0?'摸'+get.cnNumber(-num1)+'张牌':'弃置'+get.cnNumber(num1)+'张牌'); + if(num1&&player.isDamaged()) str+='或'; + if(player.isDamaged()) str+=('回复'+player.getDamagedHp()+'点体力'); + str+=',最后'; + } + str+='你不能回复体力直到你杀死角色。'; + return str; + }, + check:function(event,player){ + var num=lib.skill.olsbranji.getNum(event,player); + if(num==player.getHp()) return true; + return player.getHandcardLimit()-player.countCards('h')>=3||player.getDamagedHp()>=2; + }, + limited:true, + skillAnimation:true, + animationColor:'fire', + content:function*(event,map){ + var player=map.player; + var trigger=map.trigger; + player.awakenSkill('olsbranji'); + var num=lib.skill.olsbranji.getNum(trigger,player); + if(num>=player.getHp()){ + player.addSkillLog('kunfen'); + player.storage.kunfen=true; + } + if(num<=player.getHp()) player.addSkillLog('zhaxiang'); + if(player.countCards('h')!=player.getHandcardLimit()||player.isDamaged()){ + var result,num1=player.countCards('h')-player.getHandcardLimit(); + if(!num1) result={index:1}; + else if(player.isHealthy()) result={index:0}; + else{ + result=yield player.chooseControl('手牌数','体力值').set('choiceList',[ + num1<0?'摸'+get.cnNumber(-num1)+'张牌':'弃置'+get.cnNumber(num1)+'张牌', + '回复'+(player.getDamagedHp())+'点体力', + ]).set('ai',()=>{ + var player=_status.event.player; + var list=_status.event.list; + var num1=get.effect(player,{name:'wuzhong'},player,player)/2; + var num2=get.recoverEffect(player,player,player); + return num1*list[0]>num2*list[1]?0:1; + }).set('list',[-num1,player.getDamagedHp()]); + } + if(result.index==0){ + if(num1<0) player.drawTo(player.getHandcardLimit()); + else player.chooseToDiscard(num1,'h',true); + } + else{ + player.recover(player.maxHp-player.hp); + } + } + player.when('olsbranjiAfter').then(()=>player.addSkill('olsbranji_norecover')); + player.when({source:'dieAfter'}).then(()=>player.removeSkill('olsbranji_norecover')); + }, + derivation:['kunfenx','zhaxiang'], + getList:function(event){ + return event.getParent().phaseList.map(list=>list.split('|')[0]); + }, + getNum:function(event,player){ + return lib.skill.olsbranji.getList(event).slice(0,event.getParent().num).filter(name=>player.getHistory('useCard',evt=>evt.getParent(name).name==name).length).length; + }, + subSkill:{ + norecover:{ + charlotte:true, + mark:true, + intro:{content:'不能回复体力'}, + trigger:{player:'recoverBefore'}, + forced:true, + firstDo:true, + content:function(){ + trigger.cancel(); + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(get.tag(card,'recover')) return 'zeroplayertarget'; + }, + }, + }, + }, + }, + }, + //界曹彰 + oljiangchi:{ + audio:2, + trigger:{player:'phaseDrawEnd'}, + direct:true, + content:function*(event,map){ + var player=map.player; + var choiceList=[ + '摸一张牌,本回合使用【杀】的次数上限-1,且【杀】不计入手牌上限。', + '重铸一张牌,本回合使用【杀】无距离限制,且使用【杀】的次数上限+1。', + ],list=['cancel2']; + if(player.countCards('he',card=>player.canRecast(card))) list.unshift('重铸,+1'); + else choiceList[1]=''+choiceList[1]+''; + list.unshift('摸牌,-1'); + var result=yield player.chooseControl(list).set('ai',()=>{ + var player=_status.event.player; + var controls=_status.event.controls.slice(); + if(controls.includes('重铸,+1')&&player.countCards('hs',card=>get.name(card)=='sha'&&player.hasValueTarget(card))>=2) return '重铸,+1'; + return '摸牌,-1'; + }).set('choiceList',choiceList).set('prompt',get.prompt('oljiangchi')); + if(result.control!='cancel2'){ + player.logSkill('oljiangchi'); + if(result.control=='摸牌,-1'){ + player.draw(); + player.addTempSkill('oljiangchi_less'); + player.addMark('oljiangchi_less',1,false); + } + else{ + var result2=yield player.chooseCard('he','将驰:请重铸一张牌',true,(card,player)=>player.canRecast(card)); + if(result2.bool){ + player.recast(result2.cards); + player.addTempSkill('oljiangchi_more'); + player.addMark('oljiangchi_more',1,false); + } + } + } + }, + subSkill:{ + less:{ + charlotte:true, + onremove:true, + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num-player.countMark('oljiangchi_less'); + }, + ignoredHandcard:function(card,player){ + if(card.name=='sha') return true; + }, + cardDiscardable:function(card,player,name){ + if(name=='phaseDiscard'&&card.name=='sha') return false; + }, + }, + }, + more:{ + charlotte:true, + onremove:true, + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num+player.countMark('oljiangchi_more'); + }, + targetInRange:function (card,player){ + if(card.name=='sha') return true; + }, + }, + }, + }, + }, + //界简雍 + olqiaoshui:{ + audio:2, + inherit:'reqiaoshui', + filter:function(event,player){ + return player.countCards('h')>0&&!player.hasSkill('olqiaoshui_used'); + }, + content:function(){ + 'step 0' + player.chooseToCompare(target); + 'step 1' + if(result.bool) player.addTempSkill('qiaoshui3',{player:'phaseUseAfter'}); + else{ + player.addTempSkill('qiaoshui2'); + player.addTempSkill('olqiaoshui_used'); + } + }, + subSkill:{ + used:{ + charlotte:true, + mark:true, + marktext:'说', + intro:{content:'被迫闭嘴'}, + }, + }, + }, + //界凌统 + olxuanfeng:{ + audio:'xuanfeng', + audioname:['boss_lvbu3'], + audioname2:{ + lingtong:'xuanfeng', + ol_lingtong:'xuanfeng_re_lingtong', + }, + trigger:{ + player:['loseAfter'], + global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'], + }, + filter:function(event,player){ + var evt=event.getl(player); + return evt&&(evt.es.length||evt.cards2.length>1); + }, + direct:true, + content:function(){ + 'step 0' + event.count=2; + event.logged=false; + 'step 1' + player.chooseTarget(get.prompt('olxuanfeng'),'弃置一名其他角色的一张牌',function(card,player,target){ + if(player==target) return false; + return target.countDiscardableCards(player,'he'); + }).set('ai',function(target){ + return -get.attitude(_status.event.player,target); + }); + 'step 2' + if(result.bool){ + if(!event.logged){ + player.logSkill('olxuanfeng',result.targets); + event.logged=true; + } + else player.line(result.targets[0],'green'); + player.discardPlayerCard(result.targets[0],'he',true); + event.count--; + } + else event.finish(); + 'step 3' + if(event.count) event.goto(1); + }, + ai:{ + reverseEquip:true, + noe:true, + effect:{ + target:function(card,player,target,current){ + if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3]; + }, + }, + }, + }, + xuanfeng_re_lingtong:{audio:2}, + }, + dynamicTranslate:{ + }, + translate:{ + ol_lingtong:'OL界凌统', + ol_lingtong_prefix:'OL界', + olxuanfeng:'旋风', + olxuanfeng_info:'当你一次性失去至少两张牌后,或失去装备区的牌后,你可以依次弃置一至两名其他角色的共计两张牌。', + ol_jianyong:'OL界简雍', + ol_jianyong_prefix:'OL界', + olqiaoshui:'巧说', + olqiaoshui_info:'出牌阶段,你可与一名其他角色拼点。若你赢,你使用的下一张基本牌或普通锦囊牌可以额外指定任意一名其他角色为目标或减少指定一个目标;若你没赢,此技能于本回合失效且本回合你不能使用锦囊牌。', + ol_caozhang:'OL界曹彰', + ol_caozhang_prefix:'OL界', + oljiangchi:'将驰', + oljiangchi_info:'摸牌阶段结束时,你可以选择一项:①摸一张牌,本回合使用【杀】的次数上限-1,且【杀】不计入手牌上限。②重铸一张牌,本回合使用【杀】无距离限制,且使用【杀】的次数上限+1。', + ol_sb_jiangwei:'OL谋姜维', + ol_sb_jiangwei_prefix:'OL谋', + olsbzhuri:'逐日', + olsbzhuri_info:'你的阶段结束时,若你本阶段失去过手牌或得到过牌,则你可以与一名角色拼点。若你赢,你可以使用其中一张拼点牌;若你没赢,你失去1点体力或令此技能于本回合无效。', + olsbranji:'燃己', + olsbranji_info:'限定技,结束阶段。若你本回合使用过牌的阶段数大于等于/小于等于体力值,你可以获得技能〖困奋〗/〖诈降〗(同时满足则都获得,以此法获得的〖困奋〗直接修改为非锁定技)。若如此做,你将手牌数调整至手牌上限或将体力值回复至体力上限,然后你不能回复体力直到你杀死角色。', + kunfenx:'困奋', + kunfenx_info:'结束阶段开始时,你可以失去1点体力,然后摸两张牌。', + + onlyOL_yijiang1:'OL专属·将1', + onlyOL_sb:'OL专属·上兵伐谋', + }, + }; +}); diff --git a/character/rank.js b/character/rank.js index d6b6dc98d..855b1fb04 100644 --- a/character/rank.js +++ b/character/rank.js @@ -348,6 +348,8 @@ window.noname_character_rank={ 'caoyi', 'sb_sp_zhugeliang', 'sb_zhugeliang', + 'ol_jianyong', + 'ol_sb_jiangwei', ], am:[ 'diy_caiwenji', @@ -1321,6 +1323,8 @@ window.noname_character_rank={ 'baoxin', 'mb_xianglang', 'lvboshe', + 'ol_caozhang', + 'ol_lingtong', ], bm:[ 'diy_xizhenxihong', @@ -2070,8 +2074,12 @@ window.noname_character_rank={ 'clan_xunyou', 'lvboshe', 'yj_zhoubuyi', + 'ol_jianyong', + 'ol_sb_jiangwei', ], rare:[ + 'ol_caozhang', + 'ol_lingtong', 'luoxian', 'ol_mengda', 'tw_menghuo', diff --git a/character/refresh.js b/character/refresh.js index 9d7c88453..9cea4e333 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -20,8 +20,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, connect:true, character:{ - ol_jianyong:['male','shu',3,['olqiaoshui','jyzongshi'],['unseen']], - ol_lingtong:['male','wu',4,['olxuanfeng'],['die_audio:re_lingtong','unseen']], re_xushu:['male','shu',4,['zhuhai','qianxin']], re_lidian:['male','wei',3,['xunxun','xinwangxi']], re_zhongyao:['male','wei',3,['rehuomo','zuoding'],['clan:颍川钟氏']], @@ -171,85 +169,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_guohuai:['xiahouyuan','zhanghe'], }, skill:{ - //界简雍 - olqiaoshui:{ - audio:2, - inherit:'reqiaoshui', - filter:function(event,player){ - return player.countCards('h')>0&&!player.hasSkill('olqiaoshui_used'); - }, - content:function(){ - 'step 0' - player.chooseToCompare(target); - 'step 1' - if(result.bool) player.addTempSkill('qiaoshui3',{player:'phaseUseAfter'}); - else{ - player.addTempSkill('qiaoshui2'); - player.addTempSkill('olqiaoshui_used'); - } - }, - subSkill:{ - used:{ - charlotte:true, - mark:true, - marktext:'说', - intro:{content:'被迫闭嘴'}, - }, - }, - }, - //界凌统 - olxuanfeng:{ - audio:'xuanfeng', - audioname:['boss_lvbu3'], - audioname2:{ - lingtong:'xuanfeng', - ol_lingtong:'xuanfeng_re_lingtong', - }, - trigger:{ - player:['loseAfter'], - global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'], - }, - filter:function(event,player){ - var evt=event.getl(player); - return evt&&(evt.es.length||evt.cards2.length>1); - }, - direct:true, - content:function(){ - 'step 0' - event.count=2; - event.logged=false; - 'step 1' - player.chooseTarget(get.prompt('olxuanfeng'),'弃置一名其他角色的一张牌',function(card,player,target){ - if(player==target) return false; - return target.countDiscardableCards(player,'he'); - }).set('ai',function(target){ - return -get.attitude(_status.event.player,target); - }); - 'step 2' - if(result.bool){ - if(!event.logged){ - player.logSkill('olxuanfeng',result.targets); - event.logged=true; - } - else player.line(result.targets[0],'green'); - player.discardPlayerCard(result.targets[0],'he',true); - event.count--; - } - else event.finish(); - 'step 3' - if(event.count) event.goto(1); - }, - ai:{ - effect:{ - target:function(card,player,target,current){ - if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3]; - } - }, - reverseEquip:true, - noe:true - }, - }, - xuanfeng_re_lingtong:{audio:2}, ollianhuan:{ audio:'xinlianhuan', audioname:['ol_pangtong'], @@ -13999,19 +13918,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, zhaxiang:{ + audio:2, + audioname:['ol_sb_jiangwei'], trigger:{player:'loseHpEnd'}, forced:true, - audio:2, content:function(){ - var num=trigger.num; - player.draw(3*num); - if(_status.currentPhase==player){ - if(!player.storage.zhaxiang2) player.storage.zhaxiang2=0; - player.storage.zhaxiang2+=num; - player.addTempSkill('zhaxiang2',{player:'phaseAfter'}); + 'step 0' + event.count=trigger.num; + 'step 1' + event.count--; + player.draw(3); + if(player.isPhaseUsing()){ + player.addTempSkill('zhaxiang2'); + player.addMark('zhaxiang2',1,false); } - else{ - game.trySkillAudio('zhaxiang',player); + 'step 2' + if(event.count>0&&player.hasSkill('zhaxiang')&&!get.is.blocked('zhaxiang',player)){ + player.logSkill('zhaxiang'); + event.goto(1); } }, ai:{ @@ -14042,15 +13966,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(card.name=='sha') return num+player.storage.zhaxiang2; } }, + charlotte:true, onremove:true, + audio:'zhaxiang', + audioname:['ol_sb_jiangwei'], trigger:{player:'useCard'}, - forced:true, filter:function(event,player){ return event.card&&event.card.name=='sha'&&get.color(event.card)=='red'; }, + forced:true, content:function(){ trigger.directHit.addArray(game.players); }, + intro:{content:'