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:'
  • 使用【杀】的次数上限+#
  • 使用红色【杀】无距离限制且不能被【闪】响应'}, ai:{ directHit_ai:true, skillTagFilter:function(player,tag,arg){ @@ -15031,7 +14959,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qianxin_info:'觉醒技,当你造成一次伤害后,若你已受伤,你须减1点体力上限,并获得技能“荐言”。', jianyan_info:'出牌阶段限一次,你可以声明一种牌的类别或颜色,并亮出牌库中第一张符合你声明的牌,然后你令一名男性角色获得此牌。', rekurou_info:'出牌阶段限一次,你可以弃置一张牌,然后失去1点体力。', - zhaxiang_info:'锁定技,每当你失去1点体力后,你摸三张牌。然后若此时是你的出牌阶段,则直到回合结束,你使用红色【杀】无距离限制且不能被【闪】响应,你可以额外使用一张【杀】。', + zhaxiang_info:'锁定技。当你失去1点体力后,你摸三张牌。然后若此时是你的出牌阶段,则你本回合获得此下效果:使用【杀】的次数上限+1,使用红色【杀】无距离限制且不能被【闪】响应。', qiaomeng_info:'当你使用黑色【杀】对一名角色造成伤害后,你可以弃置该角色装备区里的一张牌,若此牌是坐骑牌,你于此牌置入弃牌堆后获得之。', reyicong_info:'锁定技,你计算与其他角色的距离时-1。若你的体力值不大于2,则其他角色计算与你的距离时+1。', refankui_info:'每当你受到1点伤害后,你可以获得伤害来源的一张牌。', @@ -15635,10 +15563,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ caoren_prefix:'界', ollianhuan:'连环', ollianhuan_info:'你可以将一张♣牌当【铁索连环】使用或重铸。你使用【铁索连环】选择目标后,可以给此牌增加一个目标。', - ol_lingtong:'OL界凌统', - ol_lingtong_prefix:'OL界', - olxuanfeng:'旋风', - olxuanfeng_info:'当你一次性失去至少两张牌后,或失去装备区的牌后,你可以依次弃置一至两名其他角色的共计两张牌。', re_lidian:'界李典', gz_re_lidian:'李典', re_lidian_prefix:'界', @@ -15648,6 +15572,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_jianyong_prefix:'OL界', olqiaoshui:'巧说', olqiaoshui_info:'出牌阶段,你可与一名其他角色拼点。若你赢,你使用的下一张基本牌或普通锦囊牌可以额外指定任意一名其他角色为目标或减少指定一个目标;若你没赢,此技能于本回合失效且本回合你不能使用锦囊牌。', + ol_caozhang:'OL界曹彰', + ol_caozhang_prefix:'OL界', + oljiangchi:'将驰', + oljiangchi_info:'摸牌阶段结束时,你可以选择一项:①摸一张牌,本回合使用【杀】的次数上限-1,且【杀】不计入手牌上限。②重铸一张牌,本回合使用【杀】无距离限制,且使用【杀】的次数上限+1。', refresh_standard:'界限突破·标', refresh_feng:'界限突破·风', diff --git a/character/sb.js b/character/sb.js index d0069f576..994ab98c0 100644 --- a/character/sb.js +++ b/character/sb.js @@ -1097,7 +1097,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{player:'useCardToPlayered'}, filter:function(event,player){ - return event.targets.length==1&&event.card.name=='sha'&&!player.hasSkillTag('noCompareSource')&&event.target.countCards('h')>0&&!event.target.hasSkillTag('noCompareTarget'); + return event.targets.length==1&&event.card.name=='sha'&&player.canCompare(event.target,true); }, check:function(event,player){ return get.attitude(player,event.target)<=0||game.hasPlayer(current=>get.damageEffect(current,player,player)>0); diff --git a/character/shiji.js b/character/shiji.js index 198d02778..93afe4dd4 100644 --- a/character/shiji.js +++ b/character/shiji.js @@ -2276,11 +2276,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ enable:'phaseUse', usable:1, filter:function(event,player){ - return !player.hasSkillTag('noCompareSource'); + return game.hasPlayer(target=>player.canCompare(target,true)); }, filterTarget:function(card,player,target){ - return target!=player&&target.countCards('h')>0&& - !target.hasSkillTag('noCompareTarget'); + return player.canCompare(target,true); }, content:function(){ 'step 0' diff --git a/character/sp.js b/character/sp.js index e2d1e469f..ccc515554 100755 --- a/character/sp.js +++ b/character/sp.js @@ -19977,7 +19977,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } 'step 1' if(result.bool){ - var ideitity=result.links[0]; + var identity=result.links[0]; player.addSkill(identity); player.markSkill('fenxin'); } @@ -21111,6 +21111,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, kunfen:{ audio:2, + audioname:['ol_sb_jiangwei'], trigger:{player:'phaseJieshuBegin'}, locked:function(skill,player){ if(!player||!player.storage.kunfen) return true; diff --git a/character/sp2.js b/character/sp2.js index 6a31b8876..8407714b7 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ + star_dongzhuo:['male','qun',5,['starweilin','starzhangrong','starhaoshou'],['zhu']], star_yuanshu:['male','qun',4,['starcanxi','starpizhi','starzhonggu'],['zhu']], star_caoren:['male','wei',4,['starsujun','starlifeng']], mp_liuling:['male','jin',3,['mpjiusong','mpmaotao','mpbishi'],['doublegroup:wei:qun:jin']], @@ -109,12 +110,180 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_xuzhou:['re_taoqian','caosong','zhangmiao','qiuliju'], sp_zhongyuan:['re_hucheer','re_zoushi','caoanmin','re_dongcheng'], sp_xiaohu:['haomeng','yanfuren','yanrou','dc_zhuling'], - sp_star:['star_caoren','star_yuanshu'], + sp_star:['star_caoren','star_yuanshu','star_dongzhuo'], mini_qixian:['mp_liuling'], sp_decade:['caobuxing','re_maliang','dc_jikang'], } }, skill:{ + //星董卓 + starweilin:{ + audio:2, + trigger:{source:'damageBegin1'}, + filter:function(event,player){ + return !event.player.getHistory('damage').length&&player.getHistory('useCard').length>=event.player.getHp(); + }, + forced:true, + logTarget:'player', + content:function(){ + trigger.num++; + }, + }, + starzhangrong:{ + audio:2, + trigger:{player:'phaseZhunbeiBegin'}, + filter:function(event,player){ + return player.getHp()>0; + }, + direct:true, + content:function*(event,map){ + var player=map.player; + var str=get.cnNumber(player.getHp()); + var choiceList=[ + '令至多'+str+'名体力值大于等于你的角色各失去1点体力', + '令至多'+str+'名手牌数大于等于你的角色各弃置一张手牌', + ],list=['cancel2']; + if(game.hasPlayer(target=>{ + if(target==player) return player.countCards('h',card=>lib.filter.cardDiscardable(card,player)); + return target.countCards('h')>=Math.max(1,player.countCards('h')); + })) list.unshift('弃牌'); + else choiceList[1]=''+choiceList[1]+''; + list.unshift('扣血'); + var result=yield player.chooseControl(list).set('prompt','###'+get.prompt('starzhangrong')+'###选择其中一项令任意名符合条件的角色执行,然后你摸等量的牌,回合结束时,若这些角色中有本回合未受到过伤害的角色,则你失去1点体力').set('ai',()=>{ + var player=_status.event.player; + var controls=_status.event.controls.slice(); + /* + var cards=player.getCards('hes',card=>get.tag(card,'damage')&&player.hasValueTarget(card)); + var cardx=cards.filter(card=>get.name(card)=='sha'); + cardx.sort((a,b)=>player.getUseValue(b)-player.getUseValue(a)); + cardx=cardx.slice(Math.min(cardx.length,player.getCardUsable('sha')),cardx.length); + cards.removeArray(cardx); + */ + var targets1=game.filterPlayer(target=>get.attitude(player,target)<0&&target.getHp()>=player.getHp()&&get.effect(target,{name:'losehp'},player,player)>0/*&&cards.some(card=>player.canUse(card,target))*/); + _status.starzhangrong_check=true; + var targets2=game.filterPlayer(target=>get.attitude(player,target)<0&&target.countCards('h')>=Math.max(1,player.countCards('h'))&&get.effect(target,{name:'guohe_copy2'},player,player)>0/*&&cards.some(card=>player.canUse(card,target))*/); + delete _status.starzhangrong_check; + [targets1,targets2].forEach(list=>{ + list.sort((a,b)=>get.damageEffect(b)-get.damageEffect(a)); + list=list.slice(0,Math.min(player.getHp()/*,cards.length*/)); + }); + if(!controls.includes('弃牌')) return 1-get.sgn(targets1.length); + return Math.max(0,get.sgn(targets2.length-targets1.length)); + }).set('choiceList',choiceList); + if(result.control!='cancel2'){ + var choice=result.index; + var result2=yield player.chooseTarget([1,player.getHp()],'请选择【掌戎】的目标','令至多'+str+'名'+(choice?'手牌数':'体力值')+'大于你的角色各'+(choice?'弃置一张手牌':'失去1点体力'),(card,player,target)=>{ + var name=_status.event.card.name; + if(name=='guohe_copy2'){ + if(target==player) return player.countCards('h',card=>lib.filter.cardDiscardable(card,player)); + return target.countCards('h')>=Math.max(1,player.countCards('h')); + } + return target.getHp()>=player.getHp(); + }).set('ai',target=>{ + var player=_status.event.player; + if(get.attitude(player,target)>=0) return 0; + return get.effect(target,_status.event.card,player,player); + }).set('card',{name:choice?'guohe_copy2':'losehp'}); + if(result2.bool){ + var targets=result2.targets.sortBySeat(); + player.logSkill('starzhangrong',targets); + targets.forEach(target=>{ + target.addTempSkill('starzhangrong_threaten'); + if(choice) target.chooseToDiscard('h',true); + else target.loseHp(); + }); + player.draw(targets.length); + player.when('phaseEnd').then(()=>{ + targets.forEach(target=>target.removeSkill('starzhangrong_threaten')); + var targetx=targets.filter(target=>!target.getHistory('damage').length); + if(targetx.length){ + targetx.forEach(target=>target.chat('乐')); + player.popup('杯具'); + player.loseHp(); + return; + } + player.popup('洗具'); + }).vars({targets:targets}); + } + } + }, + global:'starzhangrong_check', + subSkill:{ + check:{ + mod:{ + canBeDiscarded:function(card,player,target){ + if(!_status.starzhangrong_check) return; + if(player.hasSkill('starzhangrong')&&get.position(card)!='h') return false; + }, + }, + }, + threaten:{ + charlotte:true, + trigger:{player:'damageEnd'}, + firstDo:true, + forced:true, + popup:false, + content:function(){ + player.removeSkill('starzhangrong_threaten'); + }, + ai:{threaten:114514+1919810}, + mark:true, + markimage:'image/card/sha.png', + intro:{content:'我还没受到伤害哟!'}, + }, + }, + }, + starhaoshou:{ + unique:true, + audio:2, + trigger:{global:'useCardAfter'}, + filter:function(event,player){ + return event.player!=player&&event.card.name=='jiu'&&player.isDamaged()&&event.player.group=='qun'; + }, + direct:true, + zhuSkill:true, + content:function*(event,map){ + var player=map.player,target=map.trigger.player; + var result=yield target.chooseBool(get.prompt('starhaoshou',player),'令'+get.translation(player)+'回复1点体力').set('choice',get.recoverEffect(player,target,target)>0); + if(result.bool){ + target.line(player); + player.logSkill('starhaoshou'); + player.recover(); + } + }, + //global:'starhaoshou_global', + subSkill:{ + global:{ + audio:'starhaoshou', + forceaudio:true, + filter:function(event,player){ + if(!player.countCards('hes',card=>{ + if(get.position(card)=='h'&&_status.connectMode) return true; + return get.name(card)=='jiu'; + })) return false; + return event.type=='dying'&&event.dying&&event.dying!=player&&event.dying.hp<=0&&event.dying.hasZhuSkill('starhaoshou')&&player.group=='qun'; + }, + filterCard:function(card,player){ + return get.name(card)=='jiu'; + }, + check:()=>1, + viewAs:{name:'tao'}, + position:'hes', + prompt:function(){ + return '将一张【酒】当作【桃】对'+get.translation(_status.event.dying)+'使用'; + }, + ai:{ + save:true, + skillTagFilter:function(player,arg,target){ + if(!player.countCards('hes',card=>{ + if(get.position(card)=='h'&&_status.connectMode) return true; + return get.name(card)=='jiu'; + })||player==target||!target.hasSkill('starhaoshou')||player.group!='qun') return false; + }, + }, + }, + }, + }, //星袁术 starcanxi:{ audio:2, @@ -10991,6 +11160,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ starpizhi_info:'锁定技。①一名角色死亡后,若你拥有该角色对应的“玺角”标记,你失去之并摸X张牌。②结束阶段,你摸X张牌。(X为你本局游戏失去的“玺角”标记数)', starzhonggu:'冢骨', starzhonggu_info:'主公技,锁定技。摸牌阶段,若游戏轮数大于等于场上的群势力角色数,则你额外摸两张牌,否则你少摸一张牌。', + star_dongzhuo:'星董卓', + star_dongzhuo_prefix:'星', + starweilin:'威临', + starweilin_info:'锁定技。当你于回合内对一名其他角色造成伤害时,若其本回合未受到过伤害,且你本回合使用的牌数大于等于其体力值,则此伤害+1。', + starzhangrong:'掌戎', + starzhangrong_info:'准备阶段,你可以选择令至多X名体力值大于等于你的角色各失去1点体力或令至多X名手牌数大于等于你的角色各弃置一张手牌。若如此做,你摸等同于选择角色数的牌,且本回合结束时,若这些角色中存在本回合未受到过伤害的角色,则你失去1点体力。', + starhaoshou:'豪首', + //starhaoshou_info:'主公技。①其他群势力角色使用【酒】结算完毕后,其可以令你回复1点体力。②当你处于濒死状态时,其他群势力角色可以将【酒】当作【桃】对你使用。', + starhaoshou_info:'主公技。其他群势力角色使用【酒】结算完毕后,其可以令你回复1点体力。。', sp_whlw:"文和乱武", sp_zlzy:"逐鹿中原", diff --git a/character/tw.js b/character/tw.js index 69da7357b..42dd48fdf 100644 --- a/character/tw.js +++ b/character/tw.js @@ -8590,14 +8590,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ if(!event.isFirstTarget||!get.tag(event.card,'damage')) return false; return !player.hasSkillTag('noCompareSource')&&game.hasPlayer(target=>{ - return target!=player&&target.countCards('h')>0&&!target.hasSkillTag('noCompareTarget'); + return player.canCompare(target,true); }); }, direct:true, content:function(){ 'step 0' player.chooseTarget(get.prompt2('twzhenhu'),[1,3],function(card,player,target){ - return target!=player&&target.countCards('h')>0&&!target.hasSkillTag('noCompareTarget'); + return player.canCompare(target,true); }).set('ai',function(target){ var player=_status.event.player,targets=_status.event.getTrigger().targets; var num=0; diff --git a/character/xianding.js b/character/xianding.js index ed3f2cacb..673c82382 100644 --- a/character/xianding.js +++ b/character/xianding.js @@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'xianding', connect:true, character:{ + zhangjian:['male','qun',105,['dc_zj_a','dc_zj_b']], zhugeruoxue:['female','wei',3,['dcqiongying','dcnuanhui']], caoyi:['female','wei',4,['dcmiyi','dcyinjun']], malingli:['female','shu',3,['dclima','dcxiaoyin','dchuahuo']], @@ -100,11 +101,71 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp2_jichu:['zhaoang','dc_liuye','dc_wangyun','yanghong','huanfan','xizheng'], sp2_yuxiu:['dongguiren','dc_tengfanglan','zhangjinyun','zhoubuyi','dc_xujing'], sp2_qifu:['dc_guansuo','xin_baosanniang','dc_zhaoxiang'], - sp2_gaoshan:['wanglang','liuhui'], + sp2_gaoshan:['wanglang','liuhui','zhangjian'], sp2_wumiao:['wu_zhugeliang','wu_luxun'], } }, skill:{ + //张臶 + dc_zj_a:{ + audio:2, + trigger:{player:'damageBegin2'}, + filter:function(event,player){ + return event.getParent().type=='card'; + }, + forced:true, + content:function(){ + var num=get.number(trigger.card); + if(typeof num=='number'&&num>0) trigger.num=num; + else trigger.cancel(); + }, + ai:{ + effect:{ + target:function(card,player,target,current){ + if(get.tag(card,'damage')&&typeof get.number(card)!='number') return 'zeroplayertarget'; + }, + }, + }, + }, + dc_zj_b:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + filter:function(event,player){ + return player.countDiscardableCards(player,'he'); + }, + direct:true, + content:function*(event,map){ + var player=map.player; + var result=yield player.chooseTarget(get.prompt2('dc_zj_b'),lib.filter.notMe).set('ai',target=>{ + var player=_status.event.player; + if(!player.hasFriend()) return 0; + return -game.countPlayer(current=>current.inRange(target)&&get.attitude(current,target)<0&&get.damageEffect(target,current,current)>0); + }); + if(result.bool){ + var target=result.targets[0]; + player.logSkill('dc_zj_b',target); + player.discard(player.getCards('he')).discarder=player; + target.addSkill('dc_zj_a'); + target.addSkill('dc_zj_b_threaten'); + player.when('phaseBegin').then(()=>{ + if(target.isIn()){ + target.removeSkill('dc_zj_a'); + target.removeSkill('dc_zj_b_threaten'); + } + }).vars({target:target}); + } + }, + subSkill:{ + //定要将你赶尽杀绝 + threaten:{ + charlotte:true, + mark:true, + marktext:'噩', + intro:{content:'已经开始汗流浃背了'}, + ai:{threaten:114514*1919810}, + }, + }, + }, //诸葛若雪 dcqiongying:{ audio:2, @@ -12693,6 +12754,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, characterIntro:{ + zhangjian:'张臶(136年-240年),字子明,钜鹿人。汉末三国时期隐士、音乐家,精通谶纬之学。张臶生活的年代从东汉一直到曹魏齐王时期,受到朝廷多次征召,一直回避,不愿做官。他活了一百零五岁,是三国时期有可靠记载的最长寿的人之一。', puyuan:'蒲元是三国时蜀汉杰出的工匠。为诸葛亮造刀三千口,并且制作木牛流马。后来姜维为他写过两部传记《蒲元传》《蒲元别传》。', guanlu:"管辂(209年-256年),字公明,平原(今山东德州平原县)人。三国时期曹魏术士。年八九岁,便喜仰观星辰。成人后,精通《周易》,善于卜筮、相术,习鸟语,相传每言辄中,出神入化。体性宽大,常以德报怨。正元初,为少府丞。北宋时被追封为平原子。管辂是历史上著名的术士,被后世奉为卜卦观相的祖师。", gexuan:"葛玄(164年-244年),汉族,吴丹阳郡句容县都乡吉阳里人(今句容市),祖籍山东琅琊,三国著名高道,道教灵宝派祖师。字孝先,号仙翁,被尊称为“葛天师”。道教尊为葛仙翁,又称太极仙翁,与张道陵、许逊、萨守坚共为四大天师。为汉下邳僮侯葛艾后裔,祖葛矩,安平太守,黄门郎;从祖葛弥,豫章第五郡太守。父葛焉,字德儒,州主簿,山阴令,散骑常侍,大尚书。随左慈学道,得《太清丹经》、《黄帝九鼎神丹经》、《金液丹经》等道经。曾采药海山,吴嘉禾二年(233年),在閤皂山修道建庵,筑坛立炉,修炼九转金丹。喜好遨游山川,去过括苍山、南岳山、罗浮山。编撰《灵宝经诰》,精研上清、灵宝等道家真经,并嘱弟子世世箓传。", @@ -13319,6 +13381,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcqiongying_info:'出牌阶段限一次。你可以移动场上的一张牌,然后你弃置一张与此牌花色相同的手牌(若没有该花色的手牌则改为展示所有手牌)。', dcnuanhui:'暖惠', dcnuanhui_info:'结束阶段,你可以选择一名装备区有牌的角色,其可以视为依次使用X张基本牌(X为其装备区牌数)。若其以此法使用了至少两张牌,其弃置装备区里的所有牌。', + zhangjian:'张臶', + dc_zj_a:'技能', + dc_zj_a_info:'锁定技。当你受到牌造成的伤害时,若此牌有点数,则你将此伤害值改为此牌点数,否则你防止此伤害。', + dc_zj_b:'技能', + dc_zj_b_info:'结束阶段,你可以弃置所有牌并令一名其他角色获得〖技能〗直到你的下个回合开始。', sp2_yinyu:'隐山之玉', sp2_huben:'百战虎贲', diff --git a/character/yijiang.js b/character/yijiang.js index 7f5f9948b..ac75d6a18 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -44,7 +44,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhuran:['male','wu',4,['danshou']], xusheng:['male','wu',4,['xinpojun']], wuguotai:['female','wu',3,['ganlu','buyi']], - lingtong:['male','wu',4,['olxuanfeng']], + lingtong:['male','wu',4,['xuanfeng']], liubiao:['male','qun',3,['rezishou','zongshi']], yufan:['male','wu',3,['zhiyan','zongxuan']], chengong:['male','qun',3,['mingce','zhichi']], @@ -2681,10 +2681,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return !player.hasSkill('xintaoluan3')&&player.countCards('hes',card=>lib.inpile.some(name=>{ if(player.getStorage('xintaoluan').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; @@ -5263,10 +5263,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return !player.hasSkill('taoluan3')&&player.countCards('hes',card=>lib.inpile.some(name=>{ if(player.getStorage('taoluan').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; @@ -13916,7 +13916,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ gaoshun:['gaoshun','xin_gaoshun','re_gaoshun','old_gaoshun'], zhonghui:['zhonghui','xin_zhonghui','re_zhonghui','old_zhonghui','pe_zhonghui'], wangyi:['wangyi','re_wangyi','old_wangyi'], - caozhang:['caozhang','re_caozhang','xin_caozhang'], + caozhang:['caozhang','ol_caozhang','re_caozhang','xin_caozhang'], guanzhang:['guanzhang','re_guanzhang','old_guanzhang'], madai:['old_madai','re_madai','tw_madai','madai'], liaohua:['liaohua','re_liaohua','xin_liaohua'], diff --git a/game/game.js b/game/game.js index 2c206fd17..59fadf260 100644 --- a/game/game.js +++ b/game/game.js @@ -22385,9 +22385,9 @@ new Promise(resolve=>{ next.setContent('swapEquip'); return next; } - canCompare(target){ + canCompare(target,goon,bool){ if(this==target) return false; - if(!this.countCards('h')||!target.countCards('h')) return false; + if((!this.countCards('h')&&goon!==true)||(!target.countCards('h')&&bool!==true)) return false; if(this.hasSkillTag('noCompareSource')||target.hasSkillTag('noCompareTarget')) return false; return true; } @@ -36139,6 +36139,18 @@ new Promise(resolve=>{ * @returns {string} */ getSpan:()=>`${get.prefixSpan('OL')}${get.prefixSpan('界')}` + }], + ['OL谋',{ + /** + * @returns {string} + */ + getSpan:()=>`${get.prefixSpan('OL')}${get.prefixSpan('谋')}` + }], + ['新杀谋',{ + /** + * @returns {string} + */ + getSpan:()=>`${get.prefixSpan('新杀')}${get.prefixSpan('谋')}` }] ]), groupnature:{ diff --git a/game/package.js b/game/package.js index 7a9b66af8..10d012d9f 100644 --- a/game/package.js +++ b/game/package.js @@ -3,11 +3,12 @@ window.noname_package={ standard:'标准', refresh:'界限突破', shenhua:'神话再临', - xinghuoliaoyuan:'星火燎原', yijiang:'一将成名', sp:'璀璨星河', + onlyOL:'OL专属', yingbian:'文德武备', clan:'门阀士族', + xinghuoliaoyuan:'星火燎原', huicui:'群英荟萃', xianding:'限定专属', sp2:'系列专属', diff --git a/image/character/ol_caozhang.jpg b/image/character/ol_caozhang.jpg new file mode 100644 index 000000000..10d876b8d Binary files /dev/null and b/image/character/ol_caozhang.jpg differ diff --git a/image/character/ol_sb_jiangwei.jpg b/image/character/ol_sb_jiangwei.jpg new file mode 100644 index 000000000..1c20efd04 Binary files /dev/null and b/image/character/ol_sb_jiangwei.jpg differ diff --git a/image/character/star_dongzhuo.jpg b/image/character/star_dongzhuo.jpg new file mode 100644 index 000000000..0a3dfd182 Binary files /dev/null and b/image/character/star_dongzhuo.jpg differ diff --git a/mode/guozhan.js b/mode/guozhan.js index a71a1fb59..3b7025497 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -150,12 +150,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ else lib.character[i][1]='qun'; } } - lib.characterReplace={}; + //lib.characterReplace={}; },_status.mode,_status.separatism); game.randomMapOL(); } else{ - lib.characterReplace={}; + //lib.characterReplace={}; for(var i=0;i