Merge pull request #249 from mengxinzxz/PR-Branch

新武将+bug修复+技能调整+国战模式调整
This commit is contained in:
Spmario233 2023-09-01 22:21:56 +08:00 committed by GitHub
commit e22fd8424a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
45 changed files with 491 additions and 83 deletions

BIN
audio/die/clan_wanghun.mp3 Normal file

Binary file not shown.

BIN
audio/die/clan_wukuang.mp3 Normal file

Binary file not shown.

BIN
audio/die/clan_zhongyan.mp3 Normal file

Binary file not shown.

BIN
audio/die/dongxie.mp3 Normal file

Binary file not shown.

BIN
audio/die/ol_wenqin.mp3 Normal file

Binary file not shown.

BIN
audio/die/peiyuanshao.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/clanchenya1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/clanchenya2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/clanfuxun1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/clanfuxun2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/clanguangu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/clanguangu2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/dchumei1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dchumei2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjiaoxia1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjiaoxia2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcmoyu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcmoyu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olguangao1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olguangao2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olhuiqi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olhuiqi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olxieju1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olxieju2.mp3 Normal file

Binary file not shown.

View File

@ -898,6 +898,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
global:'clanlianzhu_global', global:'clanlianzhu_global',
subSkill:{ subSkill:{
global:{ global:{
forceaudio:true,
audio:'clanlianzhu',
enable:'phaseUse', enable:'phaseUse',
filter:(event,player)=>game.hasPlayer(current=>lib.skill.clanlianzhu_global.filterTarget(null,player,current)), filter:(event,player)=>game.hasPlayer(current=>lib.skill.clanlianzhu_global.filterTarget(null,player,current)),
filterCard:(card,player)=>game.hasPlayer(current=>current.hasSkill('clanlianzhu')&&!current.hasSkill('clanlianzhu_targeted')&&!current.storage.clanlianzhu)&&player.canRecast(card), filterCard:(card,player)=>game.hasPlayer(current=>current.hasSkill('clanlianzhu')&&!current.hasSkill('clanlianzhu_targeted')&&!current.storage.clanlianzhu)&&player.canRecast(card),
@ -2026,6 +2028,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 6-ui.selected.cards.length-get.value(card); return 6-ui.selected.cards.length-get.value(card);
}, },
onuse:function(links,player){ onuse:function(links,player){
lib.skill.chenliuwushi.change(player,-1);
player.addTempSkill('clanzhanding_effect'); player.addTempSkill('clanzhanding_effect');
}, },
ai:{ ai:{
@ -2044,7 +2047,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return event.skill=='clanzhanding'; return event.skill=='clanzhanding';
}, },
content:function(){ content:function(){
lib.skill.chenliuwushi.change(player,-1);
if(player.hasHistory('sourceDamage',function(evt){ if(player.hasHistory('sourceDamage',function(evt){
return evt.card==trigger.card; return evt.card==trigger.card;
})){ })){
@ -2283,7 +2285,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
chenliuwushi:'陈留·吴氏', chenliuwushi:'陈留·吴氏',
clan_wuban:'族吴班', clan_wuban:'族吴班',
clanzhanding:'斩钉', clanzhanding:'斩钉',
clanzhanding_info:'你可以将任意张牌当做【杀】使用。你以此法使用的【杀】结算结束后,你令你的手牌上限-1然后若你因此【杀】造成过伤害,则你将手牌摸至手牌上限(至多摸五张),否则你令此【杀】不计入次数限制。', clanzhanding_info:'你可以将任意张牌当做【杀】使用并你令你的手牌上限-1。你以此法使用的【杀】结算结束后,若你因此【杀】造成过伤害,则你将手牌摸至手牌上限(至多摸五张),否则你令此【杀】不计入次数限制。',
clan_xunshu:'族荀淑', clan_xunshu:'族荀淑',
clanshenjun:'神君', clanshenjun:'神君',
clanshenjun_info:'当一名角色使用【杀】或普通锦囊牌时,若你手牌中有该牌名的牌,你展示之,且这些牌称为“神君”。然后本阶段结束时,你可以将等同于你“神君”数张牌当做一张“神君”牌使用。', clanshenjun_info:'当一名角色使用【杀】或普通锦囊牌时,若你手牌中有该牌名的牌,你展示之,且这些牌称为“神君”。然后本阶段结束时,你可以将等同于你“神君”数张牌当做一张“神君”牌使用。',

View File

@ -18,7 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
extra_mobilezhi:['shen_guojia','shen_xunyu'], extra_mobilezhi:['shen_guojia','shen_xunyu'],
extra_mobilexin:['shen_taishici','shen_sunce'], extra_mobilexin:['shen_taishici','shen_sunce'],
extra_tw:['tw_shen_guanyu','tw_shen_lvmeng'], extra_tw:['tw_shen_guanyu','tw_shen_lvmeng'],
extra_offline:['shen_diaochan','boss_zhaoyun'], extra_offline:['shen_diaochan','boss_zhaoyun','shen_dianwei'],
}, },
}, },
character:{ character:{
@ -2829,7 +2829,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1' 'step 1'
if(result.control!='cancel2'){ if(result.control!='cancel2'){
if(result.control=='选项二'){ if(result.control=='选项二'){
player.logSkill('tspowei',target); player.logSkill('tspowei_use',target);
player.gainPlayerCard(target,'h',true); player.gainPlayerCard(target,'h',true);
event.goto(3); event.goto(3);
} }

View File

@ -11,9 +11,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhangkai:['male','qun',4,['dcxiangshu']], zhangkai:['male','qun',4,['dcxiangshu']],
gaoxiang:['male','shu',4,['dcchiying'],['unseen']], gaoxiang:['male','shu',4,['dcchiying'],['unseen']],
yuanyin:['male','qun',3,['dcmoshou','dcyunjiu'],['unseen']], yuanyin:['male','qun',3,['dcmoshou','dcyunjiu'],['unseen']],
dongwan:['female','qun',3,['dcshengdu','dcjieling'],['unseen']], dongwan:['female','qun',3,['dcshengdu','dcjieling']],
zhangchu:['female','qun',3,['dcjizhong','dcrihui','dcguangshi']], zhangchu:['female','qun',3,['dcjizhong','dcrihui','dcguangshi']],
peiyuanshao:['male','qun',4,['dcmoyu'],['unseen']], peiyuanshao:['male','qun',4,['dcmoyu']],
mengjie:['male','qun',3,['dcyinlu','dcyouqi']], mengjie:['male','qun',3,['dcyinlu','dcyouqi']],
dc_huojun:['male','shu',4,['dcgue','dcsigong']], dc_huojun:['male','shu',4,['dcgue','dcsigong']],
dc_sunhanhua:['female','wu',3,['dchuiling','dcchongxu']], dc_sunhanhua:['female','wu',3,['dchuiling','dcchongxu']],
@ -885,12 +885,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target.chooseToUse(function(card,player,event){ target.chooseToUse(function(card,player,event){
if(get.name(card)!='sha') return false; if(get.name(card)!='sha') return false;
return lib.filter.filterCard.apply(this,arguments); return lib.filter.filterCard.apply(this,arguments);
},'是否对'+get.translation(player)+'使用一张【杀】(伤害基数为'+num+'').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){ },'是否对'+get.translation(player)+'使用一张无距离限制的【杀】(伤害基数为'+num+'').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false; if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
return lib.filter.filterTarget.apply(this,arguments); return lib.filter.targetEnabled.apply(this,arguments);
}).set('sourcex',player).set('num',num).set('oncard',card=>{ }).set('sourcex',player).set('num',num).set('oncard',card=>{
var evt=_status.event; _status.event.baseDamage=_status.event.getParent().num;
evt.baseDamage=evt.num;
}); });
'step 2' 'step 2'
if(result.bool){ if(result.bool){
@ -904,7 +903,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
charlotte:true, charlotte:true,
onremove:true, onremove:true,
}, },
ban:{charlotte:true}, ban:{
charlotte:true,
mark:true,
marktext:'欲',
intro:{content:'偷马贼被反打了!'},
},
ai:{ ai:{
ai:{ ai:{
effect:{ effect:{
@ -937,7 +941,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target:player, target:player,
card:{name:'sha'}, card:{name:'sha'},
},true)) return eff; },true)) return eff;
if(player.getStorage('dcmoyu_clear').length||player.hp+player.countCards('hs','tao')<=1) return 0; if(target.hasSha()&&player.hp+player.countCards('h',function(card){
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,player,'unchanged','cardSavable',player);
if(mod!='unchanged') return mod;
var savable=get.info(card).savable;
if(typeof savable=='function') savable=savable(card,player,player);
return savable;
})<=player.getStorage('dcmoyu_clear').length+1) return 0;
return eff; return eff;
} }
} }
@ -1148,16 +1160,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
targetInRange:function(card){ targetInRange:function(card){
if(card.storage&&card.storage.dcjieling) return true; if(card.storage&&card.storage.dcjieling) return true;
}, },
cardUsable:function(card,player,num){
if(card.storage&&card.storage.dcjieling) return Infinity;
},
}, },
subSkill:{ subSkill:{
after:{ after:{
trigger:{global:'useCardAfter'},
forced:true,
direct:true,
charlotte:true, charlotte:true,
audio:'dcjieling',
trigger:{global:'useCardAfter'},
filter:function(event,player){ filter:function(event,player){
return event.card.name=='sha'&&event.card.storage&&event.card.storage.dcjieling; return event.card.name=='sha'&&event.card.storage&&event.card.storage.dcjieling;
}, },
direct:true,
content:function(){ content:function(){
'step 0' 'step 0'
var damaged=game.hasPlayer2(current=>{ var damaged=game.hasPlayer2(current=>{
@ -10197,7 +10212,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcsigong_info:'其他角色的回合结束时若其于本回合内使用牌被响应过你可以将手牌摸至或弃置至1视为对其使用一张需使用X张【闪】抵消的【杀】且此【杀】的伤害基数+1X为你以此法弃置的牌数且至少为1。当你以此法造成伤害后该技能于本轮失效。', dcsigong_info:'其他角色的回合结束时若其于本回合内使用牌被响应过你可以将手牌摸至或弃置至1视为对其使用一张需使用X张【闪】抵消的【杀】且此【杀】的伤害基数+1X为你以此法弃置的牌数且至少为1。当你以此法造成伤害后该技能于本轮失效。',
peiyuanshao:'裴元绍', peiyuanshao:'裴元绍',
dcmoyu:'没欲', dcmoyu:'没欲',
dcmoyu_info:'出牌阶段每名角色限一次。你可以获得一名其他角色区域里的一张牌,然后其可以对你使用一张【杀】且此【杀】伤害基数为XX为你于本回合发动此技能的次数。若此【杀】对你造成了伤害你令此技能于本回合失效。', dcmoyu_info:'出牌阶段每名角色限一次。你可以获得一名其他角色区域里的一张牌,然后其可以对你使用一张无距离限制的【杀】且此【杀】伤害基数为XX为你于本回合发动此技能的次数。若此【杀】对你造成了伤害你令此技能于本回合失效。',
zhangchu:'张楚', zhangchu:'张楚',
dcjizhong:'集众', dcjizhong:'集众',
dcjizhong_info:'出牌阶段限一次。你可以令一名其他角色摸两张牌然后其选择一项1.若其没有“信众”标记其获得“信众”标记2.弃置三张手牌。', dcjizhong_info:'出牌阶段限一次。你可以令一名其他角色摸两张牌然后其选择一项1.若其没有“信众”标记其获得“信众”标记2.弃置三张手牌。',

View File

@ -7920,6 +7920,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:3, audio:3,
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,
filter:function(event,player){
return game.hasPlayer(function(target){
return lib.skill.beizhu.filterTarget(null,player,target);
});
},
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')>0; return target!=player&&target.countCards('h')>0;
}, },
@ -7933,12 +7938,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.cards=cards; event.cards=cards;
event.goto(5); event.goto(5);
} }
else player.discardPlayerCard('he',target,true); else player.discardPlayerCard('he',target,'visible',true);
'step 2' 'step 2'
player.chooseBool('是否令'+get.translation(target)+'获得一张【杀】?').set('ai',function(){ player.chooseBool('是否令'+get.translation(target)+'获得一张【杀】?').set('choice',get.attitude(player,target)>0);
var evt=_status.event.getParent();
return get.attitude(evt.player,evt.target)>0;
});
'step 3' 'step 3'
if(result.bool){ if(result.bool){
var card=get.cardPile2(function(card){ var card=get.cardPile2(function(card){
@ -7965,6 +7967,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.redo(); event.redo();
} }
}, },
ai:{
order:7,
threaten:1.14+5.14,
result:{
player:function(player,target){
var eff=get.effect(target,{name:'guohe_copy2'},player,player);
var cards=target.getCards('h',{name:'sha'});
if(!cards.length) return eff;
return eff/(cards.length+3);
},
},
},
}, },
beizhu_draw:{ beizhu_draw:{
trigger:{player:'damageEnd'}, trigger:{player:'damageEnd'},

View File

@ -9038,7 +9038,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var type=get.type(trigger.card,false); var type=get.type(trigger.card,false);
player.chooseToDiscard('h',get.prompt('olfengzi'),'弃置一张'+get.translation(type)+'牌,令'+get.translation(trigger.card)+'结算两次',function(card,player){ player.chooseToDiscard('h',get.prompt('olfengzi'),'弃置一张'+get.translation(type)+'牌,令'+get.translation(trigger.card)+'结算两次',function(card,player){
return get.type2(card,player)==_status.event.type; return get.type2(card,player)==_status.event.type;
}).set('type',type).set('ai',()=>-1).logSkill='olfengzi'; }).set('type',type).set('ai',function(card){
var player=_status.event.player;
var trigger=_status.event.getTrigger();
if(trigger.card.name=='tiesuo') return 0;
var num=0;
for(var i of trigger.targets) num+=get.effect(i,trigger.card,player,player);
if(num<=0) return 0;
return 7-get.value(card);
}).logSkill='olfengzi';
'step 1' 'step 1'
if(result.bool){ if(result.bool){
trigger.effectCount++; trigger.effectCount++;

View File

@ -51,7 +51,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhaozhong:['male','qun',6,['yangzhong','huangkong']], zhaozhong:['male','qun',6,['yangzhong','huangkong']],
hanfu:['male','qun',4,['hfjieying','weipo']], hanfu:['male','qun',4,['hfjieying','weipo']],
re_quyi:['male','qun',4,['refuqi','jiaozi']], re_quyi:['male','qun',4,['refuqi','jiaozi']],
dongxie:['female','qun','3/4',['juntun','jiaojie']], dongxie:['female','qun',4,['dcjiaoxia','dchumei']],
wangrong:['female','qun',3,['minsi','jijing','zhuide']], wangrong:['female','qun',3,['minsi','jijing','zhuide']],
ol_dingyuan:['male','qun',4,['cixiao','xianshuai']], ol_dingyuan:['male','qun',4,['cixiao','xianshuai']],
xin_baosanniang:['female','shu',3,['decadewuniang','decadexushen']], xin_baosanniang:['female','shu',3,['decadewuniang','decadexushen']],
@ -111,6 +111,173 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
skill:{ skill:{
//董翓
dcjiaoxia:{
mod:{
cardUsableTarget:function(card,player,target){
if(!player.isPhaseUsing()) return;
if(card.name=='sha'&&!player.getStorage('dcjiaoxia_mark').contains(target)) return true;
},
},
audio:2,
trigger:{player:'phaseUseBegin'},
filter:function(event,player){
return player.countCards('h');
},
check:function(event,player){
return player.countCards('h',card=>{
return game.hasPlayer(target=>{
var cardx=get.autoViewAs({name:'sha'},[card]);
return player.canUse(cardx,target)&&get.effect(target,cardx,player,player)>0&&(!player.hasUseTarget(card)||player.hasValueTarget(card));
});
});
},
content:function(){
var cards=player.getCards('h');
player.addTempSkill('dcjiaoxia_used','phaseUseAfter');
player.addGaintag(cards,'dcjiaoxia_used');
},
group:'dcjiaoxia_load',
subSkill:{
load:{
charlotte:true,
trigger:{player:'useCard1'},
filter:function(event,player){
if(!player.isPhaseUsing()) return false;
return event.card.name=='sha'&&event.targets&&event.targets.some(target=>!player.getStorage('dcjiaoxia_mark').contains(target));
},
forced:true,
popup:false,
firstDo:true,
content:function(){
player.addTempSkill('dcjiaoxia_mark','phaseUseAfter');
player.markAuto('dcjiaoxia_mark',trigger.targets.filter(target=>!player.getStorage('dcjiaoxia_mark').contains(target)));
},
},
mark:{
charlotte:true,
onremove:true,
},
used:{
mod:{
aiOrder:function(player,card,num){
if(get.itemtype(card)=='card'&&card.hasGaintag('dcjiaoxia_used')) return num+1;
},
cardname:function(card,player){
if(get.itemtype(card)=='card'&&card.hasGaintag('dcjiaoxia_used')) return 'sha';
},
},
charlotte:true,
onremove:function(player){
player.removeGaintag('dcjiaoxia_used');
},
trigger:{player:'useCardAfter'},
filter:function(event,player){
return event.cards&&event.cards.length==1&&player.hasUseTarget(get.copy(event.cards[0]))&&player.getHistory('lose',evt=>{
if(evt.getParent()!=event) return false;
for(var i in evt.gaintag_map){
if(evt.gaintag_map[i].contains('dcjiaoxia_used')) return true;
}
return false;
}).length&&player.getHistory('sourceDamage',evt=>evt.card==event.card).length;
},
direct:true,
content:function(){
var card=get.copy(trigger.cards[0]);
player.chooseUseTarget(card,get.prompt('dcjiaoxia'),false,false).set('prompt2','视为使用'+get.translation(card)).logSkill='dcjiaoxia';
},
},
},
},
dchumei:{
subSkill:{
0:{charlotte:true},
1:{charlotte:true},
2:{charlotte:true},
},
onChooseToUse:function(event){
if(!game.online&&!event.dchumei_num){
var player=event.player;
var evtx=event.getParent('phaseUse');
event.set('dchumei_num',player.getHistory('sourceDamage',function(evt){
return evt.getParent('phaseUse')==evtx;
}).length);
}
},
audio:2,
enable:'phaseUse',
filter:function(event,player){
if(typeof event.dchumei_num!='number') return false;
return game.hasPlayer(target=>lib.skill.dchumei.filterTarget(null,player,target));
},
filterTarget:function(card,player,target){
if(target.getHp()>_status.event.dchumei_num) return false;
if(!player.hasSkill('dchumei_0')) return true;
if(!player.hasSkill('dchumei_1')&&target.countCards('he')) return true;
if(!player.hasSkill('dchumei_2')&&target.isDamaged()) return true;
return false;
},
content:function(){
'step 0'
var str=get.translation(target);
player.chooseButton([
'狐魅:请选择一项',
[[
[0,'令'+str+'摸一张牌'],
[1,'令'+str+'交给你一张牌'],
[2,'令'+str+'回复1点体力'],
].filter(list=>{
if(player.hasSkill('dchumei_'+list[0])) return false;
if(list[0]==1&&!target.countCards('he')) return false;
if(list[0]==2&&target.isHealthy()) return false;
return true;
}),'textbutton']
],true).set('filterButton',button=>{
var target=_status.event.target;
if(player.hasSkill('dchumei_'+button.link)) return false;
if(button.link==1&&!target.countCards('he')) return false;
if(button.link==2&&target.isHealthy()) return false;
return true;
}).set('ai',function(button){
var target=_status.event.target;
return [
get.effect(target,{name:'wuzhong'},player,player)/2,
get.effect(target,{name:'shunshou_copy2'},player,player),
get.recoverEffect(target,player,player),
][button.link];
}).set('target',target);
'step 1'
if(result.bool){
var num=result.links[0];
player.addTempSkill('dchumei_'+num,'phaseUseAfter');
switch(num){
case 0:
target.draw();
break;
case 1:
target.chooseCard('狐魅:交给'+get.translation(player)+'一张牌','he',true);
break;
case 2:
target.recover();
break;
}
if(num!=1) event.finish();
}
else event.finish();
'step 2'
if(result.bool) player.gain(result.cards,target,'giveAuto');
},
ai:{
order:1,
result:{
target:function(player,target){
if(!player.hasSkill('dchumei_0')) return 1;
if(!player.hasSkill('dchumei_1')) return -1;
if(!player.hasSkill('dchumei_2')) return 1;
},
},
},
},
//魏关羽 //魏关羽
dcdanji:{ dcdanji:{
audio:'danji', audio:'danji',
@ -10060,6 +10227,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
juntun_info:'锁定技准备阶段若X大于1则你减1点体力上限并摸X张牌X为你的体力上限。', juntun_info:'锁定技准备阶段若X大于1则你减1点体力上限并摸X张牌X为你的体力上限。',
jiaojie:'狡黠', jiaojie:'狡黠',
jiaojie_info:'锁定技,你的红色牌不计入手牌上限。你使用黑色牌无距离和次数限制。', jiaojie_info:'锁定技,你的红色牌不计入手牌上限。你使用黑色牌无距离和次数限制。',
dcjiaoxia:'狡黠',
dcjiaoxia_info:'①出牌阶段开始时,你可以令自己的所有手牌于此阶段均视为【杀】。若如此做,你使用以此法转化的【杀】造成伤害后,你可以视为使用此牌对应的原卡牌。②出牌阶段,你对你本阶段未使用过【杀】的角色使用【杀】无次数限制。',
dchumei:'狐魅',
dchumei_info:'出牌阶段各限一次你可以选择一名体力值不大于X的角色令其①摸一张牌。②交给你一张牌。③回复1点体力。X为你本阶段造成伤害的次数',
buchen:'不臣', buchen:'不臣',
buchen_info:'隐匿技,你于其他角色的回合登场时,可获得当前回合角色的一张牌。', buchen_info:'隐匿技,你于其他角色的回合登场时,可获得当前回合角色的一张牌。',
smyyingshi:'鹰视', smyyingshi:'鹰视',

View File

@ -8747,8 +8747,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
intro:{ intro:{
content:function(storage,player){ content:function(storage,player){
if(player.storage.twzhengjian) return '其他角色的出牌阶段结束时若其本阶段内未获得过牌则你可对其造成1点伤害然后你可失去此效果并获得〖征建〗的效果。'; if(player.storage.twzhengjian) return '其他角色的出牌阶段结束时若其本阶段内未获得过牌则你可对其造成1点伤害然后你可失去此效果并获得〖征建〗的效果。';
return '其他角色的出牌阶段结束时,若其本阶段内未获得过牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果。'; return '其他角色的出牌阶段结束时,若其本阶段内未获得过牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果。';
}, },
}, },
}, },
@ -8773,8 +8773,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return list.length>=Math.ceil(num1/2); return list.length>=Math.ceil(num1/2);
}, },
content:function(){ content:function(){
player.storage.twzhengjian=true; 'step 0'
player.awakenSkill('twzhongchi');
'step 1'
player.recover(2);
player.addSkill('twzhongchi_effect'); player.addSkill('twzhongchi_effect');
player.storage.twzhengjian=true;
'step 2'
game.delayx(); game.delayx();
}, },
subSkill:{ subSkill:{
@ -11406,7 +11411,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
case 'equip2': case 'equip2':
target.draw(); target.draw();
break; break;
case 'equip3': case 'equip4': case 'equip6': case 'equip3': case 'equip4': case 'equip5':
target.recover(); target.recover();
break; break;
} }
@ -11432,7 +11437,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var hp=player.hp,hs=player.countCards('h',(card)=>card!=ui.selected.cards[0]); var hp=player.hp,hs=player.countCards('h',(card)=>card!=ui.selected.cards[0]);
var tp=target.hp,ts=target.countCards('h'); var tp=target.hp,ts=target.countCards('h');
if(sub=='equip2') ts++; if(sub=='equip2') ts++;
if(tp<target.maxHp&&(sub=='equip3'||sub=='equip4')) tp++; if(tp<target.maxHp&&(sub=='equip3'||sub=='equip4'||sub=='equip5')) tp++;
if(tp<=hp||ts<=hs) eff+=2; if(tp<=hp||ts<=hs) eff+=2;
} }
if(sub=='equip1'){ if(sub=='equip1'){
@ -11450,7 +11455,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var sub=get.subtype(ui.selected.cards[0],false); var sub=get.subtype(ui.selected.cards[0],false);
var eff=get.effect(target,ui.selected.cards[0],player,target); var eff=get.effect(target,ui.selected.cards[0],player,target);
if(sub=='equip2') eff+=(get.effect(target,{name:'wuzhong'},target,target)/2); if(sub=='equip2') eff+=(get.effect(target,{name:'wuzhong'},target,target)/2);
if(target.isDamaged()&&(sub=='equip3'||sub=='equip4')) eff+=get.recoverEffect(target,player,player); if(target.isDamaged()&&(sub=='equip3'||sub=='equip4'||sub=='equip5')) eff+=get.recoverEffect(target,player,player);
return eff; return eff;
}, },
}, },
@ -11467,7 +11472,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0' 'step 0'
player.chooseCardTarget({ player.chooseCardTarget({
prompt:get.prompt('twyuanhu'), prompt:get.prompt('twyuanhu'),
prompt2:'将一张装备牌置入一名角色的装备区内。若此牌为武器牌你弃置与其距离为1的另一名角色区域的一张牌防具牌其摸一张牌坐骑牌其回复1点体力。若其体力值或手牌数不大于你,则你摸一张牌。', prompt2:'将一张装备牌置入一名角色的装备区内。若此牌为武器牌你弃置与其距离为1的另一名角色区域的一张牌防具牌其摸一张牌坐骑牌或宝物牌其回复1点体力。然后若其体力值或手牌数不大于你,则你摸一张牌。',
filterCard:lib.skill.twyuanhu.filterCard, filterCard:lib.skill.twyuanhu.filterCard,
filterTarget:lib.skill.twyuanhu.filterTarget, filterTarget:lib.skill.twyuanhu.filterTarget,
position:'he', position:'he',
@ -13228,6 +13233,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(target.countCards('h')>player.countCards('h')||player.group==target.group) player.draw(); if(target.countCards('h')>player.countCards('h')||player.group==target.group) player.draw();
}, },
ai:{ ai:{
order:7,
result:{ result:{
player:function(player,target){ player:function(player,target){
if(player.countCards('h')<target.countCards('h')||player.group==target.group) return 1; if(player.countCards('h')<target.countCards('h')||player.group==target.group) return 1;
@ -13391,7 +13397,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tw_re_caohong:'TW手杀曹洪', tw_re_caohong:'TW手杀曹洪',
tw_re_caohong_ab:'曹洪', tw_re_caohong_ab:'曹洪',
twyuanhu:'援护', twyuanhu:'援护',
twyuanhu_info:'出牌阶段限一次。你可将一张装备牌置入一名角色的装备区内。若此牌为武器牌你弃置与其距离为1的另一名角色区域的一张牌防具牌其摸一张牌坐骑牌其回复1点体力。若其体力值或手牌数不大于你,则你摸一张牌,且可以于本回合的结束阶段发动一次〖援护〗。', twyuanhu_info:'出牌阶段限一次。你可将一张装备牌置入一名角色的装备区内。若此牌为武器牌你弃置与其距离为1的另一名角色区域的一张牌防具牌其摸一张牌坐骑牌或宝物牌其回复1点体力。然后若其体力值或手牌数不大于你,则你摸一张牌,且可以于本回合的结束阶段发动一次〖援护〗。',
twjuezhu:'决助', twjuezhu:'决助',
twjuezhu_info:'限定技。准备阶段,你可废除一个坐骑栏,令一名角色获得〖飞影〗并废除判定区。该角色死亡后,你恢复以此法废除的装备栏。', twjuezhu_info:'限定技。准备阶段,你可废除一个坐骑栏,令一名角色获得〖飞影〗并废除判定区。该角色死亡后,你恢复以此法废除的装备栏。',
tw_zangba:'TW臧霸', tw_zangba:'TW臧霸',
@ -13425,7 +13431,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
twbudao:'布道', twbudao:'布道',
twbudao_info:'限定技。准备阶段你可减1点体力上限回复1点体力并选择获得一个〖布道〗技能池里的技能三选一。然后你可以令一名其他角色也获得此技能并交给你一张牌。', twbudao_info:'限定技。准备阶段你可减1点体力上限回复1点体力并选择获得一个〖布道〗技能池里的技能三选一。然后你可以令一名其他角色也获得此技能并交给你一张牌。',
twzhouhu:'咒护', twzhouhu:'咒护',
twzhouhu_info:'出牌阶段限一次。你可以弃置一张红色手牌并施法:回复1点体力。', twzhouhu_info:'出牌阶段限一次。你可以弃置一张红色手牌并施法:回复X点体力。',
twharvestinori:'丰祈', twharvestinori:'丰祈',
twharvestinori_info:'出牌阶段限一次。你可以弃置一张黑色手牌并施法摸2X张牌。', twharvestinori_info:'出牌阶段限一次。你可以弃置一张黑色手牌并施法摸2X张牌。',
twzuhuo:'阻祸', twzuhuo:'阻祸',
@ -13438,7 +13444,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
twguimen_info:'锁定技。当你弃置牌时若其中有♠牌你为每一张♠牌判定若此牌点数与结果之差不大于1你对一名其他角色造成2点雷电伤害。', twguimen_info:'锁定技。当你弃置牌时若其中有♠牌你为每一张♠牌判定若此牌点数与结果之差不大于1你对一名其他角色造成2点雷电伤害。',
twdidao:'地道', twdidao:'地道',
twdidao_info:'一名角色的判定牌生效前,你可以打出一张牌作为判定牌并获得原判定牌。若你以此法打出的牌与原判定牌颜色相同,你摸一张牌。', twdidao_info:'一名角色的判定牌生效前,你可以打出一张牌作为判定牌并获得原判定牌。若你以此法打出的牌与原判定牌颜色相同,你摸一张牌。',
tw_chengpu:'程普', tw_chengpu:'TW程普',
twlihuo:'疠火', twlihuo:'疠火',
twlihuo2:'疠火', twlihuo2:'疠火',
twlihuo3:'疠火', twlihuo3:'疠火',
@ -13483,11 +13489,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
twzhenxi_info:'每回合限一次。当你使用【杀】指定目标后你可选择一项⒈弃置其X张手牌X为你至其的距离⒉将其装备区或判定区内的一张牌移动到另一名角色的装备区或判定区内。若其体力值大于你或其体力值为全场最高则你可以改为依次执行以上两项。', twzhenxi_info:'每回合限一次。当你使用【杀】指定目标后你可选择一项⒈弃置其X张手牌X为你至其的距离⒉将其装备区或判定区内的一张牌移动到另一名角色的装备区或判定区内。若其体力值大于你或其体力值为全场最高则你可以改为依次执行以上两项。',
twyangshi:'扬师', twyangshi:'扬师',
twyangshi_info:'锁定技。当你受到伤害后,若场上有不在你攻击范围内的其他角色,则你令攻击范围+1若没有则你从牌堆中获得一张【杀】。', twyangshi_info:'锁定技。当你受到伤害后,若场上有不在你攻击范围内的其他角色,则你令攻击范围+1若没有则你从牌堆中获得一张【杀】。',
tw_puyangxing:'TW濮阳兴', tw_puyangxing:'濮阳兴',
twzhengjian:'征建', twzhengjian:'征建',
twzhengjian_info:'游戏开始时,你可选择获得一项效果:⒈其他角色的出牌阶段结束时,若其本阶段内未使用过非基本牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果二。⒉其他角色的出牌阶段结束时,若其本阶段内未获得过牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果。', twzhengjian_info:'游戏开始时,你可选择获得一项效果:⒈其他角色的出牌阶段结束时,若其本阶段内未使用过非基本牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果二。⒉其他角色的出牌阶段结束时,若其本阶段内未获得过牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果。',
twzhongchi:'众斥', twzhongchi:'众斥',
twzhongchi_info:'锁定技限定技。当你因〖征建〗而获得牌后若已经有至少X名角色因〖征建〗而交给你过牌X为游戏人数的一半且向上取整则你于本局游戏内受到渠道为【杀】的伤害+1且你将〖征建〗中的“其须交给你一张牌”改为“你可对其造成1点伤害”。', twzhongchi_info:'锁定技限定技。当你因〖征建〗而获得牌后若已经有至少X名角色因〖征建〗而交给你过牌X为游戏人数的一半且向上取整则你回复2点体力于本局游戏内受到渠道为【杀】的伤害+1且你将〖征建〗中的“其须交给你一张牌”改为“你可对其造成1点伤害”。',
tw_bingyuan:'邴原', tw_bingyuan:'邴原',
twbingde:'秉德', twbingde:'秉德',
twbingde_info:'出牌阶段限一次。你可以选择一个本阶段未选择过的花色并弃置一张牌,你摸等同于本阶段你使用此花色的牌数,然后若你以此法弃置的牌的花色与你选择的花色相同,你令你〖秉德〗于此阶段发动的次数上限+1。', twbingde_info:'出牌阶段限一次。你可以选择一个本阶段未选择过的花色并弃置一张牌,你摸等同于本阶段你使用此花色的牌数,然后若你以此法弃置的牌的花色与你选择的花色相同,你令你〖秉德〗于此阶段发动的次数上限+1。',

View File

@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'xianding', name:'xianding',
connect:true, connect:true,
character:{ character:{
tianshangyi:['female','wei',3,['dcposuo','dcxiaoren'],['unseen']],
sunlingluan:['female','wu',3,['dclingyue','dcpandi']], sunlingluan:['female','wu',3,['dclingyue','dcpandi']],
dc_wangjun:['male','qun',4,['dctongye','dcchangqu']], dc_wangjun:['male','qun',4,['dctongye','dcchangqu']],
zhoubuyi:['male','wei',3,['dcshiji','dcsilun']], zhoubuyi:['male','wei',3,['dcshiji','dcsilun']],
@ -81,7 +82,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'], sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'],
sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen'], sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen'],
sp2_yinyu:['zhouyi','luyi','sunlingluan'], sp2_yinyu:['zhouyi','luyi','sunlingluan'],
sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji','duanqiaoxiao'], sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji','duanqiaoxiao','tianshangyi'],
sp2_jichu:['zhaoang','dc_liuye','dc_wangyun','yanghong','huanfan','xizheng'], sp2_jichu:['zhaoang','dc_liuye','dc_wangyun','yanghong','huanfan','xizheng'],
sp2_yuxiu:['dongguiren','dc_tengfanglan','zhangjinyun','zhoubuyi'], sp2_yuxiu:['dongguiren','dc_tengfanglan','zhangjinyun','zhoubuyi'],
sp2_gaoshan:['wanglang','liuhui'], sp2_gaoshan:['wanglang','liuhui'],
@ -89,6 +90,180 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
skill:{ skill:{
//田尚衣
dcposuo:{
onChooseToUse:function(event){
if(!game.online&&!event.dcposuo_cards){
var player=event.player;
var evtx=event.getParent('phaseUse');
var suits=lib.suit.slice(0).reverse();
suits=suits.filter(suit=>!player.getStorage('dcposuo_suits').contains(suit));
if(!suits.length||!player.countCards('hs',card=>suits.contains(get.suit(card,player)))||player.getHistory('sourceDamage',evt=>{
return evt.player!=player&&evt.getParent('phaseUse')==evtx;
}).length) event.set('dcposuo_cards',undefined);
else{
var list=[],cards=Array.from(ui.cardPile.childNodes);
cards.addArray(Array.from(ui.discardPile.childNodes));
game.countPlayer(current=>cards.addArray(current.getCards('hejxs')));
for(var name of lib.inpile){
if(!get.tag({name:name},'damage')) continue;
if(cards.some(card=>get.name(card,false)==name&&!get.nature(card,false))){
for(var suit of suits){
if(cards.some(card=>get.name(card,false)==name&&!get.nature(card,false)&&get.suit(card,false)==suit)){
list.push([get.type(name),get.translation(suit),name,undefined,suit]);
}
}
}
if(name=='sha'){
for(var nature of lib.inpile_nature){
if(cards.some(card=>get.name(card,false)==name&&get.nature(card,false)==nature)){
for(var suit of suits){
if(cards.some(card=>get.name(card,false)==name&&get.nature(card,false)==nature&&get.suit(card,false)==suit)){
list.push([get.type(name),get.translation(suit),name,nature,suit]);
}
}
}
}
}
}
event.set('dcposuo_cards',list);
}
}
},
audio:2,
enable:'phaseUse',
filter:function(event,player){
return event.dcposuo_cards&&event.dcposuo_cards.length;
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('婆娑',[event.dcposuo_cards,'vcard'],'hidden');
},
check:function(button){
var player=_status.event.player;
return player.getUseValue({name:button.link[2],nature:button.link[3]});
},
backup:function(links,player){
return {
suit:links[0][4],
filterCard:function(card,player){
return get.suit(card,player)==lib.skill.dcposuo_backup.suit;
},
viewAs:{
name:links[0][2],
nature:links[0][3],
isCard:true,
},
check:function(card){
return 6.5-get.value(card);
},
precontent:function(){
player.logSkill('dcposuo');
delete event.result.skill;
player.addTempSkill('dcposuo_suits');
player.markAuto('dcposuo_suits',[get.suit(event.result.cards[0])]);
},
}
},
prompt:function(links,player){
var suit=links[0][4];
var name=links[0][2];
var nature=links[0][3];
return '将一张'+get.translation(suit)+'牌当作'+(get.translation(nature)||'')+get.translation(name)+'使用';
},
},
ai:{
order:10,
result:{player:1},
},
subSkill:{
suits:{
charlotte:true,
onremove:true,
},
},
},
dcxiaoren:{
audio:2,
trigger:{source:'damageSource'},
usable:1,
content:function(){
'step 0'
player.judge();
'step 1'
if(result.color!='red'&&result.color!='black') return;
if(result.color=='red'&&!game.hasPlayer(current=>current.isDamaged())) return;
if(result.color=='black'&&(!trigger.player.isIn()||game.countPlayer()<3)) return;
var next=game.createEvent('dcxiaoren_'+result.color);
next.player=player;
if(result.color=='black') next.target=trigger.player;
next.setContent(lib.skill.dcxiaoren['content_'+result.color]);
},
content_red:function(){
'step 0'
player.chooseTarget('绡刃是否令一名其他角色回复1点体力',(card,player,target)=>target.isDamaged()).set('ai',target=>get.recoverEffect(target,_status.event.player,_status.event.player));
'step 1'
if(result.bool){
var target=result.targets[0];
player.line(target);
target.recover();
}
},
content_black:function(){
'step 0'
if(target.getPrevious()==player) event._result={control:'下家'};
else if(target.getNext()==player) event._result={control:'上家'};
else player.chooseControl('上家','下家').set('prompt','绡刃:请选择一个方向').set('prompt2','对'+get.translation(target)+'上家或下家造成1点伤害然后你以此方向可重复此流程直到有角色因此死亡或此方向的下个目标为你').set('ai',()=>{
var player=_status.event.player;
var target=_status.event.target;
var left=0,right=0;
var leftx=target.getPrevious(),lefty=target.getNext();
while(leftx!=player){
if(get.damageEffect(leftx,player,player)<0) break;
else{
left+=get.damageEffect(leftx,player,player);
leftx=leftx.getPrevious();
}
}
while(rightx!=player){
if(get.damageEffect(rightx,player,player)<0) break;
else{
right+=get.damageEffect(rightx,player,player);
rightx=leftx.getPrevious();
}
}
return left>right?'上家':'下家';
}).set('target',target);
'step 1'
if(result.control){
event.num=1;
player.popup(result.control);
game.log(player,'选择了','#y'+result.control);
event.fangxiang=result.control;
}
else event.finish();
'step 2'
var current=target;
for(var i=0;i<event.num;i++){
current=current[event.fangxiang=='上家'?'getPrevious':'getNext']();
}
if(current==player) event.finish();
else{
event.current=current;
player.line(current);
current.damage();
}
'step 3'
var aim=event.current[event.fangxiang=='上家'?'getPrevious':'getNext']();
if(!event.current.isIn()||aim==player) event.finish();
else player.chooseBool('绡刃:是否对'+get.translation(aim)+'造成1点伤害').set('choice',get.damageEffect(aim,player,player)>=0);
'step 4'
if(result.bool){
event.num++;
event.goto(2);
}
},
},
//孙翎鸾 //孙翎鸾
dclingyue:{ dclingyue:{
audio:2, audio:2,
@ -11406,6 +11581,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月刘备病死于白帝城追谥甘夫人为“昭烈皇后”。<br>糜夫人,刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。', ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月刘备病死于白帝城追谥甘夫人为“昭烈皇后”。<br>糜夫人,刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。',
sunlingluan:'孙翎鸾,孙坚与妾室丁氏的女儿,孙策的妹妹,孙权、孙尚香的姐姐。孙翎年幼时曾得杜夔点化,窥得音律玄妙,丝竹八音,擅长琵琶,每次弹奏琵琶时,经常引来百鸟,称为奇观。早年孙翎鸾出游,山林巧遇葛玄,葛玄观其面相为吉,特传授修行辟谷之法,可令其身心洗涤,容颜久存。孙翎鸾有恋人名张奋,两人情投意合,可惜造化弄人,张奋病死外域,孙翎鸾倚楼盼归,日复一日、年复一年。后有五彩孔雀自东南而来,绕楼而鸣,其声如慕,孙翎鸾泪染笑靥,与孔雀耳语几句后乘翎而去。', sunlingluan:'孙翎鸾,孙坚与妾室丁氏的女儿,孙策的妹妹,孙权、孙尚香的姐姐。孙翎年幼时曾得杜夔点化,窥得音律玄妙,丝竹八音,擅长琵琶,每次弹奏琵琶时,经常引来百鸟,称为奇观。早年孙翎鸾出游,山林巧遇葛玄,葛玄观其面相为吉,特传授修行辟谷之法,可令其身心洗涤,容颜久存。孙翎鸾有恋人名张奋,两人情投意合,可惜造化弄人,张奋病死外域,孙翎鸾倚楼盼归,日复一日、年复一年。后有五彩孔雀自东南而来,绕楼而鸣,其声如慕,孙翎鸾泪染笑靥,与孔雀耳语几句后乘翎而去。',
zhoubuyi:'周不疑192年—208年字元直或作“文直”零陵重安今湖南衡阳县刘表别驾刘先的外甥少有异才聪明敏达在十七岁时就著有文论四首。曹冲死后曹操怀疑曹丕无法驾驭周不疑于是派人杀了周不疑。', zhoubuyi:'周不疑192年—208年字元直或作“文直”零陵重安今湖南衡阳县刘表别驾刘先的外甥少有异才聪明敏达在十七岁时就著有文论四首。曹冲死后曹操怀疑曹丕无法驾驭周不疑于是派人杀了周不疑。',
tianshangyi:'田尚衣,一作陈尚衣,魏文帝曹丕宫中著名宫人。能歌善舞,一时冠绝于世,私以为比之汉宫飞燕也不遑多让。',
}, },
characterTitle:{ characterTitle:{
// wulan:'#b对决限定武将', // wulan:'#b对决限定武将',
@ -11922,6 +12098,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcchangqu_info:'出牌阶段限一次。你可以开一艘战舰(你从你的上家或下家开始选择任意名座位连续的其他角色,且起点角色获得“战舰”标记)。这些角色按照你选择的顺序依次执行:{若其有本次获得的“战舰”其选择一项1.交给你X张手牌然后将“战舰”移动给你选择的下一名目标角色2.令其下次受到的属性伤害值+X然后横置X为本次〖长驱〗中选项一被选择过的次数且至少为1。}。', dcchangqu_info:'出牌阶段限一次。你可以开一艘战舰(你从你的上家或下家开始选择任意名座位连续的其他角色,且起点角色获得“战舰”标记)。这些角色按照你选择的顺序依次执行:{若其有本次获得的“战舰”其选择一项1.交给你X张手牌然后将“战舰”移动给你选择的下一名目标角色2.令其下次受到的属性伤害值+X然后横置X为本次〖长驱〗中选项一被选择过的次数且至少为1。}。',
dctongye:'统业', dctongye:'统业',
dctongye_info:'锁定技。游戏开始时或一名角色死亡后若场上势力数不大于4你的手牌上限+3不大于3你的攻击范围+3不大于2你使用【杀】的次数上限+3不大于1你摸牌阶段额定摸牌数+3。', dctongye_info:'锁定技。游戏开始时或一名角色死亡后若场上势力数不大于4你的手牌上限+3不大于3你的攻击范围+3不大于2你使用【杀】的次数上限+3不大于1你摸牌阶段额定摸牌数+3。',
tianshangyi:'田尚衣',
dcposuo:'婆娑',
dcposuo_info:'出牌阶段,若你本阶段未造成过伤害,则你可以将一张你本阶段未以此法使用过的花色的手牌当作任意一张存在于游戏的同花色伤害牌使用。',
dcxiaoren:'绡刃',
dcxiaoren_info:'每回合限一次当你造成伤害后你可以进行判定若结果为红色你可以令一名角色回复1点体力黑色你可以对受伤角色的上家或下家造成1点伤害然后你可以重复此方向的伤害流程直到有角色因此死亡或下个目标角色为你。',
sp2_yinyu:'隐山之玉', sp2_yinyu:'隐山之玉',
sp2_huben:'百战虎贲', sp2_huben:'百战虎贲',

BIN
image/character/dongwan.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 KiB

View File

@ -13278,10 +13278,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
target.showCharacter(0); target.showCharacter(0);
game.delay(2); game.delay(2);
if(targets.length) event.goto(1); if(targets.length) event.goto(1);
else if(game.players.length<3){
delete _status.showYexings;
event.finish();
}
} }
else{ else{
if(targets.length) event.goto(1); if(targets.length) event.goto(1);
@ -13302,58 +13298,70 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'step 3' 'step 3'
var source=event.targets2.shift(); var source=event.targets2.shift();
event.source=source; event.source=source;
var targets=game.filterPlayer(function(current){ event.targets3=[];
return current.identity!='ye'&&current!=source&&!get.is.jun(current)&&!event.targets2.contains(current)&&!current.storage.yexinjia_friend; event.targets4=[source];
}).sortBySeat(source); if(!_status.yexinjia_list) _status.yexinjia_list=['夏','商','周','秦','汉','隋','唐','宋','辽','金','元','明'];
if(!targets.length){ source.chooseControl(_status.yexinjia_list).set('prompt','请选择自己所属的野心家势力的标识').set('ai',()=>(_status.yexinjia_list?_status.yexinjia_list.randomGet():0));
delete _status.showYexings;
event.finish();
}
else{
event.targets=targets;
source.chooseBool('是否发起【拉拢人心】?','令所有其他不为君主/暴露野心家的角色依次选择是否与你结盟。第一个选择加入的人将势力和胜利条件改为与你相同');
}
'step 4' 'step 4'
if(!result.bool){ var text,source=event.source;;
if(event.targets2.length) event.goto(3); if(result.control){
return; text=result.control;
_status.yexinjia_list.remove(result.control);
} }
else text=_status.yexinjia_list.randomRemove();
event.text=text;
game.broadcastAll(function(player,text){
player.setIdentity(text,'ye');
},source,text);
source.removeMark('yexinjia_mark',1);
var targets=game.filterPlayer(function(current){
return current.identity!='ye'&&current!=source&&!get.is.jun(current)&&!event.targets2.contains(current)&&!current.getStorage('yexinjia_friend').length;
});
if(!targets.length) event.goto(8);
else event.targets=targets;
'step 5' 'step 5'
var source=event.source;
var target=targets.shift(); var target=targets.shift();
event.target=target; event.target=target;
source.line(target,'green'); source.line(target,'green');
target.chooseBool('是否响应'+get.translation(source)+'发起的【拉拢人心】?','将势力改为野心家,且视为和该角色阵营相同').set('ai',function(){ target.chooseBool('是否响应'+get.translation(source)+'发起的【拉拢人心】?','将势力改为'+event.text+(['辽','金'].contains(event.text)?'':'朝')).set('choice',Math.random()<=0.98);//反骨[doge]
if(game.players.length<4) return true;
if(game.players.length<5) return Math.random()<0.5;
return Math.random()<0.3;
});
'step 6' 'step 6'
if(result.bool){ if(result.bool){
target.chat('加入'); target.chat('加入');
if(!_status.yexinjia_list) _status.yexinjia_list=['夏','商','周','秦','汉','隋','唐','宋','辽','金','元','明']; event.targets4.push(target);
source.chooseControl(_status.yexinjia_list).set('prompt','请选择自己所属的野心家势力的标识').set('ai',()=>(_status.yexinjia_list?_status.yexinjia_list.randomGet():0)); game.broadcastAll(function(player,target,text){
player.identity='ye';
player.setIdentity(text,'ye');
},target,event.source,event.text);
} }
else{ else{
target.chat('拒绝'); target.chat('拒绝');
game.delay(1.5); event.targets3.push(target);
if(targets.length) event.goto(5); }
else event.goto(8); game.delay(1.5);
if(targets.length) event.goto(5);
else if(event.targets4.length){
for(var i of event.targets4){
i.markAuto('yexinjia_friend',event.targets4.filter(j=>j!=i));
}
} }
'step 7' 'step 7'
game.broadcastAll(function(player,target,text){ if(event.targets3.length){
player.identity='ye'; for(var i of event.targets3){
source.setIdentity(text,'ye'); i.drawTo(4);
player.setIdentity(text,'ye'); i.recover();
player.storage.yexinjia_friend=target; }
},target,source,result.control); }
_status.yexinjia_list.remove(result.control);
target.markSkill('yexinjia_friend');
source.removeMark('yexinjia_mark',1);
target.drawTo(4);
target.recover();
'step 8' 'step 8'
if(event.targets2.length) event.goto(3); if(event.targets2.length) event.goto(3);
else delete _status.showYexings; else{
delete _status.showYexings;
if(!game.hasPlayer(current=>{
return game.hasPlayer(target=>{
return !target.isFriendOf(current);
});
})) game.checkResult();
}
}); });
}, },
getCharacterChoice:function(list,num){ getCharacterChoice:function(list,num){
@ -14830,6 +14838,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gzzhuidu_info:'出牌阶段限一次。当你造成伤害时你可以令受伤角色选择一项1.此伤害+12.弃置装备区里的所有牌。若该角色为女性,则你可以弃置一张牌,改为令其选择两项。', gzzhuidu_info:'出牌阶段限一次。当你造成伤害时你可以令受伤角色选择一项1.此伤害+12.弃置装备区里的所有牌。若该角色为女性,则你可以弃置一张牌,改为令其选择两项。',
gzshigong:'示恭', gzshigong:'示恭',
gzshigong_info:'限定技。当你于回合外进入濒死状态时你可以移除副将然后令当前回合角色选择一项1.获得你以此法移除的副将武将牌上的一个没有技能标签的技能然后令你将体力值回复至体力上限2.令你将体力值回复至1点。', gzshigong_info:'限定技。当你于回合外进入濒死状态时你可以移除副将然后令当前回合角色选择一项1.获得你以此法移除的副将武将牌上的一个没有技能标签的技能然后令你将体力值回复至体力上限2.令你将体力值回复至1点。',
gz_old_huaxiong:'华雄',
gzyaowu:'耀武', gzyaowu:'耀武',
gzyaowu_info:'限定技。当你造成伤害后你可以明置此武将牌然后你加2点体力上限并回复2点体力修改〖恃勇〗且当你死亡后所有与你势力相同的角色失去1点体力。', gzyaowu_info:'限定技。当你造成伤害后你可以明置此武将牌然后你加2点体力上限并回复2点体力修改〖恃勇〗且当你死亡后所有与你势力相同的角色失去1点体力。',
gzshiyong:'恃勇', gzshiyong:'恃勇',
@ -15614,7 +15623,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}, },
differentIdentityFrom:function(target,self){ differentIdentityFrom:function(target,self){
if(this==target) return false; if(this==target) return false;
if(this.storage.yexinjia_friend==target||target.storage.yexinjia_friend==this) return false; if(this.getStorage('yexinjia_friend').contains(target)) return false;
if(target.getStorage('yexinjia_friend').contains(this)) return false;
if(self){ if(self){
if(target.identity=='unknown') return false; if(target.identity=='unknown') return false;
if(target.identity=='ye'||this.identity=='ye') return true; if(target.identity=='ye'||this.identity=='ye') return true;
@ -15631,7 +15641,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
return this.identity!=target.identity; return this.identity!=target.identity;
}, },
sameIdentityAs:function(target,shown){ sameIdentityAs:function(target,shown){
if(this.storage.yexinjia_friend==target||target.storage.yexinjia_friend==this) return true; if(this.getStorage('yexinjia_friend').contains(target)) return true;
if(target.getStorage('yexinjia_friend').contains(this)) return true;
if(shown){ if(shown){
if(this.identity=='ye'||this.identity=='unknown') return false; if(this.identity=='ye'||this.identity=='unknown') return false;
} }
@ -15692,11 +15703,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
})); }));
} }
else if(that.identity=='ye'){ else if(that.identity=='ye'){
if((that.storage.yexinjia_friend&&source==that.storage.yexinjia_friend)||(source.storage.yexinjia_friend&&that==source.storage.yexinjia_friend)) source.discard(source.getCards('he')); if(that.getStorage('yexinjia_friend').contains(source)||source.getStorage('yexinjia_friend').contains(that)) source.discard(source.getCards('he'));
else source.draw(1+game.countPlayer(function(current){ else source.draw(1+game.countPlayer(function(current){
if(current==that) return false; if(current==that) return false;
if(current.storage.yexinjia_friend&&that==current.storage.yexinjia_friend) return true; if(current.getStorage('yexinjia_friend').contains(that)) return true;
if(that.storage.yexinjia_friend&&current==that.storage.yexinjia_friend) return true; if(that.getStorage('yexinjia_friend').contains(current)) return true;
return false; return false;
})); }));
} }
@ -16432,7 +16443,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'<div style="margin:10px">声明</div><ul style="margin-top:0"><li>以下所有规则均为根据公开爆料整理,经村规改动后制定的临时规则。不代表任何官方意见。请以后续发布的官方规则作为标准。</ul>' '<div style="margin:10px">声明</div><ul style="margin-top:0"><li>以下所有规则均为根据公开爆料整理,经村规改动后制定的临时规则。不代表任何官方意见。请以后续发布的官方规则作为标准。</ul>'
+'<div style="margin:10px">双势力武将</div><ul style="margin-top:0"><li>双势力武将牌可以和野心家武将牌/包含势力单武将牌/含有重叠势力的其他双势力武将牌组合,若你的主将为双势力武将,则:若你的副将为单势力武将牌,你的势力视为此势力;若你的副将为双势力武将,你的势力视为两张武将牌上的重叠势力(若重叠势力不止一个则需在游戏开始时选择一个作为自己的势力);野心家武将牌为主将,双势力武将牌为副将时,游戏开始时需选择一个副将所含势力作为副将的势力。<br><li>变更副将时,可以选择包含原势力的双势力武将牌。左慈发动【役鬼】时,可以使用双势力武将牌同时指定两个不同势力的角色为目标。<br><li>特殊地,“冈崎汐”作为多势力武将牌,结算流程和规则与其他双势力武将相同。</ul>' +'<div style="margin:10px">双势力武将</div><ul style="margin-top:0"><li>双势力武将牌可以和野心家武将牌/包含势力单武将牌/含有重叠势力的其他双势力武将牌组合,若你的主将为双势力武将,则:若你的副将为单势力武将牌,你的势力视为此势力;若你的副将为双势力武将,你的势力视为两张武将牌上的重叠势力(若重叠势力不止一个则需在游戏开始时选择一个作为自己的势力);野心家武将牌为主将,双势力武将牌为副将时,游戏开始时需选择一个副将所含势力作为副将的势力。<br><li>变更副将时,可以选择包含原势力的双势力武将牌。左慈发动【役鬼】时,可以使用双势力武将牌同时指定两个不同势力的角色为目标。<br><li>特殊地,“冈崎汐”作为多势力武将牌,结算流程和规则与其他双势力武将相同。</ul>'
+'<div style="margin:10px">野心家武将</div><ul style="margin-top:0"><li>野心家武将只能放在主将位置。副将可以为任意非野心家武将牌。<br><li>选择了野心家武将牌的角色(以下简称“野心家角色”)仅明置副将时,若副将为单势力武将牌,则势力暂时视为与该武将牌相同。若副将为双势力武将牌,则势力视为游戏开始时选择的副将代表的势力。<br><li>野心家角色明置主将时,其势力改为野心家。若其是首次明置该武将牌,则其获得一个“野心家”标记。<br><li>“野心家”标记可以当做“先驱”标记,“阴阳鱼”标记或是“珠联璧合”标记使用。当同时拥有两种标记时,优先弃置原装标记,下次发动时才弃置“野心家”标记。<br><li>野心家角色变更副将时,若其主将未明置过,则按照副将的势力进行变更。若主将已经明置过,则可以选择所有的非野心家武将牌。左慈发动【役鬼】时,可以使用野心家武将牌同时指定所有势力的角色为目标。' +'<div style="margin:10px">野心家武将</div><ul style="margin-top:0"><li>野心家武将只能放在主将位置。副将可以为任意非野心家武将牌。<br><li>选择了野心家武将牌的角色(以下简称“野心家角色”)仅明置副将时,若副将为单势力武将牌,则势力暂时视为与该武将牌相同。若副将为双势力武将牌,则势力视为游戏开始时选择的副将代表的势力。<br><li>野心家角色明置主将时,其势力改为野心家。若其是首次明置该武将牌,则其获得一个“野心家”标记。<br><li>“野心家”标记可以当做“先驱”标记,“阴阳鱼”标记或是“珠联璧合”标记使用。当同时拥有两种标记时,优先弃置原装标记,下次发动时才弃置“野心家”标记。<br><li>野心家角色变更副将时,若其主将未明置过,则按照副将的势力进行变更。若主将已经明置过,则可以选择所有的非野心家武将牌。左慈发动【役鬼】时,可以使用野心家武将牌同时指定所有势力的角色为目标。'
+'<br><li>当场上触发了胜利条件时,若这些角色中存在未明置过主将的野心家角色,则这些野心家角色选择是否“暴露野心”。若无人选择“是”且场上存在非野心家角色存活,则所有非野心家角色胜利,野心家角色失败。若有人选择“是”,则这些角色明置主将。然后若场上存活角色数大于等于3则这些角色选择是否发起“拉拢人心”<br><li>选择发起“拉拢人心”的野心家角色令所有其他非野心家角色和非君主角色依次选择是否和该野心家角色“结盟”。若有人选择“是”则野心家角色弃置“野心家”标记且该角色将势力改为野心家将手牌摸至四张并回复1点体力且视为和发起“拉拢人心”的野心家角色势力相同并终止对其他角色的询问。</ul>' +'<br><li>当场上触发了胜利条件时,若这些角色中存在未明置过主将的野心家角色,则这些野心家角色选择是否“暴露野心”。若无人选择“是”且场上存在非野心家角色存活,则所有非野心家角色胜利,野心家角色失败。若有人选择“是”,则这些角色明置主将,然后选择是否发起“拉拢人心”<br><li>选择发起“拉拢人心”的野心家角色选择一个新的势力作为自己的势力弃置“野心家”标记令所有其他非野心家角色且非君主且非已“结盟”角色依次选择是否和该野心家角色“结盟”。选择“是”的角色将势力改为和该野心家势力相同。此次“拉拢人心”对所有其他角色询问结束后所有选择“否”的角色将手牌摸至四张并回复1点体力。</ul>'
+'<div style="margin:10px">纵横捭阖</div><ul style="margin-top:0"><li>当一名角色对目标角色发动具有拥有“纵横”衍生技的技能时,其可以令对方获得“纵横”衍生技直到其下回合结束。</ul>', +'<div style="margin:10px">纵横捭阖</div><ul style="margin-top:0"><li>当一名角色对目标角色发动具有拥有“纵横”衍生技的技能时,其可以令对方获得“纵横”衍生技直到其下回合结束。</ul>',
}, },
}; };