{
- return skill.indexOf(skillx)==0||name.indexOf(skillx+'_'+player.playerid)==0;
- })) return true;
- }
- return false;
- },
- content:function(){
- 'step 0'
- var current;
- var skill=trigger.skill,name=trigger.event?trigger.event.name:'';
- var visitors=player.getStorage('jsrgyingmen');
- for(var visitor of visitors){
- var skills=lib.character[visitor][3].slice();
- game.expandSkills(skills);
- var info=get.info(skill);
- if(info&&info.charlotte) continue;
- if(skills.some(skillx=>{
- return skill.indexOf(skillx)==0||name.indexOf(skillx+'_'+player.playerid)==0;
- })){
- current=visitor;
- break;
- }
- }
- event.current=current;
- player.chooseButton(['###评鉴:移去一名访客###若移去的访客为'+get.translation(current)+',则你摸一张牌
',[player.getStorage('jsrgyingmen'),'character']],true).set('ai',button=>{
- if(button.link==_status.event.toremove) return 1;
- return Math.random();
- }).set('toremove',function(){
- var list=player.getStorage('jsrgyingmen');
- var rand=Math.random();
- if(rand<0.33) return list[0];
- if(rand<0.66) return current;
- return list.randomGet();
- }());
- 'step 1'
- if(result.bool){
- var visitor=result.links[0];
- game.log(player,'从','#y访客','中移去了','#g'+get.translation(visitor));
- player.popup(visitor);
- player.unmarkAuto('jsrgyingmen',[visitor]);
- _status.characterlist.add(visitor);
- if(visitor==event.current) player.draw();
- lib.skill.jsrgyingmen.update(player);
- }
- },
- subSkill:{
- blocker:{
- init:function(player,skill){
- player.addSkillBlocker(skill);
- },
- onremove:function(player,skill){
- player.removeSkillBlocker(skill);
- },
- charlotte:true,
- locked:true,
- skillBlocker:function(skill,player){
- if(skill!='jsrgpingjian_'+player.playerid) return false;
- if(player._jsrgpingjian_blockerChecking) return;
- player._jsrgpingjian_blockerChecking=true;
- var own=player.hasSkill('jsrgpingjian');
- delete player._jsrgpingjian_blockerChecking;
- return !own;
- }
- },
- }
- },
- //董白
- jsrgshichong:{
- audio:2,
- zhuanhuanji:true,
- trigger:{player:'useCardToPlayered'},
- direct:true,
- filter:function(event,player){
- return event.target!=player&&event.targets.length==1&&event.target.isIn()&&event.target.countCards('h');
- },
- mark:true,
- marktext:'☯',
- intro:{
- content:function(storage,player){
- var str='转换技。当你使用牌指定其他角色为唯一目标后,';
- if(storage) return str+'目标角色可以交给你一张手牌。';
- return str+'你可以获得目标角色一张手牌。';
- },
- },
- content:function(){
- 'step 0'
- if(!player.storage.jsrgshichong){
- player.chooseBool(get.prompt('jsrgshichong',trigger.target),'你可以获得该角色的一张手牌').set('ai',()=>{
- return _status.event.bool;
- }).set('bool',get.attitude(player,trigger.target)<=0);
- }
- else{
- trigger.target.chooseCard('是否发动'+get.translation(player)+'的【恃宠】?','你可以选择一张手牌,并交给该角色').set('ai',card=>{
- if(_status.event.goon) return 5-get.value(card);
- return 0-get.value(card);
- }).set('goon',get.attitude(trigger.target,player)>2);
- }
- 'step 1'
- if(result.bool){
- if(!player.storage.jsrgshichong){
- player.logSkill('jsrgshichong',trigger.target);
- player.gainPlayerCard(trigger.target,'h',true);
- }
- else{
- trigger.target.logSkill('jsrgshichong',player);
- trigger.target.give(result.cards,player);
- }
- player.changeZhuanhuanji('jsrgshichong');
- }
- }
- },
- jsrglianzhu:{
- audio:2,
- enable:'phaseUse',
- usable:1,
- filterCard:{color:'black'},
- position:'h',
- filterTarget:lib.filter.notMe,
- lose:false,
- discard:false,
- delay:false,
- content:function(){
- 'step 0'
- player.showCards(cards,get.translation(player)+'发动了【连诛】');
- 'step 1'
- player.give(cards,target);
- 'step 2'
- event.targets=game.filterPlayer(current=>{
- return current.group==target.group&¤t!=player;
- }).sortBySeat();
- game.delayx();
- 'step 3'
- var target=targets.shift();
- if(player.canUse('guohe',target)){
- player.useCard({name:'guohe',isCard:true},target);
- }
- if(targets.length) event.redo();
- },
- ai:{
- order:4,
- result:{
- target:function(player,target){
- var targets=game.filterPlayer(current=>{
- return current.group==target.group&¤t!=player;
- });
- var eff=targets.reduce((p,c)=>{
- return p+get.effect(c,{name:'guohe'},player,player);
- })
- if(ui.selected.cards.length) eff+=get.value(ui.selected.cards[0],target);
- return eff;
- }
- }
- }
- },
- //桥玄
- jsrgjuezhi:{
- audio:2,
- trigger:{source:'damageBegin1'},
- filter:function(event,player){
- if(_status.currentPhase!=player||player.hasSkill('jsrgjuezhi_used',null,null,false)) return false;
- return event.card&&event.getParent().type=='card'&&lib.skill.jsrgjuezhi.getNum(event.player,player)>0;
- },
- forced:true,
- locked:false,
- getNum:function(target,player){
- return target.countCards(card=>{
- var subtype=get.subtypes(card);
- for(var i of subtype){
- if(player.hasDisabledSlot(i)) return true;
- }
- return false;
- });
- },
- group:'jsrgjuezhi_disable',
- content:function(){
- player.addTempSkill('jsrgjuezhi_used',['phaseZhunbeiAfter','phaseJudgeAfter','phaseDrawAfter','phaseUseAfter','phaseDiscardAfter','phaseJieshuAfter']);
- trigger.num+=lib.skill.jsrgjuezhi.getNum(trigger.player,player);
- },
- subSkill:{
- disable:{
- audio:'jsrgjuezhi',
- trigger:{
- player:'loseAfter',
- global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
- },
- direct:true,
- filter:function(event,player){
- var evt=event.getl(player);
- return evt&&evt.es&&evt.es.length>0;
- },
- content:function(){
- 'step 0'
- event.cards=trigger.getl(player).es;
- 'step 1'
- var card=cards.shift(),subtypes=get.subtypes(card).filter(slot=>player.hasEnabledSlot(slot));
- event.subtypes=subtypes;
- if(subtypes.length>0){
- player.chooseBool(get.prompt('jsrgjuezhi_disable'),'废除你的'+get.translation(subtypes)+'栏').set('ai',()=>1);
- }
- else event._result={bool:false};
- 'step 2'
- if(result.bool){
- player.logSkill('jsrgjuezhi_disable');
- player.disableEquip(event.subtypes);
- }
- if(cards.length>0) event.goto(1);
- },
- },
- used:{charlotte:true}
- }
- },
- jsrgjizhao:{
- audio:2,
- trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']},
- direct:true,
- content:function(){
- 'step 0'
- player.chooseTarget(get.prompt2('jsrgjizhao')).set('ai',target=>{
- var player=_status.event.player;
- if(player.countCards('j')) return player==target?10:0.1;
- return 6-get.attitude(player,target);
- });
- 'step 1'
- if(result.bool){
- var target=result.targets[0];
- event.target=target;
- player.logSkill('jsrgjizhao',target);
- target.chooseToUse({
- filterCard:function(card,player,event){
- if(get.itemtype(card)!='card'||get.position(card)!='h'&&get.position(card)!='s') return false;
- return lib.filter.filterCard.apply(this,arguments);
- },
- prompt:'急召:使用一张手牌,否则'+get.translation(player)+'可以移动你区域里的一张牌',
- addCount:false,
- goon:target!=player||!player.countCards('j'),
- ai1:function(card){
- if(_status.event.goon) return get.order(card);
- return 0;
- }
- });
- }
- 'step 2'
- if(result.bool){event.finish();return;}
- var targets=game.filterPlayer(current=>{
- if(current==target) return false;
- var hs=target.getCards('h');
- if(hs.length) return true;
- var js=target.getCards('j');
- for(var i=0;i0) return att;
- return 0;
- }
- return -att*att2;
- });
- next.set('targetprompt','移动目标');
- next.set('prompt','急召:是否移动'+get.translation(target)+'的一张牌?');
- }
- else event.finish();
- 'step 3'
- if(result.bool){
- var target2=result.targets[0];
- event.targets=[target,target2];
- player.line2(event.targets,'green');
- }
- else{
- event.finish();
- }
- 'step 4'
- game.delay();
- 'step 5'
- if(targets.length==2){
- player.choosePlayerCard('hej',true,function(button){
- var player=_status.event.player;
- var targets0=_status.event.targets0;
- var targets1=_status.event.targets1;
- if(get.attitude(player,targets0)>0&&get.attitude(player,targets1)<0){
- if(get.position(button.link)=='j') return 12;
- if(get.value(button.link,targets0)<0&&get.effect(targets1,button.link,player,targets1)>0) return 10;
- return 0;
- }
- else{
- if(get.position(button.link)=='j') return -10;
- if(get.position(button.link)=='h') return 10;
- return get.value(button.link)*get.effect(targets1,button.link,player,targets1);
- }
- },targets[0]).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){
- var targets1=_status.event.targets1;
- if(get.position(button.link)=='h'){
- return true;
- }
- else if(get.position(button.link)=='j'){
- return targets1.canAddJudge(button.link);
- }
- else{
- return targets1.canEquip(button.link);
- }
- });
- }
- else{
- event.finish();
- }
- 'step 6'
- if(result.bool&&result.links.length){
- var link=result.links[0];
- if(get.position(link)=='h'){
- event.targets[1].gain(link);
- }
- else if(get.position(link)=='e'){
- event.targets[1].equip(link);
- }
- else if(link.viewAs){
- event.targets[1].addJudge({name:link.viewAs},[link]);
- }
- else{
- event.targets[1].addJudge(link);
- }
- event.targets[0].$give(link,event.targets[1],false);
- game.log(event.targets[0],'的',get.position(link)=='h'?'一张手牌':link,'被移动给了',event.targets[1]);
- game.delay();
- }
- },
- ai:{
- effect:{
- target:function(card,player,target,current){
- if(get.type(card)=='delay'&¤t<0){
- if(target.countCards('j')) return;
- return 'zerotarget';
- }
- },
- },
- }
- },
- //杨彪
- jsrgzhaohan:{
- audio:'zhaohan',
- trigger:{player:'phaseZhunbeiBegin'},
- forced:true,
- locked:false,
- filter:function(event,player){
- if(game.shuffleNumber==0) return player.isDamaged();
- return true;
- },
- content:function(){
- player[game.shuffleNumber>0?'loseHp':'recover']();
- }
- },
- jsrgrangjie:{
- audio:'rangjie',
- trigger:{player:'damageEnd'},
- filter:function(event,player){
- return player.canMoveCard();
- },
- check:function(event,player){
- return player.canMoveCard(true);
- },
- content:function(){
- 'step 0'
- event.num=trigger.num;
- 'step 1'
- event.num--;
- if(player.canMoveCard()) player.moveCard(true);
- 'step 2'
- if(result.bool){
- var card=result.card;
- var suit=get.suit(card,false);
- var cards=Array.from(ui.discardPile.childNodes);
- var gains=[];
- var history=game.getGlobalHistory('cardMove',evt=>{
- if(evt.name=='lose') return evt.position==ui.discardPile;
- return evt.name=='cardsDiscard';
- });
- for(var i=history.length-1;i>=0;i--){
- var evt=history[i];
- var cards2=evt.cards.filter(card=>{
- return cards.contains(card)&&get.suit(card,false)==suit;
- });
- if(cards2.length){
- gains.addArray(cards2);
- cards.removeArray(cards2);
- }
- if(!cards.length) break;
- }
- if(gains.length){
- player.chooseButton(['让节:是否获得一张'+get.translation(suit)+'牌?',gains]).set('ai',get.buttonValue);
- }
- else event._result={bool:false};
- }
- 'step 3'
- if(result.bool){
- player.gain(result.links,'gain2');
- }
- 'step 4'
- if(event.num>0&&player.hasSkill('jsrgrangjie')){
- player.chooseBool(get.prompt2('jsrgrangjie')).set('ai',()=>_status.event.bool).set('bool',lib.skill.jsrgrangjie.check(trigger,player));
- }
- else event.finish();
- 'step 5'
- if(result.bool){
- player.logSkill('jsrgrangjie');
- event.goto(1);
- }
- },
- ai:{
- maixie:true,
- maixie_hp:true,
- effect:{
- target:function(card,player,target){
- if(get.tag(card,'damage')){
- if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
- if(target._jsrgrangjie_aiChecking) return;
- target._jsrgrangjie_aiChecking=true;
- var moveCard=target.canMoveCard(true);
- delete target._jsrgrangjie_aiChecking;
- if(!moveCard||!target.hasFriend()) return;
- var num=1;
- if(get.attitude(player,target)>0){
- if(player.needsToDiscard()){
- num=0.5;
- }
- else{
- num=0.3;
- }
- }
- if(target.hp>=4) return [1,num*2];
- if(target.hp==3) return [1,num*1.5];
- if(target.hp==2) return [1,num*0.5];
- }
- },
- },
- },
- },
- jsrgyizheng:{
- audio:'yizheng',
- enable:'phaseUse',
- usable:1,
- filter:function(event,player){
- return game.hasPlayer(function(current){
- return current.countCards('h')>player.countCards('h')&&player.canCompare(current);
- });
- },
- filterTarget:function(card,player,current){
- return current.countCards('h')>player.countCards('h')&&player.canCompare(current);
- },
- content:function(){
- 'step 0'
- player.chooseToCompare(target);
- 'step 1'
- if(result.bool){
- target.skip('phaseDraw');
- target.addTempSkill('yizheng2',{player:'phaseDrawSkipped'});
- event.finish();
- }
- else{
- target.chooseControl('1','2','cancel').set('prompt','是否对'+get.translation(player)+'造成至多2点伤害?').set('ai',()=>{
- return _status.event.choice;
- }).set('choice',get.damageEffect(player,target,target)>0?(get.attitude(target,player)>0?0:1):'cancel2');
- }
- 'step 2'
- if(result.control!='cancel2'){
- var num=result.index+1;
- target.line(player);
- player.damage(target,num);
- }
- },
- ai:{
- order:1,
- result:{
- target:function(player,target){
- if(target.skipList.contains('phaseDraw')||target.hasSkill('pingkou')) return 0;
- var hs=player.getCards('h').sort(function(a,b){
- return b.number-a.number;
- });
- var ts=target.getCards('h').sort(function(a,b){
- return b.number-a.number;
- });
- if(!hs.length||!ts.length) return 0;
- if(hs[0].number>ts[0].number) return -1;
- return 0;
- },
- },
- },
- },
- //孔融
- jsrglirang:{
- audio:'splirang',
- trigger:{global:'phaseDrawBegin'},
- direct:true,
- filter:function(event,player){
- return event.player!=player&&!player.hasSkill('jsrglirang_used')&&player.countCards('he')>1;
- },
- content:function(){
- 'step 0'
- player.chooseCard(get.prompt('jsrglirang',trigger.player),'你可以选择两张牌,将这些牌交给该角色。若如此做,你获得其本回合弃牌阶段弃置的所有牌。',2,'he').set('ai',card=>{
- if(!_status.event.give) return 0;
- var player=_status.event.player,target=_status.event.target;
- return target.getUseValue(card)-player.getUseValue(card)+0.5;
- }).set('give',get.attitude(player,trigger.player)>0).set('target',trigger.player);
- 'step 1'
- if(result.bool){
- player.logSkill('jsrglirang',trigger.player);
- var cards=result.cards;
- player.give(cards,trigger.player);
- player.addTempSkill('jsrglirang_used','roundStart');
- player.addTempSkill('jsrglirang_given');
- player.markAuto('jsrglirang_used',[trigger.player]);
- }
- },
- subSkill:{
- used:{
- charlotte:true,
- onremove:true,
- intro:{content:'本轮〖礼让〗目标:$'},
- },
- given:{
- audio:'splirang',
- trigger:{global:'phaseDiscardEnd'},
- filter:function(event,player){
- return event.player.hasHistory('lose',evt=>{
- return evt.type=='discard'&&evt.getParent('phaseDiscard')==event&&evt.cards2.filterInD('d').length>0;
- });
- },
- charlotte:true,
- prompt2:function(event,player){
- var cards=[];
- event.player.getHistory('lose',evt=>{
- if(evt.type=='discard'&&evt.getParent('phaseDiscard')==event) cards.addArray(evt.cards2.filterInD('d'));
- });
- return '获得'+get.translation(cards);
- },
- content:function(){
- var cards=[];
- trigger.player.getHistory('lose',evt=>{
- if(evt.type=='discard'&&evt.getParent('phaseDiscard')==trigger) cards.addArray(evt.cards2.filterInD('d'));
- });
- player.gain(cards,'gain2');
- }
- }
- }
- },
- jsrgzhengyi:{
- audio:2,
- trigger:{player:'damageBegin4'},
- filter:function(event,player){
- var list=player.getStorage('jsrglirang_used');
- if(!list.length) return false;
- return !player.getHistory('damage').length&&list[0].isIn();
- },
- direct:true,
- content:function(){
- 'step 0'
- var target=player.getStorage('jsrglirang_used')[0];
- event.target=target;
- target.chooseBool('是否对'+get.translation(player)+'发动【争义】?','将此'+(trigger.source?'来源为'+get.translation(trigger.source):'无来源')+'的'+trigger.num+'点伤害转移给你').set('ai',()=>{
- return _status.event.bool;
- }).set('bool',get.damageEffect(player,trigger.source,target)>get.damageEffect(target,trigger.source,target));
- 'step 1'
- if(result.bool){
- target.logSkill('jsrgzhengyi',player);
- trigger.cancel();
- target.damage(trigger.source,trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards);
- }
- }
- },
- //朱儁
- jsrgfendi:{
- audio:2,
- trigger:{player:'useCardToPlayered'},
- filter:function(event,player){
- return event.targets.length==1&&event.card.name=='sha'&&event.targets[0].countCards('h')>0;
- },
- usable:1,
- logTarget:'target',
- content:function(){
- 'step 0'
- var target=trigger.target;
- event.target=target;
- player.choosePlayerCard(target,'h',true,[1,Infinity],'分敌:展示'+get.translation(target)+'的任意张手牌').set('ai',button=>{
- if(_status.event.all) return 1;
- if(ui.selected.buttons.length) return 0;
- return Math.random();
- }).set('all',!target.mayHaveShan()&&Math.random()<0.75).set('forceAuto',true);
- 'step 1'
- if(result.bool){
- var cards=result.cards;
- target.showCards(cards,get.translation(player)+'对'+get.translation(target)+'发动了【分敌】');
- target.addGaintag(cards,'jsrgfendi_tag');
- target.addTempSkill('jsrgfendi_blocker');
- player.addTempSkill('jsrgfendi_gain');
- if(!trigger.card.storage) trigger.card.storage={};
- trigger.card.storage.jsrgfendi=true;
- player.storage.jsrgfendi_gain=target;
- }
- else player.storage.counttrigger.jsrgfendi--;
- },
- subSkill:{
- blocker:{
- trigger:{
- player:['damageBefore','damageCancelled','damageZero'],
- target:['shaMiss','useCardToExcluded','useCardToEnd'],
- global:['useCardEnd'],
- },
- forced:true,
- popup:false,
- charlotte:true,
- content:function(){
- player.removeSkill('jsrgfendi_blocker');
- },
- mod:{
- cardEnabled:function(card,player){
- if(card.cards){
- for(var i of card.cards){
- if(!i.hasGaintag('jsrgfendi_tag')) return false;
- }
- }
- else if(get.itemtype(card)=='card'){
- if(!card.hasGaintag('jsrgfendi_tag')) return false;
- }
- },
- cardRespondable:function(card,player){
- return lib.skill.jsrgfendi.cardEnabled.apply(this,arguments);
- },
- cardSavable:function(card,player){
- return lib.skill.jsrgfendi.cardEnabled.apply(this,arguments);
- },
- },
- },
- gain:{
- trigger:{global:'damageSource'},
- charlotte:true,
- forced:true,
- direct:true,
- onremove:true,
- filter:function(event,player){
- var target=player.storage.jsrgfendi_gain;
- return event.card&&event.card.storage&&event.card.storage.jsrgfendi&&target&&target.isIn()&&target.hasCard(card=>{
- return card.hasGaintag('jsrgfendi_tag');
- },'h');
- },
- content:function(){
- player.logSkill('jsrgfendi_gain',player.storage.jsrgfendi_gain);
- player.gain(player.storage.jsrgfendi_gain.getCards('h',card=>{
- return card.hasGaintag('jsrgfendi_tag');
- }),'give');
- }
- }
- }
- },
- jsrgjuxiang:{
- audio:2,
- trigger:{
- player:'gainAfter',
- global:'loseAsyncAfter',
- },
- filter:function(event,player){
- var evt=event.getParent('phaseDraw');
- if(evt&&evt.name=='phaseDraw') return false;
- var hs=player.getCards('h');
- var cards=event.getg(player).filter(i=>hs.contains(i));
- if(!cards.length) return false;
- for(var card of cards){
- if(!lib.filter.cardDiscardable(card,player,'jsrgjuxiang')) return false;
- }
- return true;
- },
- check:function(event,player){
- var target=_status.currentPhase;
- if(!target||get.attitude(player,target)<=0) return false;
- var evt=event.getParent('phaseDiscard'),evt2=event.getParent('phaseJieshu');
- if(evt&&evt.name=='phaseDiscard'||evt2&&evt.name=='phaseJieshu') return false;
- if(target.getCardUsable({name:'sha'})>=target.countCards('hs','sha')) return false;
- if(!target.hasValueTarget({name:'sha'})) return false;
- var hs=player.getCards('h');
- var cards=event.getg(player).filter(i=>hs.contains(i));
- var val=0;
- for(var i of cards) val+=get.value(i);
- if(val<10) return true;
- return false;
- },
- prompt2:function(event,player){
- var hs=player.getCards('h');
- var cards=event.getg(player).filter(i=>hs.contains(i));
- var target=_status.currentPhase;
- var str='弃置'+get.translation(cards);
- if(target&&target.isIn()){
- var list=[];
- for(var card of cards){
- list.add(get.suit(card,player));
- }
- var num=list.length;
- str+=',然后令'+get.translation(target)+'于此回合额定的出牌阶段内使用【杀】的次数上限+'+num;
- }
- return str;
- },
- content:function(){
- 'step 0'
- var hs=player.getCards('h');
- var cards=trigger.getg(player).filter(i=>hs.contains(i));
- var list=[];
- for(var card of cards){
- list.add(get.suit(card,player));
- }
- event.num=list.length;
- player.discard(cards);
- 'step 1'
- var target=_status.currentPhase;
- if(target&&target.isIn()){
- target.addTempSkill('jsrgjuxiang_sha');
- target.addMark('jsrgjuxiang_sha',num,false);
- var evt=trigger.getParent('phaseUse');
- if(evt&&evt.name=='phaseUse'&&!evt.skill){
- evt.player.addTempSkill('jsrgjuxiang_buff','phaseUseAfter');
- evt.player.addMark('jsrgjuxiang_buff',num,false);
- }
- }
- },
- subSkill:{
- sha:{
- trigger:{global:'phaseUseBegin'},
- filter:function(event,player){
- return !event.skill;
- },
- silent:true,
- charlotte:true,
- forced:true,
- onremove:true,
- content:function(){
- trigger.player.addTempSkill('jsrgjuxiang_buff','phaseUseAfter');
- trigger.player.addMark('jsrgjuxiang_buff',player.countMark('jsrgjuxiang_sha'),false);
- }
- },
- buff:{
- charlotte:true,
- intro:{content:'使用【杀】的次数上限+#'},
- onremove:true,
- mod:{
- cardUsable:function(card,player,num){
- if(card.name=='sha') return num+player.countMark('jsrgjuxiang_buff');
- },
- }
- }
- }
- },
- //刘备
- jsrgjishan:{
- audio:2,
- trigger:{global:'damageBegin4'},
- usable:1,
- filter:function(event,player){
- return player.hp>0;
- },
- logTarget:'player',
- onremove:true,
- prompt2:'失去1点体力并防止此伤害,然后你与其各摸一张牌',
- check:function(event,player){
- return get.damageEffect(event.player,event.source,player,event.nature)*Math.sqrt(event.num)<=get.effect(player,{name:'losehp'},player,player);
- },
- group:'jsrgjishan_recover',
- content:function(){
- 'step 0'
- trigger.cancel();
- player.loseHp();
- player.markAuto('jsrgjishan',[trigger.player]);
- 'step 1'
- if(player.isIn()&&trigger.player.isIn()){
- var targets=[player,trigger.player];
- targets.sortBySeat(_status.currentPhase);
- targets[0].draw('nodelay');
- targets[1].draw();
- }
- },
- intro:{content:'已帮助$抵挡过伤害'},
- ai:{expose:0.2},
- subSkill:{
- recover:{
- audio:'jsrgjishan',
- trigger:{source:'damageSource'},
- filter:function(event,player){
- return game.hasPlayer(current=>{
- return current.isMinHp()&&player.getStorage('jsrgjishan').contains(current);
- });
- },
- usable:1,
- direct:true,
- content:function(){
- 'step 0'
- player.chooseTarget(get.prompt('jsrgjishan_recover'),'令一名体力值最小且你对其发动过〖积善①〗的角色回复1点体力',(card,player,target)=>{
- return target.isMinHp()&&player.getStorage('jsrgjishan').contains(target);
- }).set('ai',target=>{
- return get.recoverEffect(target,_status.event.player,_status.event.player);
- });
- 'step 1'
- if(result.bool){
- var target=result.targets[0];
- player.logSkill('jsrgjishan_recover',target);
- target.recover();
- }
- else player.storage.counttrigger.jsrgjishan_recover--;
- }
- }
- }
- },
- jsrgzhenqiao:{
- audio:2,
- trigger:{player:'useCardToTargeted'},
- forced:true,
- shaRelated:true,
- filter:function(event,player){
- return event.isFirstTarget&&event.card.name=='sha'&&player.hasEmptySlot(1);
- },
- content:function(){
- // trigger.getParent().targets=trigger.getParent().targets.concat(trigger.targets);
- // trigger.getParent().triggeredTargets4=trigger.getParent().triggeredTargets4.concat(trigger.targets);
- trigger.getParent().effectCount++;
- },
- ai:{
- effect:{
- target:function(card,player,target){
- if(player._jsrgzhenqiao_aiChecking) return;
- if(target==player&&get.subtype(card)=='equip1'&&!player.getEquip(1)){
- player._jsrgzhenqiao_aiChecking=true;
- var eff=get.effect(target,card,player,player);
- delete player._jsrgzhenqiao_aiChecking;
- if(eff<3) return 'zerotarget';
- }
- }
- }
- },
- mod:{
- attackRange:function(player,num){
- return num+1;
- },
- }
- },
- //王允
- jsrgshelun:{
- audio:2,
- enable:'phaseUse',
- usable:1,
- filter:function(event,player){
- return game.hasPlayer(current=>player.inRange(current));
- },
- filterTarget:function(card,player,target){
- return player.inRange(target);
- },
- content:function(){
- var num=player.countCards('h');
- var targets=game.filterPlayer(current=>{
- return current.countCards('h')<=num&¤t!=target;
- });
- player.chooseToDebate(targets).set('callback',function(){
- var result=event.debateResult;
- if(result.bool&&result.opinion){
- var opinion=result.opinion;
- var target=event.getParent(2).target;
- if(opinion=='red') player.discardPlayerCard(target,'he',true);
- else target.damage();
- }
- }).set('ai',card=>{
- var player=_status.event.player;
- var color=(player==_status.event.source||get.damageEffect(_status.event.getParent(2).target,player,player)>0)?'black':'red';
- var val=5-get.value(card);
- if(get.color(card)==color) val+=10;
- return val;
- }).set('aiCard',target=>{
- var color=(target==_status.event.source||get.damageEffect(_status.event.getParent(2).target,target,target)>0)?'black':'red';
- var hs=target.getCards('h',{color:color});
- if(!hs.length) hs=target.getCards('h');
- return {bool:true,cards:[hs.randomGet()]};
- }).set('target',target);
- },
- ai:{
- order:8,
- expose:0.2,
- result:{target:-1},
- }
- },
- jsrgfayi:{
- audio:2,
- trigger:{global:'chooseToDebateAfter'},
- filter:function(event,player){
- if(!event.targets.contains(player)) return false;
- if(event.red.map(i=>i[0]).contains(player)) return event.black.length;
- if(event.black.map(i=>i[0]).contains(player)) return event.red.length;
- return false;
- },
- direct:true,
- content:function(){
- 'step 0'
- var targets=[];
- if(trigger.red.map(i=>i[0]).contains(player)) targets=trigger.black;
- if(trigger.black.map(i=>i[0]).contains(player)) targets=trigger.red;
- player.chooseTarget(get.prompt('jsrgfayi'),'对一名与你意见不同的角色造成1点伤害',(card,player,target)=>{
- return _status.event.targets.contains(target);
- }).set('targets',targets.map(i=>i[0])).set('ai',target=>{
- var player=_status.event.player;
- return get.damageEffect(target,player,player);
- });
- 'step 1'
- if(result.bool){
- var target=result.targets[0];
- player.logSkill('jsrgfayi',target);
- target.damage();
- }
- }
- },
- jsrgtushe:{
- audio:'xinfu_tushe',
- trigger:{
- player:'useCardToPlayered',
- },
- filter:function (event,player){
- if(get.type(event.card)=='equip') return false;
- if(event.getParent().triggeredTargets3.length>1) return false;
- return event.targets.length>0;
- },
- check:function(event,player){
- return !player.countCards('h',{type:'basic'});
- },
- content:function (){
- 'step 0'
- player.showHandcards();
- 'step 1'
- if(player.countCards('h',{type:'basic'})) event.finish();
- else player.chooseBool('图射:是否摸'+get.cnNumber(trigger.targets.length)+'张牌?').set('ai',()=>1);
- 'step 2'
- if(result.bool){
- player.draw(trigger.targets.length);
- }
- },
- ai:{
- presha:true,
- pretao:true,
- threaten:1.8,
- },
- },
- jsrgtongjue:{
- audio:2,
- enable:'phaseUse',
- usable:1,
- zhuSkill:true,
- filter:function(event,player){
- return player.hasZhuSkill('jsrgtongjue')&&game.hasPlayer(current=>current!=player&¤t.group=='qun');
- },
- filterCard:true,
- selectCard:[1,Infinity],
- filterTarget:function(card,player,target){
- return target!=player&&target.group=='qun';
- },
- selectTarget:[1,Infinity],
- filterOk:function(){
- return ui.selected.cards.length==ui.selected.targets.length;
- },
- check:function(card){
- var player=_status.event.player;
- if(player.hasCard(card=>{
- return player.hasValueTarget(card);
- },'hs')){
- return 3-player.getUseValue(card);
- }
- return 3-get.value(card);
- },
- multiline:true,
- multitarget:true,
- delay:false,
- discard:false,
- lose:false,
- content:function(){
- 'step 0'
- var list=[];
- for(var i=0;icurrent.getSeatNum()==1);
- return event.player==zhu;
- },
- locked:false,
- group:'jsrgzhenglve_damage',
- prompt2:function(event,player){
- var num=Math.min(event.player.getHistory('sourceDamage').length>0?1:2,game.countPlayer(current=>{
- return !current.hasMark('jsrgzhenglve_mark');
- }));
- if(num==0) return '你可以摸一张牌';
- return '你可以摸一张牌并令'+get.cnNumber(num)+'名角色获得“猎”标记';
- },
- content:function(){
- 'step 0'
- player.draw();
- 'step 1'
- var damaged=trigger.player.getHistory('sourceDamage').length>0;
- var num=damaged?1:2;
- var targets=game.filterPlayer(current=>{
- return !current.hasMark('jsrgzhenglve_mark');
- });
- if(!targets.length) event.finish();
- else if(targets.length<=num) event._result={bool:true,targets:targets};
- else player.chooseTarget('令'+get.cnNumber(num)+'名角色获得“猎”标记',true,num,(card,player,target)=>{
- return !target.hasMark('jsrgzhenglve_mark');
- }).set('ai',target=>{
- var att=get.attitude(_status.event.player,target);
- return 100-att;
- });
- 'step 2'
- if(result.bool){
- var targets=result.targets;
- player.line(targets);
- targets.forEach(i=>i.addMark('jsrgzhenglve_mark',1));
- }
- },
- mod:{
- cardUsableTarget:function(card,player,target){
- if(target.hasMark('jsrgzhenglve_mark')) return true;
- },
- targetInRange:function(card,player,target){
- if(target.hasMark('jsrgzhenglve_mark')) return true;
- },
- },
- subSkill:{
- damage:{
- audio:'jsrgzhenglve',
- trigger:{source:'damageSource'},
- usable:1,
- filter:function(event,player){
- return event.player.hasMark('jsrgzhenglve_mark');
- },
- prompt2:function(event,player){
- var cards=event.cards||[];
- return '摸一张牌'+(cards.filterInD().length?'并获得'+get.translation(event.cards.filterInD()):'');
- },
- content:function(){
- 'step 0'
- player.draw();
- var cards=trigger.cards;
- if(cards&&cards.filterInD().length){
- player.gain(cards.filterInD(),'gain2');
- }
- }
- },
- mark:{
- marktext:'猎',
- intro:{
- name:'猎(政略)',
- name2:'猎',
- markcount:()=>0,
- content:'已拥有“猎”标记',
- }
- }
- }
- },
- jsrghuilie:{
- audio:2,
- trigger:{player:'phaseZhunbeiBegin'},
- juexingji:true,
- forced:true,
- skillAnimation:true,
- animationColor:'thunder',
- derivation:['jsrgpingrong','feiying'],
- filter:function(event,player){
- return game.countPlayer(current=>current.hasMark('jsrgzhenglve_mark'))>2;
- },
- content:function(){
- 'step 0'
- player.awakenSkill('jsrghuilie');
- player.loseMaxHp();
- 'step 1'
- player.addSkillLog('jsrgpingrong');
- player.addSkillLog('feiying');
- }
- },
- jsrgpingrong:{
- audio:2,
- trigger:{global:'phaseEnd'},
- filter:function(event,player){
- return !player.hasSkill('jsrgpingrong_used')&&game.hasPlayer(current=>current.hasMark('jsrgzhenglve_mark'));
- },
- direct:true,
- content:function(){
- 'step 0'
- player.chooseTarget(get.prompt('jsrghuilie'),'移去一名角色的“猎”,然后你执行一个额外回合。若你在此额外回合内未造成伤害,则你失去1点体力。',(card,player,target)=>{
- return target.hasMark('jsrgzhenglve_mark');
- }).set('ai',target=>{
- return get.attitude(_status.event.player,target);
- });
- 'step 1'
- if(result.bool){
- var target=result.targets[0];
- player.logSkill('jsrgpingrong',target);
- player.addTempSkill('jsrgpingrong_used','roundStart');
- target.removeMark('jsrgzhenglve_mark',target.countMark('jsrgzhenglve_mark'));
- player.insertPhase();
- player.addSkill('jsrgpingrong_check');
- }
- },
- subSkill:{
- used:{charlotte:true},
- check:{
- audio:'jsrgpingrong',
- trigger:{player:'phaseAfter'},
- charlotte:true,
- forced:true,
- filter:function(event,player){
- return event.skill=='jsrgpingrong'&&!player.getHistory('sourceDamage').length;
- },
- content:function(){
- player.loseHp();
- }
- }
- }
- },
- //南华老仙
- jsrgshoushu:{
- audio:2,
- forced:true,
- trigger:{global:'roundStart'},
- filter:function(event,player){
- return !game.hasPlayer(function(current){
- return current.countCards('hejsx','taipingyaoshu');
- })&&!Array.from(ui.cardPile.childNodes).concat(Array.from(ui.discardPile.childNodes))
- .concat(Array.from(ui.ordering.childNodes)).map(i=>i.name).contains('taipingyaoshu');
- },
- direct:true,
- group:'jsrgshoushu_destroy',
- content:function(){
- 'step 0'
- player.chooseTarget(get.prompt('jsrgshoushu'),'将【太平要术】置入一名角色的装备区',(card,player,target)=>{
- var card={name:'taipingyaoshu'};
- return target.canEquip(card,true);
- }).set('ai',target=>{
- return target.getUseValue({name:'taipingyaoshu'})*get.attitude(_status.event.player,target);
- })
- 'step 1'
- if(result.bool){
- var target=result.targets[0];
- event.target=target;
- player.logSkill('jsrgshoushu',target);
- if(!lib.inpile.contains('taipingyaoshu')){
- lib.inpile.push('taipingyaoshu');
- }
- event.card=game.createCard2('taipingyaoshu','heart',3);
- }
- else event.finish();
- 'step 2'
- if(card) target.equip(card);
- },
- subSkill:{
- destroy:{
- audio:'jsrgshoushu',
- trigger:{
- global:['loseEnd','equipEnd','addJudgeEnd','gainEnd','loseAsyncEnd','addToExpansionEnd'],
- },
- forced:true,
- filter:function(event,player){
- return game.hasPlayer(current=>{
- var evt=event.getl(current);
- if(evt&&evt.es) return evt.es.some(i=>i.name=='taipingyaoshu');
- return false;
- });
- },
- content:function(){
- var cards=[];
- game.countPlayer(current=>{
- var evt=trigger.getl(current);
- if(evt&&evt.es) return cards.addArray(evt.es.filter(i=>i.name=='taipingyaoshu'));
- });
- game.cardsGotoSpecial(cards);
- game.log(cards,'被销毁了');
- }
- }
- }
- },
- jsrgxundao:{
- audio:2,
- trigger:{player:'judge'},
- filter:function(event,player){
- return game.hasPlayer(current=>current.countCards('he'));
- },
- direct:true,
- content:function(){
- 'step 0'
- var prompt2=get.translation(player)+'(你)的'+(trigger.judgestr||'')+'判定为'+
- get.translation(player.judging[0])+','+'是否令至多两名角色依次弃置一张牌,然后选择其中一张作为新判定牌?';
- player.chooseTarget(get.prompt('jsrgxundao'),prompt2,[1,2],(card,player,target)=>{
- return target.countCards('he');
- }).set('ai',target=>{
- var player=_status.event.player;
- if(!_status.event.todiscard) return 0;
- if(_status.event.todiscard!='all'){
- if(target==_status.event.todiscard) return 100;
- }
- return get.effect(target,{name:'guohe_copy2'},player,player)/2;
- }).set('todiscard',function(){
- if(trigger.judgestr=='闪电'&&get.damageEffect(player,null,player,'thunder')>=0) return 'all';
- var friends=game.filterPlayer(i=>get.attitude(i,player)>0);
- for(var friend of friends){
- var cardsx=friend.getCards('he',card=>trigger.judge(card)>0);
- cardsx.sort((a,b)=>{
- return get.value(a)-get.value(b);
- });
- if(cardsx.length){
- var card=cardsx[0];
- if(trigger.judge(player.judging[0])>=0){
- if(get.value(card)>4) return false;
- }
- return get.owner(card);
- }
- }
- return 'all';
- }())
- 'step 1'
- if(result.bool){
- var targets=result.targets;
- targets.sortBySeat(_status.currentPhase);
- event.targets=targets;
- player.logSkill('jsrgxundao',targets);
- event.cards=[];
- }
- else event.finish();
- 'step 2'
- var target=targets.shift();
- target.chooseToDiscard('寻道:请弃置一张牌'+(target==player?'':',可能被作为新判定牌'),'he',true).set('ai',target=>{
- var trigger=_status.event.getTrigger();
- var player=_status.event.player;
- var judging=_status.event.judging;
- var result=trigger.judge(card)-trigger.judge(judging);
- var attitude=get.attitude(player,trigger.player);
- if(attitude==0||result==0) return 0.1;
- if(attitude>0){
- return result+0.01;
- }
- else{
- return 0.01-result;
- }
- });
- 'step 3'
- if(result.bool){
- event.cards.addArray(result.cards);
- }
- if(targets.length) event.goto(2);
- 'step 4'
- var cards=event.cards.filterInD('d');
- if(cards.length){
- player.chooseButton(['寻道:选择一张作为新判定牌',cards],true).set('ai',button=>{
- return trigger.judge(button.link);
- });
- }
- else event.finish();
- 'step 5'
- if(result.bool){
- var card=result.links[0];
- event.card=card;
- game.cardsGotoOrdering(card).relatedEvent=trigger;
- }
- else event.finish();
- 'step 6'
- if(player.judging[0].clone){
- game.broadcastAll(function(card,card2,player){
- if(card.clone){
- card.clone.classList.remove('thrownhighlight');
- }
- var node=player.$throwordered(card2.copy(),true);
- node.classList.add('thrownhighlight');
- ui.arena.classList.add('thrownhighlight');
- },player.judging[0],card,player);
- game.addVideo('deletenode',player,get.cardsInfo([player.judging[0].clone]));
- }
- game.cardsDiscard(player.judging[0]);
- player.judging[0]=card;
- trigger.orderingCards.add(card);
- game.log(player,'的判定牌改为',card);
- game.delay(2);
- },
- ai:{
- rejudge:true,
- tag:{
- rejudge:1,
- }
- }
- },
- jsrglinghua:{
- audio:2,
- trigger:{
- player:['phaseZhunbeiBegin','phaseJieshuBegin'],
- },
- prompt2:function(event,player){
- var zhunbei=event.name=='phaseZhunbei';
- return '进行目标为你'+(zhunbei?'':'且效果反转')+'的【闪电】判定。若你未因此受到伤害,你可以'+(zhunbei?'令一名角色回复1点体力':'对一名角色造成1点雷电伤害');
- },
- check:function(event,player){
- var e2=player.getEquip(2);
- if(e2&&e2.name=='taipingyaoshu') return true;
- if(event.name=='phaseZhunbei'&&game.hasPlayer(current=>{
- return get.recoverEffect(current,player,player)>=0;
- })) return true;
- if(event.name=='phaseJieshu'&&game.hasPlayer(current=>{
- return get.damageEffect(current,player,player,'thunder')>=0;
- })&&player.hasSkillTag('rejudge')&&player.hasCard(card=>{
- return lib.card.shandian.judge(card)<0;
- },'he')) return true;
- return false;
- },
- content:function(){
- 'step 0'
- var judge=trigger.name=='phaseZhunbei'?lib.card.shandian.judge:function(card){
- if(get.suit(card)!='spade'||get.number(card)<=1||get.number(card)>=10) return -5;
- return 1;
- }
- player.judge(judge,get.translation('shandian')).set('judge2',lib.card.shandian.judge2);
- game.delayx(1.5);
- 'step 1'
- var name='shandian';
- if(event.cancelled&&!event.direct){
- if(lib.card[name].cancel){
- var next=game.createEvent(name+'Cancel');
- next.setContent(lib.card[name].cancel);
- next.cards=[];
- next.card=get.autoViewAs({name:name});
- next.player=player;
- }
- }
- else{
- var next=game.createEvent(name);
- next.setContent(function(){
- if(result.bool==false){
- player.damage(3,'thunder','nosource');
- }
- });
- next._result=result;
- next.cards=[];
- next.card=get.autoViewAs({name:name});
- next.player=player;
- }
- 'step 2'
- if(!player.hasHistory('damage',evt=>{
- return evt.card&&evt.card.name=='shandian'&&evt.getParent(2)==event;
- })){
- if(trigger.name=='phaseZhunbei'){
- player.chooseTarget('灵化:是否令一名角色回复1点体力?').set('ai',target=>{
- var player=_status.event.player;
- return get.recoverEffect(target,player,player);
- });
- }
- else{
- player.chooseTarget('灵化:是否对一名角色造成1点雷电伤害?').set('ai',target=>{
- var player=_status.event.player;
- return get.damageEffect(target,player,player,'thunder');
- });
- }
- }
- else event.finish();
- 'step 3'
- if(result.bool){
- var target=result.targets[0];
- player.line(target);
- if(trigger.name=='phaseZhunbei') target.recover();
- else target.damage('thunder');
- }
- },
- ai:{
- threaten:2.8
- }
- },
//官盗S特015神马超
psshouli:{
audio:'shouli',
@@ -8539,10 +6274,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterReplace:{},
dynamicTranslate:{
- jsrgshichong:function(player){
- if(player.storage.jsrgshichong) return '转换技。当你使用牌指定其他角色为唯一目标后,阴:你可以获得目标角色一张手牌;阳:目标角色可以交给你一张手牌。';
- return '转换技。当你使用牌指定其他角色为唯一目标后,阴:你可以获得目标角色一张手牌;阳:目标角色可以交给你一张手牌。';
- },
},
translate:{
sp_gongsunzan:'SP公孙瓒',
@@ -8762,7 +6493,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zyshilu_info:'①一名角色死亡后,你可以将其武将牌置于你的武将牌上,称为“戮”,若杀死其的角色是你,你将一张武将牌堆里的牌置为“戮”。②回合开始时,你可以弃置至多X张牌,然后摸等量的牌(X为“戮”数)。',
zyxiongnve:'凶虐',
zyxiongnve_info:'①出牌阶段开始时,你可以将一张“戮”置入武将牌堆并选择一项直到回合结束:1.当你造成伤害时,此伤害+1;2.当你对其他角色造成伤害时,获得其一张牌;3.你使用牌无次数限制。②出牌阶段结束时,你可以将两张“戮”置入武将牌堆,然后当你于下回合开始前受到其他角色造成的伤害时,此伤害-1。',
- pe_wenqin:'文钦',
+ pe_wenqin:'战役篇文钦',
+ pe_wenqin_ab:'文钦',
gzjinfa:'矜伐',
gzjinfa_info:'出牌阶段限一次。你可以弃置一张牌,令一名其他角色选择一项:1.令你获得其一张牌;2.交给你一张装备牌,若此牌花色为♠,其视为对你使用一张【杀】。',
zyshangyi:'尚义',
@@ -8861,116 +6593,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
pkmiewu:'灭吴',
pkmiewu2:'灭吴',
pkmiewu_info:'每回合限一次。你可移去1枚“武库”,视为使用或打出任意一张基本牌或普通锦囊牌,然后摸一张牌。',
- //江山如故·起
- jsrg_liuhong:'起刘宏',
- jsrg_liuhong_ab:'刘宏',
- jsrgchaozheng:'朝争',
- jsrgchaozheng_info:'准备阶段,你可以令所有其他角色议事。若结果为:红色,意见为红色的角色各回复1点体力;黑色,意见为红色的角色各失去1点体力。然后若所有意见均相同,你摸X张牌(X为此次议事的角色数)。',
- jsrgshenchong:'甚宠',
- jsrgshenchong_info:'限定技。出牌阶段,你可以令一名其他角色获得〖飞扬〗、〖跋扈〗。若如此做,当你死亡时,其失去所有技能并弃置所有手牌。',
- jsrgjulian:'聚敛',
- jsrgjulian_info:'主公技。①其他群势力角色每回合限两次。当其不于摸牌阶段且不因〖聚敛〗摸牌后,其可以摸一张牌。②结束阶段,你可以获得所有其他群势力角色各一张牌。',
- jsrgfeiyang:'飞扬',
- jsrgfeiyang_info:'判定阶段开始时,若你的判定区里有牌,你可以弃置两张手牌并弃置你判定区里的一张牌。',
- jsrgbahu:'跋扈',
- jsrgbahu_info:'锁定技。①准备阶段,你摸一张牌。②你使用【杀】的次数上限+1。',
- jsrg_hejin:'起何进',
- jsrg_hejin_ab:'何进',
- jsrgzhaobing:'诏兵',
- jsrgzhaobing_info:'结束阶段,你可以弃置所有手牌,然后令至多X名其他角色依次选择一项:1.正面向上交给你一张【杀】;2.失去1点体力(X为你本次弃置的牌数)。',
- jsrgzhuhuan:'诛宦',
- jsrgzhuhuan_info:'准备阶段,你可以展示所有手牌并弃置所有【杀】,然后令一名其他角色选择一项:1.弃置等量的牌,然后受到1点伤害;2.令你摸等量的牌,然后你回复1点体力。',
- jsrgyanhuo:'延祸',
- jsrgyanhuo_info:'锁定技。当你死亡时,你增加如下全局技能:当有角色使用【杀】时,此【杀】的伤害值基数+1。',
- jsrg_sunjian:'起孙坚',
- jsrg_sunjian_ab:'孙坚',
- jsrgpingtao:'平讨',
- jsrgpingtao_info:'出牌阶段限一次。你可以令一名其他角色选择一项:1.交给你一张牌,然后你于此回合使用【杀】的次数上限+1;2.令你视为对其使用一张【杀】。',
- jsrgjuelie:'绝烈',
- jsrgjuelie_info:'①当你造成渠道为【杀】的伤害时,若你的手牌数或体力值最小,此伤害+1。②当你使用【杀】指定一名角色为目标后,你可以弃置任意张牌,然后弃置其等量的牌。',
- jsrg_huangfusong:'起皇甫嵩',
- jsrg_huangfusong_ab:'皇甫嵩',
- jsrgguanhuo:'观火',
- jsrgguanhuo_info:'①出牌阶段,你可以视为使用一张【火攻】。②当你因〖观火①〗使用的【火攻】结算结束后,若此牌未造成过伤害,且:若{你此阶段发动〖观火①〗的次数为1,则你于此阶段造成渠道为【火攻】的伤害时,此伤害+1},否则你失去〖观火〗。',
- jsrgjuxia:'居下',
- jsrgjuxia_info:'每回合限一次。当其他角色使用牌指定你为目标后,若其技能数多于你,其可以令此牌对你无效,然后令你摸两张牌。',
- jsrg_xushao:'起许劭',
- jsrg_xushao_ab:'许劭',
- jsrgyingmen:'盈门',
- jsrgyingmen_info:'锁定技。①游戏开始时,你将武将牌堆中随机四张武将牌置于你的武将牌上,称为“访客”。②回合开始时,若你的“访客”数小于4,你随机从武将牌堆中将“访客”补至四张。',
- jsrgpingjian:'评鉴',
- jsrgpingjian_info:'你可以于满足你“访客”上的一个无技能标签或仅有锁定技标签的技能条件的时机发动此技能,然后你选择移去一张“访客”。若移去的是本次发动技能的“访客”,你摸一张牌。',
- jsrg_dongbai:'起董白',
- jsrg_dongbai_ab:'董白',
- jsrgshichong:'恃宠',
- jsrgshichong_info:'转换技。当你使用牌指定其他角色为唯一目标后,阴:你可以获得目标角色一张手牌;阳:目标角色可以交给你一张手牌。',
- jsrglianzhu:'连诛',
- jsrglianzhu_info:'出牌阶段限一次。你可以展示一张黑色手牌并交给一名其他角色,然后视为你对所有与其势力相同的其他角色依次使用一张【过河拆桥】。',
- jsrg_qiaoxuan:'起桥玄',
- jsrg_qiaoxuan_ab:'桥玄',
- jsrgjuezhi:'绝质',
- jsrgjuezhi_info:'①当你失去一张装备区里的装备牌后,你可以废除对应的装备栏。②你的回合每阶段限一次。当你使用牌对目标角色造成伤害时,你令此伤害+X(X为其装备区里的牌与你已废除的装备栏中相同副类别的数量)。',
- jsrgjizhao:'急召',
- jsrgjizhao_info:'准备阶段或结束阶段,你可以令一名角色选择一项:1.使用一张手牌;2.令你可以移动其区域里的一张牌。',
- jsrg_yangbiao:'起杨彪',
- jsrg_yangbiao_ab:'杨彪',
- jsrgzhaohan:'昭汉',
- jsrgzhaohan_info:'准备阶段,若本局游戏:未洗过牌,你回复1点体力;洗过牌,你失去1点体力。',
- jsrgrangjie:'让节',
- jsrgrangjie_info:'当你受到1点伤害后,你可以移动场上的一张牌,然后你可以于弃牌堆中选择获得一张本回合进入弃牌堆且与此牌花色相同的牌。',
- jsrgyizheng:'义争',
- jsrgyizheng_info:'出牌阶段限一次。你可以与一名手牌数大于你的角色拼点。若你:赢,其跳过下一个摸牌阶段;没赢,其可以对你造成至多2点伤害。',
- jsrg_kongrong:'起孔融',
- jsrg_kongrong_ab:'孔融',
- jsrglirang:'礼让',
- jsrglirang_info:'每轮限一次。其他角色的摸牌阶段开始时,你可以交给其两张牌。然后此回合的弃牌阶段结束时,你可以获得所有其于此阶段因弃置进入弃牌堆的牌。',
- jsrgzhengyi:'争义',
- jsrgzhengyi_info:'当你每回合首次受到伤害时,本轮因〖礼让〗获得过牌的其他角色可以将此伤害转移给其。',
- jsrg_zhujun:'起朱儁',
- jsrg_zhujun_ab:'朱儁',
- jsrgfendi:'分敌',
- jsrgfendi_tag:'分敌',
- jsrgfendi_info:'每回合限一次。当你使用【杀】指定唯一目标后,你可以展示其任意张手牌,令其不能使用或打出对应实体牌不全为这些牌的牌直到此【杀】结算结束。然后当此【杀】对其造成伤害后,你获得这些牌。',
- jsrgjuxiang:'拒降',
- jsrgjuxiang_info:'当你不于摸牌阶段获得牌后,你可以弃置之,令当前回合角色于此回合额定的出牌阶段内使用【杀】的次数上限+X(X为你以此法弃置的牌的花色数)。',
- jsrg_liubei:'起刘备',
- jsrg_liubei_ab:'刘备',
- jsrgjishan:'积善',
- jsrgjishan_info:'①每回合限一次。当一名角色受到伤害时,你可以失去1点体力并防止此伤害,然后你与其各摸一张牌。②每回合限一次。当你造成伤害后,你可以令一名体力值最小且你对其发动过〖积善①〗的角色回复1点体力。',
- jsrgzhenqiao:'振鞘',
- jsrgzhenqiao_info:'锁定技。①你的攻击范围+1。②当你使用【杀】指定目标后,若你的武器栏为空且未废除,你令此【杀】的效果额外结算一次。',
- jsrg_wangyun:'起王允',
- jsrg_wangyun_ab:'王允',
- jsrgshelun:'赦论',
- jsrgshelun_info:'出牌阶段限一次。你可以选择一名你攻击范围内的角色,然后令除其外所有手牌数不大于你的角色议事。若结果为:红色,你弃置其一张牌;黑色,你对其造成1点伤害。',
- jsrgfayi:'伐异',
- jsrgfayi_info:'当你议事结算结束后,你可以对一名意见与你不同的角色造成1点伤害。',
- jsrg_liuyan:'起刘焉',
- jsrg_liuyan_ab:'刘焉',
- jsrgtushe:'图射',
- jsrgtushe_info:'当你使用非装备牌指定目标后,你可以展示所有手牌。若你没有基本牌,你可以摸X张牌(X为此牌指定的目标数)。',
- jsrgtongjue:'通绝',
- jsrgtongjue_info:'主公技。出牌阶段限一次。你可以将任意张牌交给等量名其他群势力角色。然后你不能使用牌指定这些角色为目标直到回合结束。',
- jsrg_caocao:'起曹操',
- jsrg_caocao_ab:'曹操',
- jsrgzhenglve:'政略',
- jsrgzhenglve_info:'①主公的回合结束时,你可以摸一张牌,然后令一名没有“猎”标记的角色获得“猎”(若主公本回合没有造成过伤害,则改为两名)。②你对有“猎”的角色使用牌无距离和次数限制。③每回合限一次。当你对有“猎”的角色造成伤害后,你可以摸一张牌并获得造成此伤害的牌。',
- jsrghuilie:'会猎',
- jsrghuilie_info:'觉醒技。准备阶段,若有“猎”的角色数大于2,你减1点体力上限,然后获得〖平戎〗和〖飞影〗。',
- jsrgpingrong:'平戎',
- jsrgpingrong_info:'每轮限一次。一名角色的回合结束时,你可以移去一名角色的“猎”,然后你于此回合后执行一个额外回合。该回合结束后,若你于此回合未造成过伤害,你失去1点体力。',
- jsrg_nanhualaoxian:'起南华老仙',
- jsrg_nanhualaoxian_ab:'南华老仙',
- jsrgshoushu:'授术',
- jsrgshoushu_info:'锁定技。①每轮开始时,若游戏内没有【太平要术】,你可以从游戏外将【太平要术】置于一名角色的装备区内。②当【太平要术】离开一名角色的装备区后,你令此牌销毁。',
- jsrgxundao:'寻道',
- jsrgxundao_info:'当你的判定牌生效前,你可以令至多两名角色依次弃置一张牌,然后你选择一张以此法弃置且位于弃牌堆中的牌代替此判定牌。',
- jsrglinghua:'灵化',
- jsrglinghua_info:'①准备阶段,你可以进行目标角色为你的【闪电】的特殊的使用流程。若你未因此受到伤害,你可以令一名角色回复1点体力。②结束阶段,你可以进行目标角色为你且判定效果反转的【闪电】的特殊的使用流程。若你未因此受到伤害,你可以对一名角色造成1点雷电伤害。',
- sbyingmen:'盈门',
- sbyingmen_info:'锁定技。①游戏开始时,你将武将牌堆中随机四张武将牌置于你的武将牌上,称为“访客”。②回合开始时,若你的“访客”数小于4,你随机从武将牌堆中将“访客”补至四张。',
- sbpingjian:'评鉴',
- sbpingjian_info:'你可以于满足你“访客”上的一个无技能标签或仅有锁定技标签的技能条件的时机发动此技能,然后你选择移去一张“访客”。若移去的是本次发动技能的“访客”,则你于此技能结算结束时摸一张牌。',
+ //天书乱斗虚拟偶像
vtb_xiaosha:'小杀',
vtbguisha:'瑰杀',
vtbguisha_info:'当其他角色使用【杀】时,你可以弃置一张牌令此【杀】不计入次数,且此【杀】对目标角色造成的伤害+1。',
@@ -9001,7 +6624,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
offline_sticker:'桌游志·贴纸',
offline_luanwu:'文和乱武',
offline_yongjian:'用间篇',
- offline_jiangshanruguqi:'江山如故·起',
offline_feihongyingxue:'飞鸿映雪',
offline_piracyE:'官盗E系列·战役篇',
offline_piracyS:'官盗S系列',
diff --git a/character/old.js b/character/old.js
index 150478ec7..2ae282792 100755
--- a/character/old.js
+++ b/character/old.js
@@ -953,7 +953,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_zhugezhan:"旧诸葛瞻",
zhangliang:'SP张梁',
yuji:'旧于吉',
- old_zhangfei:'十周年张飞',
+ old_zhangfei:'新杀张飞',
old_zhangfei_ab:'张飞',
old_huatuo:'OL华佗',
jsp_caoren:'☆SP曹仁',
@@ -966,9 +966,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_caochong:'旧曹冲',
old_guanqiujian:'旧毌丘俭',
old_huangfusong:'旧皇甫嵩',
- ol_liuyu:'OL刘虞',
+ ol_liuyu:'旧刘虞',
old_wangyun:'旧王允',
- old_zhaoyun:'十周年赵云',
+ old_zhaoyun:'新杀赵云',
old_zhaoyun_ab:'赵云',
ol_huaxiong:'旧华雄',
diff --git a/character/rank.js b/character/rank.js
index d74424ff4..276fb0fa6 100644
--- a/character/rank.js
+++ b/character/rank.js
@@ -303,6 +303,12 @@ window.noname_character_rank={
'shichangshi',
'ol_wenqin',
'clan_zhonghui',
+ 'jsrg_chunyuqiong',
+ 'jsrg_guanyu',
+ 'dc_caocao',
+ 'dc_liubei',
+ 'dc_sunquan',
+ 'yuechen',
'key_misuzu',
'key_sunohara',
'key_umi',
@@ -587,6 +593,9 @@ window.noname_character_rank={
'yanghong',
'dc_sunhanhua',
'shen_dianwei',
+ 'zhoubuyi',
+ 'jsrg_sunce',
+ 're_caorui',
],
bp:[
'chess_diaochan',
@@ -932,6 +941,10 @@ window.noname_character_rank={
'ol_mengda',
'dc_wuban',
're_caochong',
+ 'jsrg_lvbu',
+ 'jsrg_xuyou',
+ 'jsrg_zhangliao',
+ 'jsrg_zhenji',
],
b:[
'diy_feishi',
@@ -1221,7 +1234,6 @@ window.noname_character_rank={
'vtb_xiaoshan',
'vtb_xiaotao',
'zhangchu',
- 'dc_duyu',
'chentai',
'clan_zhongyan',
'sb_zhurong',
@@ -1229,6 +1241,9 @@ window.noname_character_rank={
'xizheng',
'dc_duyu',
'clan_wanghun',
+ 'jsrg_chendeng',
+ 'jsrg_zhanghe',
+ 'jsrg_zoushi',
],
bm:[
'diy_xizhenxihong',
@@ -1418,6 +1433,7 @@ window.noname_character_rank={
'qianzhao',
'vtb_xiaosha',
'huanfan',
+ 'jsrg_xugong',
],
c:[
'xiahoudun',
diff --git a/character/refresh.js b/character/refresh.js
index 9f5ea86c8..b82103a08 100755
--- a/character/refresh.js
+++ b/character/refresh.js
@@ -13,13 +13,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
refresh_yijiang2:['re_madai','re_wangyi','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','dc_bulianshi','xin_liubiao','re_xunyou','re_guanzhang'],
refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','xin_yufan','dc_liru','re_manchong','re_fuhuanghou','re_guanping','re_liufeng','re_caochong'],
refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan','re_caozhen','re_zhoucang','dc_chenqun','re_caifuren','re_guyong','re_jushou','re_zhuhuan','re_zhangsong'],
- refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu','re_gongsunyuan','re_guotufengji','re_xiahoushi','re_liuchen','re_zhuzhi'],
+ refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu','re_gongsunyuan','re_guotufengji','re_xiahoushi','re_liuchen','re_zhuzhi','re_caorui'],
refresh_yijiang6:['re_guohuanghou','re_sundeng'],
refresh_xinghuo:['re_duji','dc_gongsunzan','re_sp_taishici','re_caiyong','re_mazhong','re_wenpin','re_jsp_huangyueying'],
},
},
connect:true,
character:{
+ re_caorui:['male','wei',3,['huituo','mingjian','rexingshuai'],['unseen','zhu']],
re_caochong:['male','wei',3,['rechengxiang','renxin']],
ol_zhangzhang:['male','wu',3,['olzhijian','olguzheng']],
re_jsp_huangyueying:['female','qun',3,['rejiqiao','relinglong']],
@@ -162,6 +163,95 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_guohuai:['xiahouyuan','zhanghe'],
},
skill:{
+ //堪比界曹冲的界曹叡
+ rexingshuai:{
+ audio:2,
+ skillAnimation:true,
+ animationColor:'thunder',
+ trigger:{player:'dying'},
+ zhuSkill:true,
+ filter:function(event,player){
+ if(player.hp>0) return false;
+ if(!player.hasZhuSkill('rexingshuai')) return false;
+ return game.hasPlayer(function(current){
+ return current!=player&¤t.group=='wei';
+ });
+ },
+ init:function(player){
+ if(player.hasZhuSkill('rexingshuai')){
+ player.markSkill('rexingshuai');
+ player.storage.rexingshuai=false;
+ }
+ },
+ intro:{
+ content:'limited',
+ },
+ limited:true,
+ mark:false,
+ content:function(){
+ 'step 0'
+ player.awakenSkill('rexingshuai');
+ var targets=game.filterPlayer();
+ targets.sortBySeat(_status.currentPhase);
+ targets.remove(player);
+ event.targets=targets;
+ event.damages=[];
+ player.addSkill('rexingshuai_restore');
+ 'step 1'
+ if(event.targets.length){
+ var current=event.targets.shift();
+ if(current.group=='wei'){
+ current.chooseBool('是否令'+get.translation(player)+'回复一点体力?').set('ai',function(){
+ return get.attitude(_status.event.player,_status.event.target)>2;
+ }).set('target',player);
+ event.current=current;
+ }
+ else{
+ event.redo();
+ }
+ }
+ else{
+ event.goto(3);
+ }
+ 'step 2'
+ if(result.bool){
+ event.damages.push(event.current);
+ event.current.line(player,'green');
+ game.log(event.current,'令',player,'回复一点体力');
+ player.recover();
+ }
+ if(event.targets.length){
+ event.goto(1);
+ }
+ 'step 3'
+ if(event.damages.length){
+ var next=game.createEvent('rexingshuai_next');
+ event.next.remove(next);
+ trigger.after.push(next);
+ next.targets=event.damages;
+ next.setContent(function(){
+ targets.shift().damage();
+ if(targets.length) event.redo();
+ });
+ }
+ },
+ subSkill:{
+ restore:{
+ trigger:{
+ global:'dieAfter',
+ },
+ charlotte:true,
+ forced:true,
+ filter:function(event,player){
+ return event.source&&event.source.isIn()&&event.source.hasSkill('mingjian2');
+ },
+ content:function(){
+ player.restoreSkill('rexingshuai');
+ game.log(player,'重置了','#g【兴衰】');
+ }
+ },
+ }
+ },
//不想突破可以不突破的界曹冲
rechengxiang:{
audio:2,
@@ -2136,7 +2226,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//界荀彧
oljieming:{
audio:2,
- trigger:{player:['damageEnd','dieAfter']},
+ trigger:{player:['damageEnd','die']},
direct:true,
forceDie:true,
filter:function(event,player){
@@ -14571,7 +14661,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shizhan_info:'出牌阶段限两次,你可以选择一名其他角色。该角色视为对你使用一张【决斗】。',
ol_xunyu:'界荀彧',
oljieming:'节命',
- oljieming_info:'当你受到1点伤害后或死亡后,你可令一名角色摸X张牌。然后若其手牌数大于X,则其将手牌弃置至X张(X为其体力上限且至多为5)。',
+ oljieming_info:'当你受到1点伤害后或死亡时,你可令一名角色摸X张牌。然后若其手牌数大于X,则其将手牌弃置至X张(X为其体力上限且至多为5)。',
re_liufeng:'界刘封',
rexiansi:'陷嗣',
rexiansi2:'陷嗣',
@@ -14664,6 +14754,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_caochong:'界曹冲',
rechengxiang:'称象',
rechengxiang_info:'当你受到伤害后,你可以亮出牌堆顶的四张牌。然后获得其中任意数量点数之和不大于13的牌。若你获得的牌点数之和为13,你复原武将牌。',
+ re_caorui:'界曹叡',
+ rexingshuai:'兴衰',
+ rexingshuai_info:'主公技,限定技。当你进入濒死状态时,你可令其他魏势力角色依次选择是否令你回复1点体力。然后这些角色依次受到1点伤害。有〖明鉴〗效果的角色于其回合内杀死角色后,你重置〖兴衰〗。',
refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风',
diff --git a/character/sb.js b/character/sb.js
index 523e7ff1c..c50977cb8 100644
--- a/character/sb.js
+++ b/character/sb.js
@@ -707,7 +707,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'phaseJieshuBegin'},
forced:true,
content:function(){
- player.draw(Math.min(5,game.countPlayer(current=>{
+ player.draw(Math.min(5,game.countPlayer2(current=>{
return current.getHistory('damage').length>0;
})+1));
}
@@ -4608,7 +4608,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sblijian:'离间',
sblijian_info:'出牌阶段限一次。你可以选择至少两名其他角色并弃置X张牌(X为你选择的角色数-1)。然后每名你选择的角色依次视为对这些角色中与其逆时针座次最近的另一名角色使用一张【决斗】。',
sbbiyue:'闭月',
- sbbiyue_info:'锁定技。结束阶段,你摸Y张牌(Y为本回合受到过伤害的角色数+1且至多为5)。',
+ sbbiyue_info:'锁定技。结束阶段,你摸Y张牌(Y为本回合包括已死亡角色在内受到过伤害的角色数+1且至多为5)。',
sb_pangtong:'谋庞统',
sblianhuan:'连环',
sblianhuan_info:'①出牌阶段,你可以重铸一张♣手牌。②出牌阶段限一次。你可以将一张♣手牌当【铁索连环】使用。③当你使用【铁索连环】时,你可以失去1点体力,然后当此牌指定第一个目标后,你随机弃置每名不处于连环状态的目标角色一张手牌。',
diff --git a/character/shenhua.js b/character/shenhua.js
index 48fe50a6f..da831624d 100755
--- a/character/shenhua.js
+++ b/character/shenhua.js
@@ -7686,14 +7686,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jiaxu:['re_jiaxu','jiaxu','ns_jiaxu','ps_jiaxu'],
dongzhuo:['ol_dongzhuo','sp_dongzhuo','re_dongzhuo','dongzhuo','yj_dongzhuo'],
dengai:['re_dengai','ol_dengai','dengai'],
- sp_ol_zhanghe:['sp_ol_zhanghe','yj_zhanghe','sp_zhanghe'],
+ sp_ol_zhanghe:['sp_ol_zhanghe','yj_zhanghe','sp_zhanghe','jsrg_zhanghe'],
jiangwei:['ol_jiangwei','re_jiangwei','jiangwei'],
liushan:['ol_liushan','re_liushan','liushan'],
sunce:['re_sunben','re_sunce','sunce'],
zhangzhang:['ol_zhangzhang','re_zhangzhang','zhangzhang'],
zuoci:['re_zuoci','zuoci'],
caiwenji:['ol_caiwenji','re_caiwenji','caiwenji'],
- xuyou:['sp_xuyou','xuyou','yj_xuyou'],
+ xuyou:['sp_xuyou','xuyou','jsrg_xuyou','yj_xuyou'],
guanqiujian:['guanqiujian','tw_guanqiujian','re_guanqiujian','old_guanqiujian'],
chendao:['chendao','old_chendao','ns_chendao'],
zhugezhan:['zhugezhan','old_zhugezhan'],
@@ -7717,7 +7717,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"zhugezhan":"诸葛瞻",
"lukang":"陆抗",
"haozhao":"郝昭",
- "yl_yuanshu":"袁术",
+ "yl_yuanshu":"雷袁术",
+ yl_yuanshu_ab:"袁术",
"zhangxiu":"张绣",
"chendao":"陈到",
"guanqiujian":"毌丘俭",
@@ -8026,7 +8027,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
weiyan:'旧魏延',
xiaoqiao:'旧小乔',
zhoutai:'界周泰',
- zhangjiao:'张角',
+ zhangjiao:'旧张角',
//yuji:'于吉',
shensu:'神速',
shensu1:'神速',
diff --git a/character/shiji.js b/character/shiji.js
index 89478594d..17f0102f4 100644
--- a/character/shiji.js
+++ b/character/shiji.js
@@ -6482,7 +6482,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mingfa_info:'①结束阶段,你可展示一张牌并记录为“明伐”。②出牌阶段开始时,若“明伐”牌在你的手牌区或装备区,则你可以使用“明伐”牌与一名其他角色拼点。若你赢:你获得对方一张牌并从牌堆中获得一张点数等于“明伐”牌牌面点数-1的牌。若你没赢:你本回合不能使用牌指定其他角色为目标。③你的拼点牌亮出后,你令此牌的点数+2。',
rongbei:'戎备',
rongbei_info:'限定技。出牌阶段,你可选择一名有空装备栏的角色。系统为该角色的每个空装备栏选择一张装备牌,然后该角色使用之。',
- db_wenyang:'文鸯',
+ db_wenyang:'手杀文鸯',
dbquedi:'却敌',
dbquedi_info:'每回合限一次。当你使用【杀】或【决斗】指定唯一目标后,你可选择:①获得目标角色的一张手牌。②弃置一张基本牌,并令此牌的伤害值基数+1。③背水:减1点体力上限,然后依次执行上述所有选项。',
dbzhuifeng:'椎锋',
@@ -6570,7 +6570,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zjjuxiang_info:'限定技。一名其他角色脱离濒死状态时,你可以对其造成1点伤害,然后摸X张牌(X为其体力上限且至多为5)。',
houfeng:'厚俸',
houfeng_info:'每轮限一次。一名其他角色的出牌阶段开始时,若其在你的攻击范围内,则你可以令其进行“整肃”。然后当其于本回合内因整肃而摸牌或回复体力后,你获得相同的整肃奖励。',
- liuba:'刘巴',
+ liuba:'手杀刘巴',
duanbi:'锻币',
duanbi_info:'出牌阶段限一次。若场上所有角色的手牌数之和大于角色数之和的二倍,则你可以令所有其他角色各弃置X张手牌(X为该角色手牌数的一半且向下取整且至多为3)。然后你可选择一名角色,令其随机获得三张以此法被弃置的牌。',
tongduo:'统度',
diff --git a/character/sp.js b/character/sp.js
index c9336bdc7..73c531d10 100755
--- a/character/sp.js
+++ b/character/sp.js
@@ -4181,7 +4181,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'huanshi',
trigger:{global:'judge'},
filter:function(event,player){
- return player.countCards('he')>0;
+ return player.countCards('h')>0;
},
logTarget:'player',
prompt2:function(event,player){
@@ -10591,20 +10591,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
enable:'phaseUse',
usable:1,
- viewAs:{name:'shunshou'},
+ viewAs:{
+ name:'shunshou',
+ storage:{spweiwu:true},
+ },
filterCard:{color:'red'},
position:'hes',
check:function(card){
return 7-get.value(card);
},
- filterTarget:function(card,player,target){
- if(target.countCards('h')0&&game.hasPlayer(function(current){
- return current.countCards('h')>=player.countCards('h')&&player.canUse('shunshou',current);
- });
+ mod:{
+ targetInRange:function(card){
+ if(card.storage&&card.storage.spweiwu) return true;
+ },
},
},
tuogu:{
@@ -23030,7 +23029,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_caiwenji:'SP蔡琰',
zhugeguo:'诸葛果',
lingcao:'凌操',
- sunru:'孙茹',
+ sunru:'手杀孙茹',
lingju:'灵雎',
lifeng:'李丰',
jsp_guanyu:'SP关羽',
@@ -23073,8 +23072,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
caoying:"曹婴",
simahui:"司马徽",
baosanniang:"OL鲍三娘",
- pangdegong:"庞德公",
- zhaotongzhaoguang:"赵统赵广",
+ pangdegong:"手杀庞德公",
+ zhaotongzhaoguang:"手杀赵统赵广",
majun:"马钧",
simazhao:"司马昭",
wangyuanji:"王元姬",
@@ -23646,7 +23645,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
spniluan:'逆乱',
spniluan_info:'出牌阶段,你可以将一张黑色牌当做【杀】使用。此【杀】使用结算完成后,若你未因此【杀】造成过伤害,则你令此【杀】不计入使用次数。',
spweiwu:'违忤',
- spweiwu_info:'出牌阶段限一次,你可以将一张红色牌当做【顺手牵羊】对手牌数不小于你的角色使用。',
+ spweiwu_info:'出牌阶段限一次,你可以将一张红色牌当无距离限制的【顺手牵羊】使用。',
spmouzhu:'谋诛',
spmouzhu_backup:'谋诛',
spmouzhu_info:'出牌阶段限一次,你可以选择任意名“距离为1”或“体力值等于你”的其他角色,这些角色依次进行以下结算:交给你一张手牌,然后若其手牌数小于你,则其视为对你使用一张【杀】或【决斗】。',
@@ -23680,7 +23679,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
chengshang:'承赏',
chengshang_info:'当你于出牌阶段内使用的牌结算完成后,若此牌未造成过伤害且此牌的目标包含其他角色且你本阶段内未因〖承赏〗获得过牌,则你可以从牌堆中获得所有与此牌花色点数相同的牌。',
chengshang_info_guozhan:'当你于出牌阶段内使用的牌结算完成后,若此牌未造成过伤害且此牌的目标包含其他角色且你本阶段内未因〖承赏〗获得过牌,则你可以从牌堆中获得所有与此牌花色点数相同的牌。',
- panshu:'潘淑',
+ panshu:'OL潘淑',
weiyi:'威仪',
weiyi_info:'每名角色限一次。当有角色受到伤害后,你可选择:①若其体力值不小于你,则其失去1点体力。②若其体力值不大于你且其已受伤,则其回复1点体力。',
jinzhi:'锦织',
@@ -23693,7 +23692,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
wangong:'挽弓',
wangong2:'挽弓',
wangong_info:'锁定技,当你使用基本牌时,你获得如下效果:当你使用下一张牌时,若此牌为【杀】,则此牌无次数和距离限制且伤害+1。',
- huangchengyan:'黄承彦',
+ huangchengyan:'OL黄承彦',
guanxu:'观虚',
guanxu_info:'出牌阶段限一次,你可以观看一名其他角色的手牌,然后你可将其中一张手牌与牌堆顶5张牌中的一张交换。若如此做,你弃置其手牌中3张花色相同的牌。',
yashi:'雅士',
@@ -23795,7 +23794,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
spmanwang_info:'出牌阶段,你可以弃置任意张牌。然后你依次执行以下选项中的前X项:⒈获得〖叛侵〗。⒉摸一张牌。⒊回复1点体力。⒋摸两张牌并失去〖叛侵〗。',
sppanqin:'叛侵',
sppanqin_info:'出牌阶段或弃牌阶段结束时,你可将你于本阶段内弃置且位于弃牌堆的所有牌当做【南蛮入侵】使用。然后若此牌被使用时对应的实体牌数不大于此牌的目标数,则你执行并移除〖蛮王〗中的最后一个选项。',
- tengfanglan:'滕芳兰',
+ tengfanglan:'OL滕芳兰',
luochong:'落宠',
luochong_info:'准备阶段开始时/当你于一回合内首次受到伤害后,你可选择本轮内未选择过的一项(每名角色每轮限选一次):⒈令一名角色回复1点体力。⒉令一名角色失去1点体力。⒊令一名角色弃置两张牌。⒋令一名角色摸两张牌。',
aichen:'哀尘',
@@ -23894,7 +23893,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xindiaodu:"调度",
xindiaodu_info:"①每回合限一次,与你势力相同的角色使用装备牌时,其可以摸一张牌。②出牌阶段开始时,你可以获得与你势力相同的一名角色装备区内的一张牌,然后你可以将此牌交给另一名与你势力相同的其他角色。",
olhuanshi:'缓释',
- olhuanshi_info:'一名角色的判定牌生效前,你可以令其观看你的牌并选择其中的一张牌,你打出此牌代替判定牌。然后你可以重铸任意张牌(每回合限重铸一次)。',
+ olhuanshi_info:'一名角色的判定牌生效前,你可以令其观看你的手牌并选择你的一张牌,你打出此牌代替判定牌。然后你可以重铸任意张牌(每回合限重铸一次)。',
olhongyuan:'弘援',
olhongyuan_info:'每阶段限一次。当你一次性获得至少两张牌以后,你可以将至多两张牌交给等量名角色。',
olmingzhe:'明哲',
@@ -23902,7 +23901,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ahuinan:'阿会喃',
jueman:'蟨蛮',
jueman_info:'锁定技。一名角色的回合结束时,若本回合被使用过的基本牌数不小于2,且前两张基本牌的使用者:均不为你,你视为使用本回合被使用的第三张基本牌;有且仅有其中之一为你,你摸一张牌。',
- ol_liuba:'刘巴',
+ ol_liuba:'OL刘巴',
oltongduo:'统度',
oltongduo_info:'准备阶段,你可以令一名角色交给你一张手牌,然后出牌阶段结束时,你将此牌置于牌堆顶。',
olzhubi:'铸币',
diff --git a/character/sp2.js b/character/sp2.js
index b359a4783..55591f96f 100644
--- a/character/sp2.js
+++ b/character/sp2.js
@@ -4,7 +4,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2',
connect:true,
character:{
- dc_wangjun:['male','qun',4,['dcmianyao','dcchangqu']],
dc_jsp_guanyu:['male','wei',4,['new_rewusheng','dcdanji']],
dc_mengda:['male','wei',4,['dclibang','dcwujie']],
dc_zhangmancheng:['male','qun',4,['dclvecheng','dczhongji'],['unseen']],
@@ -108,238 +107,10 @@ 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_decade:['caobuxing','re_maliang','xin_baosanniang','dc_wangjun'],
+ sp_decade:['caobuxing','re_maliang','xin_baosanniang'],
}
},
skill:{
- //新服灭霸
- dcmianyao:{
- audio:2,
- trigger:{
- player:'phaseDrawEnd',
- },
- direct:true,
- filter:function(event,player){
- return player.countCards('h')>0;
- },
- content:function(){
- 'step 0'
- player.chooseCard('h',get.prompt('dcmianyao'),'展示点数最小的一张牌并随机插入牌堆中,然后于回合结束时摸此牌点数张牌。',function(card,player){
- var num=get.number(card,player);
- return !player.hasCard(card2=>{
- return card!=card2&&get.number(card2,player){
- var player=_status.event.player;
- var value=player.getUseValue(card,null,true);
- if(value>5&&get.number(card)<=2) return 0;
- return 1+1/Math.max(0.1,value);
- });
- 'step 1'
- if(result.bool){
- player.logSkill('dcmianyao');
- var card=result.cards[0];
- event.card=card;
- player.showCards([card],get.translation(player)+'发动了【免徭】');
- }
- else event.finish();
- 'step 2'
- player.$throw(1,1000);
- player.lose(card,ui.cardPile).insert_index=function(){
- return ui.cardPile.childNodes[get.rand(0,ui.cardPile.childNodes.length-1)];
- }
- player.addTempSkill('dcmianyao_draw');
- var num=get.number(card);
- if(num>0) player.addMark('dcmianyao_draw',num,false);
- },
- subSkill:{
- draw:{
- trigger:{
- player:'phaseEnd',
- },
- filter:function(event,player){
- return player.hasMark('dcmianyao_draw');
- },
- forced:true,
- charlotte:true,
- onremove:true,
- content:function(){
- player.draw(player.countMark('dcmianyao_draw'));
- },
- }
- }
- },
- dcchangqu:{
- audio:2,
- enable:'phaseUse',
- usable:1,
- selectTarget:function(){
- return [1,game.countPlayer()-1];
- },
- complexSelect:true,
- complexTarget:true,
- multitarget:true,
- multiline:true,
- filterTarget:function(card,player,target){
- if(player==target) return false;
- var next=player.getNext(),prev=player.getPrevious();
- var selected=ui.selected.targets;
- if(!selected.contains(next)&&!selected.contains(prev)) return (target==next||target==prev);
- for(var i of selected){
- if(i.getNext()==target||i.getPrevious()==target) return true;
- }
- return false;
- },
- contentBefore:function(){
- event.getParent()._dcchangqu_targets=targets.slice();
- },
- content:function(){
- 'step 0'
- event.targets=event.getParent()._dcchangqu_targets;
- var current=targets[0];
- current.addMark('dcchangqu_warship');
- current.addMark('dcchangqu_warshipx',1,false);
- event.num=0;
- game.delayx();
- 'step 1'
- var target=targets.shift();
- event.target=target;
- var num=Math.max(1,event.num);
- var nextPlayer=targets.find(i=>{
- return i.isIn();
- });
- if(target.hasMark('dcchangqu_warshipx')){
- var prompt2='是否交给'+get.translation(player)+get.cnNumber(num)+'张手牌?'+(nextPlayer?'若如此做,将“战舰”移动给'+get.translation(nextPlayer)+',':',')+'否则你下次受到的属性伤害值+'+num;
- target.chooseCard(get.translation(player)+'对你发动了【长驱】',prompt2).set('ai',card=>{
- if(_status.event.att>0) return 6-get.value(card);
- if(_status.event.take) return -get.value(card);
- return 5-get.value(card);
- }).set('att',get.attitude(target,player)).set('take',function(){
- var base=num;
- var getEffect=function(target,player,num){
- var natures=['fire','thunder','ice'];
- return natures.map(nature=>{
- return get.damageEffect(target,target,player,nature)*Math.sqrt(num)/Math.min(1.5,1+target.countCards('h'));
- }).reduce((sum,eff)=>{
- return sum+eff;
- },0)/natures.length;
- }
- var eff=getEffect(player,player,base);
- return targets.some((current,ind)=>{
- var num=base+ind+1;
- var effx=getEffect(current,player,num);
- return effx{
- return i.isIn();
- });
- if(nextPlayer){
- target.line(nextPlayer);
- nextPlayer.addMark('dcchangqu_warship',target.countMark('dcchangqu_warship'));
- nextPlayer.addMark('dcchangqu_warshipx',target.countMark('dcchangqu_warshipx'),false);
- event.goto(1);
- game.delayx();
- }
- target.removeMark('dcchangqu_warship',target.countMark('dcchangqu_warship'));
- target.removeMark('dcchangqu_warshipx',target.countMark('dcchangqu_warshipx'),false);
- 'step 4'
- var targets=game.players.slice().concat(game.dead);
- targets.forEach(i=>{
- delete i.storage.dcchangqu_warshipx;
- });
- },
- ai:{
- order:10,
- expose:0.05,
- result:{
- target:function(player,target){
- var att=get.attitude(player,target);
- var targets=game.filterPlayer(i=>i!=player);
- targets.sortBySeat(player);
- var targets2=targets.reverse();
- var sum=0;
- var maxSum=-Infinity,maxIndex=-1;
- var maxSum2=-Infinity,maxIndex2=-1;
- for(var i=0;imaxSum){
- maxSum=sum;
- maxIndex=i;
- }
- }
- var sum=0;
- for(var i=0;imaxSum2){
- maxSum2=sum;
- maxIndex2=i;
- }
- }
- if(maxSummaxIndex) return -100*get.sgnAttitude(player,target);
- if(target==targets[ui.selected.targets.length]) return get.sgnAttitude(player,target);
- return 0;
- }
- },
- },
- subSkill:{
- warship:{
- marktext:'舰',
- intro:{
- name:'战舰',
- name2:'战舰',
- content:'这里停了&艘战舰!不过啥用没有。',
- }
- },
- add:{
- trigger:{
- player:'damageBegin3',
- },
- filter:function(event,player){
- return event.nature&&player.hasMark('dcchangqu_add');
- },
- forced:true,
- onremove:true,
- charlotte:true,
- content:function(){
- 'step 0'
- trigger.num+=player.countMark('dcchangqu_add');
- player.removeSkill('dcchangqu_add');
- },
- marktext:'驱',
- intro:{
- content:'下次受到的属性伤害+#',
- }
- },
- }
- },
//魏关羽
dcdanji:{
audio:'danji',
@@ -1036,14 +807,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'useCardToPlayered'},
usable:1,
filter:function(event,player){
- return player.countCards('e')>0&&event.card.name=='sha'&&event.getParent().triggeredTargets3.length==event.targets.length;
+ return event.card.name=='sha'&&event.getParent().triggeredTargets3.length==event.targets.length;
},
check:function(event,player){
return event.targets.some(target=>get.effect(target,event.card,player,player)<=0);
},
content:function(){
'step 0'
- var num=player.countCards('e');
+ var num=player.countCards('e')+1;
event.num=num;
player.draw(num);
'step 1'
@@ -1072,7 +843,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var eff=get.effect(targetx,{name:'sha'},player,player);
delete _status._dctingxian_aiChecking;
if(eff<0) return true;
- }).length=3){
str+=';始终跳过弃牌阶段';
}
- if(num>=4){
+ if(num==0||num>=4){
str+=';造成的伤害+1';
}
return str;
@@ -9624,7 +9398,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"xinfu_xingzhao2":{
audio:true,
trigger:{
- player:"phaseDiscardBefore",
+ player:['phaseJudgeBefore','phaseDiscardBefore'],
},
forced:true,
filter:function(event,player){
@@ -9635,7 +9409,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
trigger.cancel();
- game.log(player,'跳过了弃牌阶段');
+ game.log(player,'跳过了'+(trigger.name=='phaseJudge'?'判定':'弃牌')+'阶段');
},
},
xinfu_xingzhao3:{
@@ -9648,7 +9422,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var num=game.countPlayer(function(current){
return current.isDamaged();
});
- return num>=4;
+ return num==0||num>=4;
},
content:function(){
trigger.num++;
@@ -10046,6 +9820,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jsp_guanyu:['dc_jsp_guanyu','jsp_guanyu'],
mushun:['mushun','sp_mushun'],
wangjun:['dc_wangjun','wangjun'],
+ zoushi:['re_zoushi','jsrg_zoushi'],
},
translate:{
lijue:"李傕",
@@ -10059,8 +9834,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhangqiying:"张琪瑛",
sp_liuqi:'刘琦',
xf_tangzi:"唐咨",
- xf_huangquan:"黄权",
- xf_sufei:"苏飞",
+ xf_huangquan:"OL黄权",
+ xf_sufei:"OL苏飞",
"xinfu_langxi":"狼袭",
"xinfu_langxi_info":"准备阶段,你可以对一名体力小于或等于你的其他角色造成0~2点随机伤害。",
"xinfu_yisuan":"亦算",
@@ -10102,7 +9877,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"xz_xunxun":"恂恂",
"xz_xunxun_info":"摸牌阶段,你可以观看牌堆顶的四张牌,然后将其中的两张牌置于牌堆顶,并将其余的牌以任意顺序置于牌堆底。",
"xinfu_xingzhao":"兴棹",
- "xinfu_xingzhao_info":"锁定技。若X≥1,你视为拥有技能〖恂恂〗。若X≥2,当你使用装备牌时,你摸一张牌。若X≥3,弃牌阶段开始时,你跳过此阶段。若X≥4,当你造成伤害时,此伤害+1。(X为场上已受伤的角色数)",
+ "xinfu_xingzhao_info":"锁定技。若X≥1,你视为拥有技能〖恂恂〗。若X≥2,当你使用装备牌时,你摸一张牌。若X≥3,判定阶段或弃牌阶段开始时,你跳过此阶段。若X=0或X≥4,当你造成伤害时,此伤害+1(X为场上已受伤的角色数)。",
"xinfu_xingzhao2":"兴棹",
"xinfu_xingzhao2_info":"",
xinfu_xingzhao3:'兴棹',
@@ -10515,13 +10290,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dczuojian_info:'出牌阶段结束时,若你于此阶段使用过的牌数不小于体力值,你可以选择一项:1.令装备区牌数多于你的角色各摸一张牌;2.弃置装备区牌数少于你的角色各一张手牌。',
sunlang:'孙狼',
dctingxian:'铤险',
- dctingxian_info:'每回合限一次。当你使用【杀】指定最后一个目标后,你可以摸X张牌,然后令此【杀】对其中至多X个目标无效(X为你装备区的牌数)。',
+ dctingxian_info:'每回合限一次。当你使用【杀】指定最后一个目标后,你可以摸X张牌,然后令此【杀】对其中至多X个目标无效(X为你装备区的牌数+1)。',
dcbenshi:'奔矢',
dcbenshi_info:'锁定技。①你的攻击范围+1。②你的攻击范围基数不受装备区内武器牌的影响。③由你使用的【杀】的牌面信息中的“使用目标”产生的规则改为“攻击范围内的所有角色”。',
sunhuan:'孙桓',
dcniji:'逆击',
dcniji_info:'①当你成为非装备牌的目标后,你可以摸一张牌,称为“逆击”。②一名角色的结束阶段,若你于本回合获得的“逆击”数不小于你的体力值,你可以使用一张“逆击”。你弃置所有“逆击”。',
- //dc_fuwan:'十周年伏完',
+ //dc_fuwan:'新杀伏完',
//dc_fuwan_ab:'伏完',
dcmoukui:'谋溃',
dcmoukui_info:'当你使用【杀】指定第一个目标后,你可以选择任意项:1.摸一张牌;2.弃置其中一个目标角色一张牌。若你均选择,当此【杀】被无效后或被抵消后,该角色弃置你一张牌。',
@@ -10547,11 +10322,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcdanji_info:'觉醒技。准备阶段,若你的手牌数大于体力值,你减1点体力上限,将体力回复至体力上限,然后获得〖马术〗和〖怒嗔〗。',
dcnuchen:'怒嗔',
dcnuchen_info:'出牌阶段限一次。你可以展示一名其他角色的一张手牌,然后选择一项:1.弃置任意张该花色的牌,对其造成等量伤害;2.获得该角色手牌中所有此花色的牌。',
- dc_wangjun:'王濬',
- dcmianyao:'免徭',
- dcmianyao_info:'摸牌阶段结束时,你可以展示手牌中点数最小的一张牌并将此牌随机插入牌堆中。然后你于此回合结束时摸等同于此牌点数的牌。',
- dcchangqu:'长驱',
- dcchangqu_info:'出牌阶段限一次。你可以开一艘战舰(你从你的上家或下家开始选择任意名座位连续的其他角色,且起点角色获得“战舰”标记)。这些角色按照你选择的顺序依次执行:{若其有本次获得的“战舰”,其选择一项:1.交给你X张手牌,然后将“战舰”移动给你选择的下一名目标角色;2.令其下次受到的属性伤害值+X,然后横置(X为本次〖长驱〗中选项一被选择过的次数且至少为1)。}。',
sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原",
diff --git a/character/standard.js b/character/standard.js
index 073d1a8e4..f63932fd3 100755
--- a/character/standard.js
+++ b/character/standard.js
@@ -2471,17 +2471,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
characterReplace:{
- caocao:['re_caocao','caocao'],
+ caocao:['re_caocao','caocao','dc_caocao'],
guojia:['re_guojia','guojia','ps1059_guojia','ps2070_guojia'],
simayi:['re_simayi','simayi','ps_simayi','ps2068_simayi'],
jin_simayi:['jin_simayi','junk_simayi','ps_jin_simayi'],
zhenji:['re_zhenji','yj_zhenji','zhenji'],
xuzhu:['re_xuzhu','xuzhu'],
zhangliao:['re_zhangliao','zhangliao'],
- sp_zhangliao:['sp_zhangliao','yj_zhangliao'],
+ sp_zhangliao:['sp_zhangliao','yj_zhangliao','jsrg_zhangliao'],
xiahoudun:['re_xiahoudun','xin_xiahoudun','xiahoudun'],
- liubei:['re_liubei','liubei','junk_liubei'],
- guanyu:['re_guanyu','guanyu','ps_guanyu'],
+ liubei:['re_liubei','liubei','dc_liubei','junk_liubei'],
+ guanyu:['re_guanyu','guanyu','jsrg_guanyu','ps_guanyu'],
zhangfei:['re_zhangfei','tw_zhangfei','xin_zhangfei','old_zhangfei','zhangfei','yj_zhangfei'],
zhaoyun:['re_zhaoyun','old_zhaoyun','zhaoyun','ps2063_zhaoyun','ps2067_zhaoyun'],
sp_zhaoyun:['sp_zhaoyun','jsp_zhaoyun'],
@@ -2489,7 +2489,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_machao:['sp_machao','old_machao'],
zhugeliang:['re_zhugeliang','zhugeliang','ps2066_zhugeliang','ps_zhugeliang'],
huangyueying:['re_huangyueying','huangyueying','junk_huangyueying'],
- sunquan:['re_sunquan','sunquan'],
+ sunquan:['re_sunquan','sunquan','dc_sunquan'],
zhouyu:['re_zhouyu','zhouyu','ps1062_zhouyu','ps2080_zhouyu'],
luxun:['re_luxun','luxun'],
lvmeng:['re_lvmeng','lvmeng'],
@@ -2498,7 +2498,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sunshangxiang:['re_sunshangxiang','sunshangxiang'],
ganning:['re_ganning','ganning','yongjian_ganning'],
yj_ganning:['yj_ganning','sp_ganning'],
- lvbu:['re_lvbu','lvbu','ps_lvbu'],
+ lvbu:['re_lvbu','lvbu','jsrg_lvbu','ps_lvbu'],
diaochan:['re_diaochan','diaochan'],
huatuo:['re_huatuo','old_huatuo','huatuo'],
huaxiong:['re_huaxiong','old_huaxiong','huaxiong','ol_huaxiong'],
diff --git a/character/tw.js b/character/tw.js
index 81540bc54..5c80548ca 100644
--- a/character/tw.js
+++ b/character/tw.js
@@ -13562,7 +13562,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
twhanyu_info:'锁定技。游戏开始时,你获得牌堆中的基本牌,锦囊牌,装备牌各一张。',
twhengjiang:'横江',
twhengjiang_info:'出牌阶段限一次,当你使用基本牌或普通锦囊牌指定唯一目标后,你可将此牌的目标改为攻击范围内的所有合法目标,然后你于此牌结算结束后摸X张牌(X为因响应此牌而使用或打出过牌的角色数)。',
- tw_huojun:'霍峻',
+ tw_huojun:'TW霍峻',
twsidai:'伺怠',
twsidai_info:'限定技。出牌阶段,你可以将手牌区内的所有基本牌当做【杀】使用(无距离和次数限制)。若此牌对应的实体牌中:包含【闪】,则目标角色成为此牌的目标后,需弃置一张基本牌,否则不可响应此牌;包含【桃】,则当目标角色受到此牌的伤害后,其减1点体力上限;包含【酒】,则当目标角色受到此牌的伤害时,此伤害×2。',
twjieyu:'竭御',
@@ -13867,7 +13867,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
twluanchou_info:'出牌阶段限一次。你可以令两名角色获得〖共患〗直到你下次发动此技能。',
twgonghuan:'共患',
twgonghuan_info:'每回合限一次。当其他角色受到伤害时,若其拥有〖共患〗且其体力值不大于你,你可以将此伤害转移给你(不触发〖共患〗)。',
- tw_qiaorui:'桥蕤',
+ tw_qiaorui:'TW桥蕤',
wangxing:'妄行',
twxiawei:'狭威',
twxiawei_info:'①游戏开始时,你将牌堆中的两张基本牌置于武将牌上,称为“威”。②回合开始时,你将所有“威”置入弃牌堆。③你可以将“威”如手牌般使用或打出。④妄行:准备阶段,你可以将牌堆顶的X+1张牌置于武将牌上,称为“威”。',
diff --git a/character/xianding.js b/character/xianding.js
index 9d59bb67f..5c078f9e2 100644
--- a/character/xianding.js
+++ b/character/xianding.js
@@ -5,6 +5,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
character:{
sunlingluan:['female','wu',3,['dclingyue','dcpandi']],
+ dc_wangjun:['male','qun',4,['dctongye','dcchangqu']],
+ zhoubuyi:['male','wei',3,['dcshiji','dcsilun']],
dc_duyu:['male','wei',4,['dcjianguo','dcdyqingshi']],
ganfurenmifuren:['female','shu',3,['dcchanjuan','dcxunbie']],
dc_ganfuren:['female','shu',3,['dcshushen','dcshenzhi']],
@@ -72,7 +74,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterSort:{
xianding:{
- sp2_huben:['wangshuang','wenyang','re_liuzan','dc_huangzu','wulan','leitong','chentai','dc_duyu'],
+ sp2_huben:['wangshuang','wenyang','re_liuzan','dc_huangzu','wulan','leitong','chentai','dc_duyu','dc_wangjun'],
sp2_shengun:["puyuan","guanlu","gexuan",'wufan','re_zhangbao','dukui','zhaozhi','zhujianping','dc_zhouxuān','zerong'],
sp2_bizhe:['dc_luotong','dc_wangchang','chengbing','dc_yangbiao','ruanji'],
sp2_huangjia:['caomao','liubian','dc_liuyu','quanhuijie','dingshangwan','yuanji','xielingyu','sunyu','ganfurenmifuren','dc_ganfuren','dc_mifuren'],
@@ -81,7 +83,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp2_yinyu:['zhouyi','luyi','sunlingluan'],
sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji','duanqiaoxiao'],
sp2_jichu:['zhaoang','dc_liuye','dc_wangyun','yanghong','huanfan','xizheng'],
- sp2_yuxiu:['dongguiren','dc_tengfanglan','zhangjinyun'],
+ sp2_yuxiu:['dongguiren','dc_tengfanglan','zhangjinyun','zhoubuyi'],
sp2_gaoshan:['wanglang','liuhui'],
sp2_wumiao:['wu_zhugeliang'],
}
@@ -243,6 +245,505 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
},
+ //新服灭霸
+ dctongye:{
+ audio:2,
+ trigger:{
+ global:['phaseBefore','dieAfter'],
+ player:'enterGame',
+ },
+ forced:true,
+ filter:function(event,player){
+ if(game.countGroup()>4) return false;
+ if(event.name=='die') return true;
+ return event.name!='phase'||game.phaseNumber==0;
+ },
+ content:function(){
+ player.addSkill('dctongye_buff');
+ var num=game.countGroup();
+ if(num<=4){
+ player.addMark('dctongye_handcard',3,false);
+ game.log(player,'手牌上限','#y+3');
+ }
+ if(num<=3){
+ player.addMark('dctongye_range',3,false);
+ game.log(player,'攻击范围','#y+3');
+ }
+ if(num<=2){
+ player.addMark('dctongye_sha',3,false);
+ game.log(player,'使用杀的次数上限','#y+3');
+ }
+ if(num<=1){
+ player.addMark('dctongye_draw',3,false);
+ game.log(player,'摸牌阶段额定摸牌数','#y+3');
+ }
+ },
+ subSkill:{
+ buff:{
+ audio:'dctongye',
+ trigger:{player:'phaseDrawBegin2'},
+ forced:true,
+ filter:function(event,player){
+ if(!player.hasMark('dctongye_draw')) return false;
+ return !event.numFixed;
+ },
+ content:function(){
+ trigger.num+=player.countMark('dctongye_draw');
+ },
+ charlotte:true,
+ onremove:['dctongye_handcard','dctongye_range','dctongye_sha','dctongye_draw'],
+ mark:true,
+ marktext:'统',
+ intro:{
+ content:function(storage,player){
+ var str='';
+ var hand=player.countMark('dctongye_handcard'),range=player.countMark('dctongye_range'),sha=player.countMark('dctongye_sha'),draw=player.countMark('dctongye_draw');
+ if(hand>0){
+ str+='手牌上限+'+hand+';';
+ }
+ if(range>0){
+ str+='攻击范围+'+range+';';
+ }
+ if(sha>0){
+ str+='使用【杀】的次数上限+'+sha+';'
+ }
+ if(draw>0){
+ str+='摸牌阶段额定摸牌数+'+draw+'。';
+ }
+ str=str.slice(0,-1)+'。';
+ return str;
+ }
+ },
+ mod:{
+ maxHandcard:function(player,num){
+ return num+player.countMark('dctongye_handcard');
+ },
+ attackRange:function(player,num){
+ return num+player.countMark('dctongye_range');
+ },
+ cardUsable:function(card,player,num){
+ if(card.name=='sha'){
+ return num+player.countMark('dctongye_sha');
+ }
+ },
+ },
+ ai:{
+ threaten:2.6,
+ },
+ },
+ },
+ },
+ dcmianyao:{
+ audio:2,
+ trigger:{
+ player:'phaseDrawEnd',
+ },
+ direct:true,
+ filter:function(event,player){
+ return player.countCards('h')>0;
+ },
+ content:function(){
+ 'step 0'
+ player.chooseCard('h',get.prompt('dcmianyao'),'展示点数最小的一张牌并随机插入牌堆中,然后于回合结束时摸此牌点数张牌。',function(card,player){
+ var num=get.number(card,player);
+ return !player.hasCard(card2=>{
+ return card!=card2&&get.number(card2,player){
+ var player=_status.event.player;
+ var value=player.getUseValue(card,null,true);
+ if(value>5&&get.number(card)<=2) return 0;
+ return 1+1/Math.max(0.1,value);
+ });
+ 'step 1'
+ if(result.bool){
+ player.logSkill('dcmianyao');
+ var card=result.cards[0];
+ event.card=card;
+ player.showCards([card],get.translation(player)+'发动了【免徭】');
+ }
+ else event.finish();
+ 'step 2'
+ player.$throw(1,1000);
+ player.lose(card,ui.cardPile).insert_index=function(){
+ return ui.cardPile.childNodes[get.rand(0,ui.cardPile.childNodes.length-1)];
+ }
+ player.addTempSkill('dcmianyao_draw');
+ var num=get.number(card);
+ if(num>0) player.addMark('dcmianyao_draw',num,false);
+ },
+ subSkill:{
+ draw:{
+ trigger:{
+ player:'phaseEnd',
+ },
+ filter:function(event,player){
+ return player.hasMark('dcmianyao_draw');
+ },
+ forced:true,
+ charlotte:true,
+ onremove:true,
+ content:function(){
+ player.draw(player.countMark('dcmianyao_draw'));
+ },
+ }
+ }
+ },
+ dcchangqu:{
+ audio:2,
+ enable:'phaseUse',
+ usable:1,
+ selectTarget:function(){
+ return [1,game.countPlayer()-1];
+ },
+ complexSelect:true,
+ complexTarget:true,
+ multitarget:true,
+ multiline:true,
+ filterTarget:function(card,player,target){
+ if(player==target) return false;
+ var next=player.getNext(),prev=player.getPrevious();
+ var selected=ui.selected.targets;
+ if(!selected.contains(next)&&!selected.contains(prev)) return (target==next||target==prev);
+ for(var i of selected){
+ if(i.getNext()==target||i.getPrevious()==target) return true;
+ }
+ return false;
+ },
+ contentBefore:function(){
+ event.getParent()._dcchangqu_targets=targets.slice();
+ },
+ content:function(){
+ 'step 0'
+ event.targets=event.getParent()._dcchangqu_targets;
+ var current=targets[0];
+ current.addMark('dcchangqu_warship');
+ current.addMark('dcchangqu_warshipx',1,false);
+ event.num=0;
+ game.delayx();
+ 'step 1'
+ var target=targets.shift();
+ event.target=target;
+ var num=Math.max(1,event.num);
+ var nextPlayer=targets.find(i=>{
+ return i.isIn();
+ });
+ if(target.hasMark('dcchangqu_warshipx')){
+ var prompt2='是否交给'+get.translation(player)+get.cnNumber(num)+'张手牌?'+(nextPlayer?'若如此做,将“战舰”移动给'+get.translation(nextPlayer)+',':',')+'否则你下次受到的属性伤害值+'+num;
+ target.chooseCard(get.translation(player)+'对你发动了【长驱】',prompt2).set('ai',card=>{
+ if(_status.event.att>0) return 6-get.value(card);
+ if(_status.event.take) return -get.value(card);
+ return 5-get.value(card);
+ }).set('att',get.attitude(target,player)).set('take',function(){
+ var base=num;
+ var getEffect=function(target,player,num){
+ var natures=['fire','thunder','ice'];
+ return natures.map(nature=>{
+ return get.damageEffect(target,target,player,nature)*Math.sqrt(num)/Math.min(1.5,1+target.countCards('h'));
+ }).reduce((sum,eff)=>{
+ return sum+eff;
+ },0)/natures.length;
+ }
+ var eff=getEffect(player,player,base);
+ return targets.some((current,ind)=>{
+ var num=base+ind+1;
+ var effx=getEffect(current,player,num);
+ return effx{
+ return i.isIn();
+ });
+ if(nextPlayer){
+ target.line(nextPlayer);
+ nextPlayer.addMark('dcchangqu_warship',target.countMark('dcchangqu_warship'));
+ nextPlayer.addMark('dcchangqu_warshipx',target.countMark('dcchangqu_warshipx'),false);
+ event.goto(1);
+ game.delayx();
+ }
+ target.removeMark('dcchangqu_warship',target.countMark('dcchangqu_warship'));
+ target.removeMark('dcchangqu_warshipx',target.countMark('dcchangqu_warshipx'),false);
+ 'step 4'
+ var targets=game.players.slice().concat(game.dead);
+ targets.forEach(i=>{
+ delete i.storage.dcchangqu_warshipx;
+ });
+ },
+ ai:{
+ order:10,
+ expose:0.05,
+ result:{
+ target:function(player,target){
+ var att=get.attitude(player,target);
+ var targets=game.filterPlayer(i=>i!=player);
+ targets.sortBySeat(player);
+ var targets2=targets.reverse();
+ var sum=0;
+ var maxSum=-Infinity,maxIndex=-1;
+ var maxSum2=-Infinity,maxIndex2=-1;
+ for(var i=0;imaxSum){
+ maxSum=sum;
+ maxIndex=i;
+ }
+ }
+ var sum=0;
+ for(var i=0;imaxSum2){
+ maxSum2=sum;
+ maxIndex2=i;
+ }
+ }
+ if(maxSummaxIndex) return -100*get.sgnAttitude(player,target);
+ if(target==targets[ui.selected.targets.length]) return get.sgnAttitude(player,target);
+ return 0;
+ }
+ },
+ },
+ subSkill:{
+ warship:{
+ marktext:'舰',
+ intro:{
+ name:'战舰',
+ name2:'战舰',
+ content:'这里停了&艘战舰!不过啥用没有。',
+ }
+ },
+ add:{
+ trigger:{
+ player:'damageBegin3',
+ },
+ filter:function(event,player){
+ return event.nature&&player.hasMark('dcchangqu_add');
+ },
+ forced:true,
+ onremove:true,
+ charlotte:true,
+ content:function(){
+ 'step 0'
+ trigger.num+=player.countMark('dcchangqu_add');
+ player.removeSkill('dcchangqu_add');
+ },
+ marktext:'驱',
+ intro:{
+ content:'下次受到的属性伤害+#',
+ }
+ },
+ }
+ },
+ //周不疑
+ dcshiji:{
+ audio:2,
+ trigger:{
+ global:'phaseJieshuBegin',
+ },
+ filter:function(event,player){
+ return event.player.isIn()&&!event.player.getHistory('sourceDamage').length;
+ },
+ direct:true,
+ content:function(){
+ 'step 0'
+ trigger.player.addTempSkill('dcshiji_forbidself');
+ var list=[];
+ for(var name of lib.inpile){
+ var type=get.type(name);
+ if(type!='trick') continue;
+ if(player.getStorage('dcshiji_used').contains(name)) continue;
+ var card={
+ name:name,
+ storage:{dcshiji:true},
+ };
+ if(trigger.player.hasUseTarget(card)){
+ list.push([type,'',name]);
+ }
+ }
+ if(list.length){
+ player.chooseButton([get.prompt('dcshiji',trigger.player),[list,'vcard']]).set('ai',button=>{
+ if(_status.event.tochoose) return _status.event.getTrigger().player.getUseValue({name:button.link[2]});
+ return 0;
+ }).set('tochoose',get.attitude(player,trigger.player)>0&&trigger.player.hasCard(card=>{
+ return get.value(card)<7;
+ },'hes'));
+ }
+ else event.finish();
+ 'step 1'
+ if(result.bool){
+ var card={
+ name:result.links[0][2],
+ storage:{dcshiji:true},
+ };
+ var str=get.translation(card);
+ player.logSkill('dcshiji',trigger.player);
+ player.addTempSkill('dcshiji_used','roundStart');
+ player.markAuto('dcshiji_used',[card.name]);
+ player.popup(str);
+ game.log(player,'声明了','#y'+str);
+ game.broadcastAll(function(card){
+ lib.skill.dcshiji_backup.viewAs=card;
+ lib.skill.dcshiji_backup.prompt='十计:是否将一张牌当做'+get.translation(card)+'使用?';
+ },card);
+ var next=trigger.player.chooseToUse();
+ next.set('openskilldialog','十计:是否将一张牌当做'+get.translation(card)+'使用?');
+ next.set('norestore',true);
+ next.set('addCount',false);
+ next.set('_backupevent','dcshiji_backup');
+ next.set('custom',{
+ add:{},
+ replace:{window:function(){}}
+ });
+ next.backup('dcshiji_backup');
+ }
+ },
+ subSkill:{
+ backup:{
+ filterCard:function(card){
+ return get.itemtype(card)=='card';
+ },
+ position:'hes',
+ selectCard:1,
+ check:(card)=>7-get.value(card),
+ popname:true,
+ },
+ used:{
+ charlotte:true,
+ onremove:true,
+ mark:true,
+ marktext:'计',
+ intro:{
+ content:'本轮已声明过$',
+ },
+ },
+ forbidself:{
+ charlotte:true,
+ mod:{
+ targetEnabled:function(card,player,target){
+ if(player==target&&card.storage&&card.storage.dcshiji) return false;
+ },
+ },
+ }
+ }
+ },
+ dcsilun:{
+ audio:2,
+ trigger:{
+ player:['phaseZhunbeiBegin','damageEnd'],
+ },
+ frequent:true,
+ content:function(){
+ 'step 0'
+ player.draw(4);
+ event.count=0;
+ event.equipCount={};
+ game.countPlayer(current=>{
+ event.equipCount[current.playerid]=current.countCards('e');
+ },true);
+ 'step 1'
+ if(!player.countCards('he')) event.goto(5);
+ else player.chooseCard('四论:选择一张牌('+(event.count+1)+'/'+'4)','然后选择将此牌置于场上或牌堆的两端',true,'he').set('ai',card=>{
+ var player=_status.event.player;
+ if(['equip','delay'].contains(get.type(card))&&player.hasValueTarget(card)) return 50;
+ return 50-get.value(card);
+ });
+ 'step 2'
+ if(result.bool){
+ var card=result.cards[0];
+ event.card=card;
+ event.count++;
+ var choices=['牌堆顶','牌堆底'];
+ var type=get.type(card);
+ if(type=='equip'&&game.hasPlayer(current=>{
+ return current.canEquip(card);
+ })||type=='delay'&&game.hasPlayer(current=>{
+ return !current.storage._disableJudge&&!current.hasJudge(card.name);
+ })) choices.unshift('场上');
+ player.chooseControl(choices).set('prompt','请选择要将'+get.translation(card)+'置于的位置').set('ai',()=>{
+ return _status.event.choice;
+ }).set('choice',function(){
+ if(['equip','delay'].contains(get.type(card))&&player.hasValueTarget(card)&&choices.contains('场上')) return '场上';
+ var val=get.value(card);
+ var next=_status.currentPhase;
+ if(trigger.name=='damage') next=next.getNext();
+ if(get.attitude(player,next)>0&&val>=6||get.attitude(player,next)<0&&val<=4.5) return '牌堆顶';
+ return '牌堆底';
+ }());
+ }
+ 'step 3'
+ if(result.control=='场上'){
+ var type=get.type(card);
+ player.chooseTarget('将'+get.translation(card)+'置于一名角色的场上',true,(card,player,target)=>{
+ return _status.event.targets.contains(target);
+ }).set('targets',game.filterPlayer(current=>{
+ if(type=='equip') return current.canEquip(card);
+ if(type=='delay') return !current.storage._disableJudge&&!current.hasJudge(card.name);
+ return false;
+ })).set('ai',target=>{
+ var player=_status.event.player;
+ var card=_status.event.card;
+ return get.attitude(player,target)*(get.type(card)=='equip'?get.value(card,target):get.effect(target,{
+ name:card.viewAs||card.name,
+ cards:[card],
+ },target,target));
+ }).set('card',card);
+ }
+ else{
+ player.$throw(card,1000);
+ var next=player.lose(card,ui.cardPile);
+ if(result.control=='牌堆顶') next.insert_card=true;
+ game.log(player,'将',card,'置于了','#y'+result.control);
+ }
+ 'step 4'
+ if(result.bool&&result.targets&&result.targets.length){
+ var target=result.targets[0];
+ player.line(target);
+ player.$give(card,target,false);
+ if(get.type(card)=='equip'){
+ target.equip(card);
+ }
+ else{
+ target.addJudge(card);
+ }
+ }
+ if(event.count<4) event.goto(1);
+ 'step 5'
+ game.countPlayer(current=>{
+ var count=current.countCards('e');
+ var prevCount=event.equipCount[current.playerid]||0;
+ if(count!=prevCount){
+ current.link(false);
+ current.turnOver(false);
+ }
+ });
+ }
+ },
//杜预
dcjianguo:{
audio:2,
@@ -10669,6 +11170,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ruanji:'阮籍(公元210年~263年),字嗣宗,陈留尉氏(今河南省开封市)人,三国时期魏国诗人、竹林七贤之一。阮瑀之子,门荫入仕,累迁步兵校尉,世称阮步兵。崇奉老庄之学,政治上则采取谨慎避祸的态度。景元四年(公元263年),阮籍去世,享年五十三岁。作为“正始之音”的代表,著有《咏怀八十二首》、《大人先生传》等,其著作收录在《阮籍集》中。',
ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月,刘备病死于白帝城,追谥甘夫人为“昭烈皇后”。
糜夫人,刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。',
sunlingluan:'孙翎鸾,孙坚与妾室丁氏的女儿,孙策的妹妹,孙权、孙尚香的姐姐。孙翎年幼时曾得杜夔点化,窥得音律玄妙,丝竹八音,擅长琵琶,每次弹奏琵琶时,经常引来百鸟,称为奇观。早年孙翎鸾出游,山林巧遇葛玄,葛玄观其面相为吉,特传授修行辟谷之法,可令其身心洗涤,容颜久存。孙翎鸾有恋人名张奋,两人情投意合,可惜造化弄人,张奋病死外域,孙翎鸾倚楼盼归,日复一日、年复一年。后有五彩孔雀自东南而来,绕楼而鸣,其声如慕,孙翎鸾泪染笑靥,与孔雀耳语几句后乘翎而去。',
+ zhoubuyi:'周不疑(192年—208年),字元直(或作“文直”),零陵重安(今湖南衡阳县)人,刘表别驾刘先的外甥,少有异才,聪明敏达,在十七岁时就著有文论四首。曹冲死后,曹操怀疑曹丕无法驾驭周不疑,于是派人杀了周不疑。',
},
characterTitle:{
// wulan:'#b对决限定武将',
@@ -10833,7 +11335,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dushi_info:'锁定技,你处于濒死状态时,其他角色不能对你使用【桃】。你死亡时,你选择一名其他角色获得〖毒逝〗。',
yuwei:'余威',
yuwei_info:'主公技,锁定技,其他群雄角色的回合内,你将〖诗怨〗改为“每回合每项限两次”。',
- re_xinxianying:'辛宪英',
+ re_xinxianying:'新杀辛宪英',
rezhongjian:'忠鉴',
rezhongjian2:'忠鉴',
rezhongjian_info:'出牌阶段限一次,你可以选择一名本回合内未选择过的角色。你令其获得一项效果直至你的下回合开始:①其下次造成伤害后弃置两张牌,然后你摸一张牌。②其下次受到伤害后摸两张牌,然后你摸一张牌。',
@@ -11055,7 +11557,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcwumei_info:'每轮限一次。回合开始时,你可以令一名角色记录场上所有角色的体力值并进行一个额外的回合,并将你的回合移至该回合后进行。该角色以此法进行的回合的结束阶段,将场上所有角色的体力值改为记录内的对应数值。',
dczhanmeng:'占梦',
dczhanmeng_info:'当你使用牌时,你可以选择本回合未选择过的一项:1.上一回合内,若没有同名牌被使用过,你获得一张非伤害牌;2.下一回合内,当同名牌首次被使用后,你获得一张伤害牌;3.令一名其他角色弃置两张牌,若点数之和大于10,你对其造成1点火焰伤害。',
- dc_wangyun:'十周年王允',
+ dc_wangyun:'新杀王允',
dc_wangyun_ab:'王允',
dclianji:'连计',
dclianji_info:'出牌阶段限一次。你可以弃置一张手牌并选择一名其他角色,其随机使用牌堆中的一张武器牌,然后其选择一项:1.对另一名其他角色使用一张【杀】,并将武器牌交给其中一个目标;2.令你视为对其使用一张【杀】,并将武器牌交给你。',
@@ -11172,6 +11674,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dclingyue_info:'锁定技。一名角色于一轮内首次造成伤害后,你摸一张牌。若此时是该角色回合外,则改为摸X张牌(X为本回合全场造成的伤害值)。',
dcpandi:'盻睇',
dcpandi_info:'出牌阶段,你可以选择一名本回合内未造成过伤害的角色。你本阶段内使用的下一张牌改为以该角色为基准判断使用目标合法性,且使用者改为该角色。',
+ zhoubuyi:'周不疑',
+ dcshiji:'十计',
+ dcshiji_info:'一名角色的结束阶段,若其本回合未造成过伤害,你可以声明一种本轮未以此法声明过的普通锦囊牌,然后其可以将一张牌当你声明的牌使用(其不是此牌的合法目标)。',
+ dcsilun:'四论',
+ dcsilun_info:'准备阶段或当你受到伤害后,你可以摸四张牌,然后将四张牌依次置于场上或牌堆两端(对所有角色可见)。装备区牌数因此变化的角色复原其武将牌。',
+ dc_wangjun:'王濬',
+ dcmianyao:'免徭',
+ dcmianyao_info:'摸牌阶段结束时,你可以展示手牌中点数最小的一张牌并将此牌随机插入牌堆中。然后你于此回合结束时摸等同于此牌点数的牌。',
+ dcchangqu:'长驱',
+ dcchangqu_info:'出牌阶段限一次。你可以开一艘战舰(你从你的上家或下家开始选择任意名座位连续的其他角色,且起点角色获得“战舰”标记)。这些角色按照你选择的顺序依次执行:{若其有本次获得的“战舰”,其选择一项:1.交给你X张手牌,然后将“战舰”移动给你选择的下一名目标角色;2.令其下次受到的属性伤害值+X,然后横置(X为本次〖长驱〗中选项一被选择过的次数且至少为1)。}。',
+ dctongye:'统业',
+ dctongye_info:'锁定技。游戏开始时或一名角色死亡后,若场上势力数:不大于4,你的手牌上限+3;不大于3,你的攻击范围+3;不大于2,你使用【杀】的次数上限+3;不大于1,你摸牌阶段额定摸牌数+3。',
sp2_yinyu:'隐山之玉',
sp2_huben:'百战虎贲',
diff --git a/character/yijiang.js b/character/yijiang.js
index c74980822..fd8a98932 100755
--- a/character/yijiang.js
+++ b/character/yijiang.js
@@ -8804,6 +8804,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
mingjian:{
+ audio:2,
+ audioname:['re_caorui'],
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
@@ -8916,6 +8918,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
huituo:{
audio:2,
+ audioname:['re_caorui'],
trigger:{player:'damageEnd'},
direct:true,
content:function(){
@@ -13587,13 +13590,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xunyou:['re_xunyou','xunyou'],
xuezong:['tw_xuezong','xuezong'],
huanghao:['huanghao','dc_huanghao','old_huanghao'],
- caorui:['caorui','old_caorui'],
+ caorui:['re_caorui','caorui','old_caorui'],
sunziliufang:['dc_sunziliufang','sunziliufang'],
liyan:['liyan','old_liyan'],
zhangsong:['re_zhangsong','zhangsong'],
},
translate:{
- old_huaxiong:'华雄',
+ old_huaxiong:'将华雄',
+ old_huaxiong_ab:'华雄',
yufan:'虞翻',
xushu:'旧徐庶',
caozhi:'曹植',
@@ -13653,7 +13657,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xin_yujin:'节钺于禁',
xin_liru:'李儒',
guohuanghou:'郭皇后',
- liuyu:'刘虞',
+ liuyu:'OL刘虞',
sundeng:'孙登',
liyan:'李严',
sunziliufang:'孙资刘放',
diff --git a/character/yingbian.js b/character/yingbian.js
index 03a13a88e..c9660b7be 100644
--- a/character/yingbian.js
+++ b/character/yingbian.js
@@ -3615,7 +3615,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xijue_xiaoguo:'骁果',
xijue_xiaoguo_info:'其他角色的结束阶段开始时,你可以弃置一张基本牌,令该角色选择一项:1.弃置一张装备牌,然后你摸一张牌;2.受到你对其造成的1点伤害。',
xijue_xiaoguo_info_guozhan:'其他角色的结束阶段开始时,你可以弃置一张基本牌,令该角色选择一项:1.弃置一张装备牌;2.受到你对其造成的1点伤害。',
- duyu:'杜预',
+ duyu:'OL杜预',
sanchen:'三陈',
sanchen_info:'出牌阶段限一次。你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌且〖三陈〗于此阶段内使用次数上限+1。',
sanchen_info_guozhan:'出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌且你获得技能〖破竹〗直到回合结束。否则你本阶段内不能再发动〖三陈〗。',
@@ -3754,7 +3754,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
qimei_info:'准备阶段,你可以选择一名其他角色。你获得如下效果直到下回合开始:①每回合限一次,当你或其获得牌/失去手牌后,若你与其手牌数相等,则另一名角色摸一张牌。②每回合限一次,当你或其的体力值变化后,若你与其体力值相等,则另一名角色摸一张牌。',
ybzhuiji:'追姬',
ybzhuiji_info:'出牌阶段开始时,你可选择一项:①摸两张牌,并于出牌阶段结束时失去1点体力;②回复1点体力,并于出牌阶段结束时弃置两张牌。',
- jin_yanghu:'羊祜',
+ jin_yanghu:'OL羊祜',
huaiyuan:'怀远',
huaiyuanx:'绥',
huaiyuan_info:'①游戏开始时,你将你的手牌标记为“绥”。②当你失去一张“绥”后,你令一名角色执行一项:⒈其的手牌上限+1。⒉其的攻击范围+1。⒊其摸一张牌。③当你死亡时,你可令一名其他角色的手牌上限+X,且攻击范围+Y(X和Y为你自己被执行过〖怀远②〗的选项一和选项二的次数)。',
diff --git a/game/config.js b/game/config.js
index 4e6d978b5..7294dc11a 100644
--- a/game/config.js
+++ b/game/config.js
@@ -20,7 +20,7 @@ window.config={
zhinang_tricks:['guohe','wuxie','wuzhong','dongzhuxianji'],
connect_zhinang_tricks:['guohe','wuxie','wuzhong','dongzhuxianji'],
all:{
- sgscharacters:['standard','shenhua','xinghuoliaoyuan','refresh','yijiang','sp','sp2','xianding','huicui','extra','old','mobile','shiji','tw','yingbian','offline','sb','clan','collab'],
+ sgscharacters:['standard','shenhua','xinghuoliaoyuan','refresh','yijiang','sp','sp2','xianding','huicui','extra','old','mobile','shiji','tw','yingbian','offline','jsrg','sb','clan','collab'],
sgscards:['standard','extra','sp','guozhan','zhulu','yingbian','yongjian'],
sgsmodes:['identity','guozhan','versus','doudizhu','single','brawl','connect'],
stockmode:['identity','guozhan','versus','boss','doudizhu','single','chess','stone','connect','brawl','tafang'],
@@ -133,7 +133,7 @@ window.config={
sort:'type_sort',
cards:['standard','extra'],
- characters:['standard','shenhua','sp','sp2','yijiang','refresh','xinghuoliaoyuan','mobile','extra','yingbian','sb','tw','offline','clan','collab','xianding','huicui','shiji'],
+ characters:['standard','shenhua','sp','sp2','yijiang','refresh','xinghuoliaoyuan','mobile','extra','yingbian','sb','tw','offline','clan','collab','xianding','huicui','shiji','jsrg'],
connect_characters:['diy'],
connect_cards:['huanlekapai','guozhan','sp','zhulu','yingbian','yongjian'],
plays:[],
diff --git a/game/game.js b/game/game.js
index 17ee62fca..f4031f8c8 100644
--- a/game/game.js
+++ b/game/game.js
@@ -38765,7 +38765,7 @@
}
intro.innerHTML=get.translation(rarity);
}
- if((button.link=='xushu'||button.link=='xin_xushu')&&button.node&&button.node.name&&button.node.group){
+ if((button.link=='xushu'||button.link=='xin_xushu'||button.link=='jsrg_guanyu')&&button.node&&button.node.name&&button.node.group){
if(button.classList.contains('newstyle')){
button.node.name.dataset.nature='watermm';
button.node.group.dataset.nature='water';
@@ -52943,7 +52943,7 @@
return false;
},
double:function(name,array){
- if(!lib.character[name]||!lib.character[name][4]||name.indexOf('gz_')!=0&&name.indexOf('db_')!=0) return false;
+ if(!lib.character[name]||!lib.character[name][4]||name.indexOf('gz_')!=0&&name.indexOf('db_')!=0&&name.indexOf('jsrg_')!=0) return false;
for(var i of lib.character[name][4]){
if(i.indexOf('doublegroup:')==0){
if(!array) return true;
@@ -54341,6 +54341,9 @@
else if(str2.indexOf('手杀')==0){
str2=str2.slice(2);
}
+ else if(str2.indexOf('新杀')==0){
+ str2=str2.slice(2);
+ }
else if(str2.indexOf('界')==0&&lib.characterPack.refresh&&lib.characterPack.refresh[str]){
str2=str2.slice(1);
}
@@ -54374,6 +54377,9 @@
else if(str2.indexOf('手杀')==0){
str2=str2.slice(2);
}
+ else if(str2.indexOf('新杀')==0){
+ str2=str2.slice(2);
+ }
return str2;
},
slimName:function(str){
@@ -54398,6 +54404,9 @@
else if(str2.indexOf('手杀')==0){
str2=str2.slice(2);
}
+ else if(str2.indexOf('新杀')==0){
+ str2=str2.slice(2);
+ }
return get.verticalStr(str2,true);
},
time:function(){
diff --git a/game/package.js b/game/package.js
index 1fc6467fe..959fd63c8 100644
--- a/game/package.js
+++ b/game/package.js
@@ -18,6 +18,7 @@ window.noname_package={
tw:'外服武将',
collab:'联动卡',
offline:'线下武将',
+ jsrg:'江山如故',
old:'怀旧',
diy:'DIY',
ddd:'3D精选',
diff --git a/image/character/dc_caocao.jpg b/image/character/dc_caocao.jpg
new file mode 100644
index 000000000..028abb235
Binary files /dev/null and b/image/character/dc_caocao.jpg differ
diff --git a/image/character/dc_liubei.jpg b/image/character/dc_liubei.jpg
new file mode 100644
index 000000000..ffa854739
Binary files /dev/null and b/image/character/dc_liubei.jpg differ
diff --git a/image/character/dc_sunquan.jpg b/image/character/dc_sunquan.jpg
new file mode 100644
index 000000000..aefd1bb05
Binary files /dev/null and b/image/character/dc_sunquan.jpg differ
diff --git a/image/character/dc_wangjun.jpg b/image/character/dc_wangjun.jpg
index c03b7580a..c3e6a517b 100644
Binary files a/image/character/dc_wangjun.jpg and b/image/character/dc_wangjun.jpg differ
diff --git a/image/character/jsrg_chendeng.jpg b/image/character/jsrg_chendeng.jpg
new file mode 100644
index 000000000..ee824b632
Binary files /dev/null and b/image/character/jsrg_chendeng.jpg differ
diff --git a/image/character/jsrg_chunyuqiong.jpg b/image/character/jsrg_chunyuqiong.jpg
new file mode 100644
index 000000000..d497a3774
Binary files /dev/null and b/image/character/jsrg_chunyuqiong.jpg differ
diff --git a/image/character/jsrg_guanyu.jpg b/image/character/jsrg_guanyu.jpg
new file mode 100644
index 000000000..7d6198a46
Binary files /dev/null and b/image/character/jsrg_guanyu.jpg differ
diff --git a/image/character/jsrg_lvbu.jpg b/image/character/jsrg_lvbu.jpg
new file mode 100644
index 000000000..f4f0a1268
Binary files /dev/null and b/image/character/jsrg_lvbu.jpg differ
diff --git a/image/character/jsrg_sunce.jpg b/image/character/jsrg_sunce.jpg
new file mode 100644
index 000000000..6e88a4742
Binary files /dev/null and b/image/character/jsrg_sunce.jpg differ
diff --git a/image/character/jsrg_xugong.jpg b/image/character/jsrg_xugong.jpg
new file mode 100644
index 000000000..ec5335338
Binary files /dev/null and b/image/character/jsrg_xugong.jpg differ
diff --git a/image/character/jsrg_xuyou.jpg b/image/character/jsrg_xuyou.jpg
new file mode 100644
index 000000000..33e0ac497
Binary files /dev/null and b/image/character/jsrg_xuyou.jpg differ
diff --git a/image/character/jsrg_zhanghe.jpg b/image/character/jsrg_zhanghe.jpg
new file mode 100644
index 000000000..9922b1c95
Binary files /dev/null and b/image/character/jsrg_zhanghe.jpg differ
diff --git a/image/character/jsrg_zhangliao.jpg b/image/character/jsrg_zhangliao.jpg
new file mode 100644
index 000000000..e5aca1767
Binary files /dev/null and b/image/character/jsrg_zhangliao.jpg differ
diff --git a/image/character/jsrg_zhenji.jpg b/image/character/jsrg_zhenji.jpg
new file mode 100644
index 000000000..6b7c498c9
Binary files /dev/null and b/image/character/jsrg_zhenji.jpg differ
diff --git a/image/character/jsrg_zoushi.jpg b/image/character/jsrg_zoushi.jpg
new file mode 100644
index 000000000..6552f7a7d
Binary files /dev/null and b/image/character/jsrg_zoushi.jpg differ
diff --git a/image/character/zhoubuyi.jpg b/image/character/zhoubuyi.jpg
new file mode 100644
index 000000000..233cb2a85
Binary files /dev/null and b/image/character/zhoubuyi.jpg differ