commit
ed9d00205d
|
@ -487,8 +487,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var player=_status.event.player;
|
||||
var num=_status.event.num;
|
||||
var num2=player.getDamagedHp();
|
||||
if(num>num2) return 7-get.value(card);
|
||||
if(num==num2) return lib.skill.zhiheng.check(card);
|
||||
if(num<num2) return 8-get.value(card);
|
||||
if(num==num2||num2>=(2+num-num2)) return lib.skill.zhiheng.check(card);
|
||||
return 0;
|
||||
}).set('num',num).logSkill='clanxieshu';
|
||||
'step 1'
|
||||
|
|
|
@ -2031,7 +2031,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(trigger.targets&&trigger.targets.length){
|
||||
let result=yield player.chooseControl(['额外结算','摸一张牌']).set('prompt','实荐:请选择一项').set('prompt2',`令${get.translation(trigger.card)}额外结算一次,或摸一张牌`).set('ai',()=>{
|
||||
return get.event('choice');
|
||||
}).set('choice',['basic','trick'].includes(get.type(trigger.card))&&trigger.targets.map(i=>get.effect(i,trigger.card,target,player)).reduce((p,c)=>p+c,0)>=5?0:1);
|
||||
}).set('choice',function(){
|
||||
if(trigger.card.name==='tiesuo'||!['basic','trick'].includes(get.type(trigger.card))) return 1;
|
||||
if(trigger.targets.reduce((p,c)=>{
|
||||
return p+get.effect(c,trigger.card,target,_status.event.player);
|
||||
},0)>=get.effect(player,{name:'draw'},player,_status.event.player)) return 0;
|
||||
return 1;
|
||||
}());
|
||||
if(result.index==0){
|
||||
trigger.getParent().effectCount++;
|
||||
game.log(player,'令',trigger.card,'额外结算一次');
|
||||
|
|
|
@ -14594,7 +14594,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(event.current.needsToDiscard()){
|
||||
att=1;
|
||||
}
|
||||
player.chooseControlList(['令'+name+'摸一张牌展示','令'+name+'手牌上永久+1','弃置一张牌并令'+name+'获得一张本回进入弃牌堆的牌'],function(){
|
||||
player.chooseControlList(['令'+name+'摸一张牌展示','令'+name+'手牌上永久+1','弃置一张牌并令'+name+'获得一张本回合进入弃牌堆的牌'],function(){
|
||||
return _status.event.att;
|
||||
}).set('att',att);
|
||||
}
|
||||
|
|
|
@ -1830,7 +1830,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
let result;
|
||||
if(_status.connectMode) game.broadcastAll(()=>{_status.noclearcountdown=true});
|
||||
if(choices.length==1) result={control:choices[0]};
|
||||
else result=yield player.chooseControl(choices,'cancel2').set('choiceList',choiceList).set('prompt',get.prompt('dcxunjie')).set('ai',()=>{
|
||||
else result=yield player.chooseControl(choices,'cancel2').set('choiceList',choiceList).set('prompt',get.prompt('dcxunjie')).set('ai',()=>{
|
||||
return get.event('choice');
|
||||
}).set('choice',(()=>{
|
||||
const getValue=(index,target)=>{
|
||||
|
|
|
@ -5733,7 +5733,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var num=0;
|
||||
for(var i of cards) num+=get.number(i,player);
|
||||
num=num%13;
|
||||
if(num==0) num=13;
|
||||
if(num==0) num=13;
|
||||
var card=get.cardPile2(function(card){
|
||||
return get.number(card,false)==num;
|
||||
});
|
||||
|
@ -14293,34 +14293,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
filter:function(event,player){
|
||||
if(!player.storage.yizan&&player.countCards('hes')<2) return false;
|
||||
if(!player.hasCard(function(card){
|
||||
return get.type(card)=='basic';
|
||||
},'hs')) return false;
|
||||
for(var name of lib.inpile){
|
||||
if(get.type(name)!='basic') continue;
|
||||
if(event.filterCard(get.autoViewAs({name},'unsure'),player,event)) return true;
|
||||
if(name=='sha'){
|
||||
for(var nature of lib.inpile_nature){
|
||||
if(event.filterCard(get.autoViewAs({name,nature},'unsure'),player,event)) return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!player.hasCard(function(card){
|
||||
return get.type(card)=='basic';
|
||||
},'hs')) return false;
|
||||
for(var name of lib.inpile){
|
||||
if(get.type(name)!='basic') continue;
|
||||
if(event.filterCard(get.autoViewAs({name},'unsure'),player,event)) return true;
|
||||
if(name=='sha'){
|
||||
for(var nature of lib.inpile_nature){
|
||||
if(event.filterCard(get.autoViewAs({name,nature},'unsure'),player,event)) return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
var list=[];
|
||||
for(var name of lib.inpile){
|
||||
if(get.type(name)!='basic') continue;
|
||||
if(event.filterCard(get.autoViewAs({name},'unsure'),player,event)){
|
||||
list.push(['基本','',name]);
|
||||
}
|
||||
if(name=='sha'){
|
||||
for(var nature of lib.inpile_nature){
|
||||
if(event.filterCard(get.autoViewAs({name,nature},'unsure'),player,event)) list.push(['基本','','sha',nature]);
|
||||
}
|
||||
}
|
||||
}
|
||||
for(var name of lib.inpile){
|
||||
if(get.type(name)!='basic') continue;
|
||||
if(event.filterCard(get.autoViewAs({name},'unsure'),player,event)){
|
||||
list.push(['基本','',name]);
|
||||
}
|
||||
if(name=='sha'){
|
||||
for(var nature of lib.inpile_nature){
|
||||
if(event.filterCard(get.autoViewAs({name,nature},'unsure'),player,event)) list.push(['基本','','sha',nature]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ui.create.dialog('翊赞',[list,'vcard'],'hidden');
|
||||
},
|
||||
check:function(button){
|
||||
|
@ -15664,7 +15664,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sunru:['dc_sunru','sunru'],
|
||||
liuye:['dc_liuye','liuye'],
|
||||
zhaotongzhaoguang:['dc_zhaotongzhaoguang','zhaotongzhaoguang'],
|
||||
yangbiao:['yangbiao','dc_yangbiao','jsrg_yangbiao'],
|
||||
yangbiao:['yangbiao','dc_yangbiao','jsrg_yangbiao'],
|
||||
qiaozhou:['yj_qiaozhou','qiaozhou'],
|
||||
sunhanhua:['dc_sunhanhua','sunhanhua'],
|
||||
zhoubuyi:['zhoubuyi','yj_zhoubuyi'],
|
||||
|
|
|
@ -30,6 +30,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
fullskin:true,
|
||||
type:'equip',
|
||||
subtype:'equip1',
|
||||
get destroy(){
|
||||
return !lib.card.sizhaojian.inShanShanFestival();
|
||||
},
|
||||
inShanShanFestival(){
|
||||
//闪闪节外离开装备区会销毁
|
||||
const date=new Date();
|
||||
return date.getMonth()+1==3&&date.getDate()>=2&&date.getDate()<=15;
|
||||
},
|
||||
distance:{attackFrom:-1},
|
||||
ai:{basic:{equipValue:7}},
|
||||
skills:['olsbyufeng_sizhaojian'],
|
||||
|
@ -164,16 +172,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player:'enterGame',
|
||||
},
|
||||
filter(event,player){
|
||||
if(get.cardPile('sizhaojian','field')||lib.inpile.includes('sizhaojian')) return false;
|
||||
return (event.name!='phase'||game.phaseNumber==0)&&player.hasEquipableSlot(1);
|
||||
const card=get.cardPile('sizhaojian','field')||game.createCard2('sizhaojian','diamond',6);
|
||||
return (event.name!='phase'||game.phaseNumber==0)&&player.canEquip(card,true);
|
||||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
async content(event,trigger,player){
|
||||
game.broadcastAll(()=>lib.inpile.add('sizhaojian'));
|
||||
const card=game.createCard2('sizhaojian','diamond',6);
|
||||
player.$gain2(card,false);
|
||||
game.delayx();
|
||||
if(lib.card.sizhaojian.inShanShanFestival()){
|
||||
game.broadcastAll(()=>lib.inpile.add('sizhaojian'));
|
||||
}
|
||||
const card=get.cardPile('sizhaojian','field')||game.createCard2('sizhaojian','diamond',6);
|
||||
if(get.owner(card)) get.owner(card).$give(card,player,false);
|
||||
else{
|
||||
player.$gain2(card,false);
|
||||
game.delayx();
|
||||
}
|
||||
player.equip(card);
|
||||
},
|
||||
subSkill:{
|
||||
|
@ -205,8 +218,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
let evt=_status.event;
|
||||
if(evt.name!='chooseToUse') evt=evt.getParent('chooseToUse');
|
||||
if(!evt||!evt.respondTo||!storage.includes(evt.respondTo[1])) return;
|
||||
const num = get.number(card);
|
||||
if(num!='unsure' && (typeof num!='number' || num<=get.number(evt.respondTo[1]))) return false;
|
||||
const num=get.number(card);
|
||||
if(num!='unsure'&&typeof num=='number'&&num<get.number(evt.respondTo[1])) return false;
|
||||
},
|
||||
},
|
||||
onremove(player){
|
||||
|
@ -237,9 +250,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{global:['loseAfter','equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter']},
|
||||
filter(event,player){
|
||||
if(!player.hasEquipableSlot(1)||player.getEquip(1)||player.getEquip('sizhaojian')) return false;
|
||||
const card=get.cardPile('sizhaojian','field');
|
||||
if(!card||!player.canEquip(card,true)) return false;
|
||||
if(player.getEquip(1)) return false;
|
||||
const card=get.cardPile('sizhaojian','field')||game.createCard2('sizhaojian','diamond',6);
|
||||
if(!player.canEquip(card,true)) return false;
|
||||
return game.hasPlayer(target=>{
|
||||
if(target==player||target.group!='qun') return false;
|
||||
const evt=event.getl(target);
|
||||
|
@ -254,12 +267,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
const evt=trigger.getl(target);
|
||||
return evt&&evt.player==target&&evt.es&&evt.es.length>0;
|
||||
}).sortBySeat();
|
||||
const card=get.cardPile('sizhaojian','field');
|
||||
const card=get.cardPile('sizhaojian','field')||game.createCard2('sizhaojian','diamond',6);
|
||||
for(const target of targets){
|
||||
const {result:{bool}}=await target.chooseBool(get.prompt('olsbshishou',player),'将'+get.translation(card)+'置入'+get.translation(player)+'的装备区中').set('choice',get.attitude(target,player)>0);
|
||||
if(bool){
|
||||
target.logSkill('olsbshishou',player);
|
||||
if(get.owner(card)) get.owner(card).$give(card,player,false);
|
||||
else{
|
||||
player.$gain2(card,false);
|
||||
game.delayx();
|
||||
}
|
||||
player.equip(card);
|
||||
break;
|
||||
}
|
||||
|
@ -1027,11 +1044,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
olsbyufeng:'玉锋',
|
||||
olsbyufeng_sizhaojian:'思召剑',
|
||||
olsbyufeng_block:'思召剑',
|
||||
olsbyufeng_info:'游戏开始时,若【思召剑】未加入本局游戏,若你可装备【思召剑】,则你将【思召剑】置入装备区。',
|
||||
olsbyufeng_info:'游戏开始时,你将【思召剑】置入装备区。',
|
||||
sizhaojian:'思召剑',
|
||||
sizhaojian_info:'当你使用有点数的【杀】指定目标后,你令目标角色只能使用无点数或点数大于等于此【杀】的【闪】响应此牌。',
|
||||
sizhaojian_append:'<span class="text" style="font-family: yuanli">【思召剑】于闪闪节(3月2日-3月15日)外离开装备区后,销毁此牌</span>',
|
||||
olsbshishou:'士首',
|
||||
olsbshishou_info:'主公技,其他群势力角色失去装备区的牌后,若你的装备区中没有武器牌,且【思召剑】存在于场上/牌堆/弃牌堆中,其可令你将【思召剑】置入装备区。',
|
||||
olsbshishou_info:'主公技,其他群势力角色失去装备区的牌后,若你的装备区中没有武器牌,其可将【思召剑】置入你的装备区。',
|
||||
|
||||
onlyOL_yijiang1:'OL专属·将1',
|
||||
onlyOL_yijiang2:'OL专属·将2',
|
||||
|
|
|
@ -1039,6 +1039,7 @@ window.noname_character_rank={
|
|||
'jsrg_zhenji',
|
||||
'junk_xuyou',
|
||||
'sp_machao',
|
||||
'liupan',
|
||||
'mengyou',
|
||||
're_wenpin',
|
||||
'yue_zhoufei',
|
||||
|
|
|
@ -1141,7 +1141,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
if(!target){
|
||||
event.finish();
|
||||
return;
|
||||
return;
|
||||
}
|
||||
event.target=target;
|
||||
player.logSkill('sbqicai_gain',target);
|
||||
|
|
|
@ -7640,7 +7640,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 3'
|
||||
game.delayx();
|
||||
game.broadcastAll(function(onEnd){
|
||||
_status.event.onEnd01=onEnd;
|
||||
_status.event.onEnd01=onEnd;
|
||||
if(_status.guhuoNode) _status.guhuoNode.listenTransition(onEnd,300);
|
||||
},event.onEnd01);
|
||||
'step 4'
|
||||
|
|
|
@ -18,7 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_zhongdan:["cuiyan","huangfusong"],
|
||||
sp_guozhan2:["sp_dongzhuo","liqueguosi","zhangren"],
|
||||
sp_others:["hanba","caiyang"],
|
||||
sp_waitforsort:['ol_luyusheng','ol_pengyang','ol_tw_zhangji','ol_liwan','ol_liuyan','caoyu'],
|
||||
sp_waitforsort:['ol_luyusheng','ol_pengyang','ol_tw_zhangji','ol_liwan','ol_liuyan','caoyu','liupan'],
|
||||
},
|
||||
},
|
||||
characterFilter:{
|
||||
|
@ -30,6 +30,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
character:{
|
||||
liupan:['male','qun',4,['olpijing']],
|
||||
guotu:['male','qun',3,['olqushi','olweijie']],
|
||||
ol_hujinding:['female','shu',3,['olqingyuan','olchongshen']],
|
||||
tianchou:['male','qun',4,['olshandao']],
|
||||
|
@ -202,6 +203,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
luzhi:['male','wei',3,['qingzhong','weijing']]
|
||||
},
|
||||
characterIntro:{
|
||||
liupan:'刘磐(生卒年不详),山阳高平人,荆州牧刘表从子。与南阳人黄忠共守长沙攸县。为人骁勇,数次为寇于艾、西安诸县。江东孙策于是分海昏、建昌为左右六县,以东莱太史慈为建昌都尉,治海昏,并督诸将共拒刘磐。于是刘磐绝迹不复为寇。',
|
||||
guotu:'郭图(?-205年),字公则,颍川(治今河南省禹州市)人。东汉末年袁绍帐下谋士。韩馥统冀州时,郭图与荀谌等人奉袁绍之命,说服韩馥让位。袁绍统一河北后,郭图与审配等人力劝袁绍统率大军攻打曹操。袁绍死后,袁尚继位。郭图与辛评为袁谭效力,挑唆袁谭攻击袁尚。建安十年(205年),郭图和袁谭一同被曹操所杀。',
|
||||
tianchou:'田畴(169年或170年-214年或216年),字子泰,东汉右北平郡无终人,东汉末年隐士。田畴好文习武。汉初平年间,其受刘虞派遣去长安,呈送指控公孙赞奏章,献帝大悦,封为骑都尉,田畴不受。携诏返回时,刘虞已被公孙所杀,田畴到刘墓祭拜,被公孙所提,不久释放。田畴回故乡后率家族及随从数百人隐居徐无山,致力农桑,数年间增至5000家。制定法条,兴建学校,一时民风良好,乌桓、鲜卑纷纷与其结交。汉建安二十年(207年),曹操北征乌桓,田畴请为向导。上徐无山、出卢龙、过平冈、登白狼堆、至柳城,曹军大胜,封田畴为亭侯,坚辞不受。曹念田功,四次封赏,终不受,乃拜为议郎。建安二十一年(216年),田畴去世。',
|
||||
liyi:'李异(生卒年不详),三国时期东吴将领。建安末,与谢旌率水陆三千,击破刘备军将领詹晏、陈凤。刘备领兵攻孙权时,李异与陆逊等人屯巫、秭归,为蜀将所破。黄武元年(222年),陆逊破刘备于猇亭,李异追踪蜀军,屯驻南山。清代学者赵一清认为此李异与刘璋部将李异为同一人。',
|
||||
|
@ -708,6 +710,80 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
//刘磐
|
||||
olpijing:{
|
||||
audio:2,
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
filter(event,player){
|
||||
if(!game.hasPlayer(target=>target!=player&&!event.targets.includes(target)&&lib.filter.targetEnabled2(event.card,player,target)&&lib.filter.targetInRange(event.card,player,target))) return false;
|
||||
return get.color(event.card)=='black'&&(event.card.name=='sha'||get.type(event.card)=='trick')&&event.targets.length==1;
|
||||
},
|
||||
usable:1,
|
||||
direct:true,
|
||||
locked:false,
|
||||
async content(event,trigger,player){
|
||||
const num=Math.max(1,player.getDamagedHp());
|
||||
const {result:{bool,targets}}=await player.chooseTarget(get.prompt('olpijing'),[1,num],(card,player,target)=>{
|
||||
const trigger=get.event().getTrigger();
|
||||
return target!=player&&!trigger.targets.includes(target)&&lib.filter.targetEnabled2(trigger.card,player,target)&&lib.filter.targetInRange(trigger.card,player,target);
|
||||
}).set('ai',target=>{
|
||||
const player=get.event('player'),trigger=get.event().getTrigger();
|
||||
return get.effect(target,trigger.card,player,player)*(target.getStorage('olpijing_effect').includes(player)?2:1)+get.effect(target,{name:'shunshou_copy2'},player,player);
|
||||
}).set('prompt2','令至多'+get.cnNumber(num)+'名角色成为'+get.translation(trigger.card)+'的目标并交给你一张牌');
|
||||
if(bool){
|
||||
player.logSkill('olpijing',targets);
|
||||
trigger.targets.addArray(targets);
|
||||
for(const target of targets){
|
||||
target.addSkill('olpijing_effect');
|
||||
target.markAuto('olpijing_effect',[player]);
|
||||
await target.chooseToGive(player,'he',true,'披荆:交给'+get.translation(player)+'一张牌');
|
||||
}
|
||||
}
|
||||
else player.storage.counttrigger.olpijing--;
|
||||
},
|
||||
mod:{
|
||||
aiOrder(player,card,num){
|
||||
if(!(card.name=='sha'||get.type(card)=='trick')||get.color(card)!='black') return;
|
||||
const info=get.info(card);
|
||||
if(info&&!info.notarget&&(info.toself||info.singleCard||!info.selectTarget||info.selectTarget==1)&&game.countPlayer(target=>{
|
||||
if(get.effect(target,card,player,player)<=0) return false;
|
||||
return lib.filter.targetEnabled2(card,player,target)&&lib.filter.targetInRange(card,player,target);
|
||||
})>1) return num+0.01;
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
intro:{content:'使用的下一张基本牌或普通锦囊牌指定唯一目标时,可指定$为额外目标或摸一张牌'},
|
||||
trigger:{player:'useCardToPlayer'},
|
||||
filter(event,player){
|
||||
return (get.type(event.card)=='basic'||get.type(event.card)=='trick')&&event.targets.length==1;
|
||||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
async content(event,trigger,player){
|
||||
const storage=player.getStorage('olpijing_effect');
|
||||
player.removeSkill('olpijing_effect');
|
||||
const {result:{bool,targets}}=await player.chooseTarget('披荆:请选择此牌的额外目标',[1,storage.length],(card,player,target)=>{
|
||||
const trigger=get.event().getTrigger();
|
||||
return !trigger.targets.includes(target)&&get.event('storage').includes(target)&&lib.filter.targetEnabled2(trigger.card,player,target)&&lib.filter.targetInRange(trigger.card,player,target);
|
||||
}).set('prompt2','不选择的角色视为你选择摸牌项').set('ai',target=>{
|
||||
const player=get.event('player'),trigger=get.event().getTrigger();
|
||||
return get.effect(target,trigger.card,player,player)-get.effect(player,{name:'draw'},player,player);
|
||||
}).set('storage',storage);
|
||||
if(bool){
|
||||
player.line(targets);
|
||||
trigger.targets.addArray(targets);
|
||||
if(storage.length-targets.length>0){
|
||||
player.draw(storage.length-targets.length);
|
||||
}
|
||||
}
|
||||
else player.draw(storage.length);
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//郭图
|
||||
olqushi:{
|
||||
audio:2,
|
||||
|
@ -14050,6 +14126,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var cards=result.cards;
|
||||
target.addToExpansion(cards,player,'give').gaintag.add('zlshoufu2');
|
||||
player.line(target,'green');
|
||||
if(get.mode()!=='identity'||player.identity!=='nei') player.addExpose(0.12);
|
||||
target.addSkill('zlshoufu2');
|
||||
'step 3'
|
||||
game.delayx();
|
||||
|
@ -27392,6 +27469,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
olqushi_info:'出牌阶段限一次,你可以摸一张牌,然后将一张手牌扣置于一名其他角色的武将牌上,称为“趋”。目标角色于其结束阶段移去武将牌上的所有“趋”,若其于本回合使用过与“趋”相同类别的牌,则你摸X张牌(X为其本回合使用牌指定过的目标数之和且至多为5)。',
|
||||
olweijie:'诿解',
|
||||
olweijie_info:'每回合限一次,你的回合外,当你需要使用或打出一张基本牌时,你可以弃置距离为1的一名角色的一张手牌,若此牌牌名与你需要使用或打出的牌的牌名相同,则视为你使用或打出之。',
|
||||
liupan:'刘磐',
|
||||
olpijing:'披荆',
|
||||
olpijing_info:'每回合限一次,当你使用黑色【杀】或黑色普通锦囊牌指定唯一目标后,你可以令至多X名其他角色成为此牌的额外目标并依次交给你一张牌(X为你已损失的体力值且X至少为1)。这些角色下次使用基本牌或普通锦囊牌指定唯一目标时,其可令你成为此牌的额外目标或摸一张牌。',
|
||||
|
||||
sp_tianji:'天极·皇室宗亲',
|
||||
sp_sibi:'四弼·辅国文曲',
|
||||
|
|
|
@ -3445,15 +3445,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
switch(type){
|
||||
case 'basic':
|
||||
if(sha>0&&get.name(card)=='sha'){
|
||||
if(sha>0&&get.name(i)=='sha'){
|
||||
sha--;
|
||||
var add=3;
|
||||
if(!player.hasValueTarget(card)&&player.hasValueTarget(card,false)) add+=player.getUseValue(card,false);
|
||||
if(!player.hasValueTarget(i)&&player.hasValueTarget(i,false)) add+=player.getUseValue(i,false);
|
||||
eff+=add;
|
||||
}
|
||||
break
|
||||
case 'trick':
|
||||
if(player.hasValueTarget(card)) eff+=6;
|
||||
if(player.hasValueTarget(i)) eff+=6;
|
||||
break;
|
||||
case 'equip':
|
||||
if(player.hasValueTarget({name:'guohe_copy2'})) eff+=player.getUseValue({name:'guohe_copy2'});
|
||||
|
@ -3470,15 +3470,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(type==control) continue;
|
||||
switch(type){
|
||||
case 'basic':
|
||||
if(sha>0&&get.name(card)=='sha'){
|
||||
if(sha>0&&get.name(i)=='sha'){
|
||||
sha--;
|
||||
var add=3;
|
||||
if(!player.hasValueTarget(card)&&player.hasValueTarget(card,false)) add+=player.getUseValue(card,false);
|
||||
if(!player.hasValueTarget(i)&&player.hasValueTarget(i,false)) add+=player.getUseValue(i,false);
|
||||
eff+=add;
|
||||
}
|
||||
break
|
||||
case 'trick':
|
||||
if(player.hasValueTarget(card)) eff+=6;
|
||||
if(player.hasValueTarget(i)) eff+=6;
|
||||
break;
|
||||
case 'equip':
|
||||
if(player.hasValueTarget({name:'guohe_copy2'})) eff+=player.getUseValue({name:'guohe_copy2'});
|
||||
|
|
|
@ -6403,7 +6403,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return !player.hasHistory('useSkill',function(evt){
|
||||
return evt.skill=='twshuangren';
|
||||
})&&!player.hasHistory('sourceDamage',function(evt){
|
||||
return evt.card.name=='sha';
|
||||
return evt.card&&evt.card.name=='sha';
|
||||
});
|
||||
},
|
||||
direct:true,
|
||||
|
@ -15889,7 +15889,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
twkujian_info:'出牌阶段限一次。你可以将至多三张手牌交给一名其他角色,称为“谏”,你获得以下效果:当其他角色使用或打出牌后,若其中有“谏”,你与其各摸一张牌;当其他角色不因使用或打出而失去牌后,若其中有“谏”,你与其各弃置一张牌。',
|
||||
twruilian:'睿敛',
|
||||
twruilian2:'睿敛',
|
||||
twruilian_info:'一轮游戏开始时,你可以选择一名角色。其下回合结束时,若其本回弃置过至少两张其的牌,你可以选择其本回合弃置过的一种类别,你与其各从弃牌堆中获得一张此类别的牌。',
|
||||
twruilian_info:'一轮游戏开始时,你可以选择一名角色。其下回合结束时,若其本回合弃置过至少两张牌,你可以选择其本回合弃置过的一种类别,你与其各从弃牌堆中获得一张此类别的牌。',
|
||||
tw_xiahouen:'夏侯恩',
|
||||
twfujian:'负剑',
|
||||
twfujian_info:'锁定技。①游戏开始时或准备阶段,若你的装备区里没有武器牌,你随机将牌堆中的一张武器牌置入装备区。②当你于回合外失去武器牌后,你失去1点体力。',
|
||||
|
|
|
@ -154,10 +154,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ai:{
|
||||
order:9,
|
||||
result:{
|
||||
player:1,
|
||||
player:function(player,target){
|
||||
if(player.storage.dcsbquanmou) return 1;
|
||||
return 1+game.countPlayer(i=>player!==i&&target!==i&&!i.hasSkill('false_mark')&&get.attitude(player,i)<0);
|
||||
},
|
||||
target:function(player,target){
|
||||
if(!player.storage.dcsbquanmou) return 1.2;
|
||||
return -0.2;
|
||||
let res=target.hasSkillTag('noh')?0:-1;
|
||||
if(player.storage.dcsbquanmou) return res+0.6;
|
||||
return res;
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -218,6 +222,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ai:{
|
||||
threaten:2.5,
|
||||
effect:{
|
||||
target(card,player,target){
|
||||
if(get.tag(card,'damage')&&player&&player.hasSkill('dcsbquanmou_true')){
|
||||
let tars=game.countPlayer(i=>player!==i&&target!==i&&get.damageEffect(i,player,player)>0);
|
||||
return [1,0,1,6*Math.min(3,tars)/(3+Math.pow(target.countCards('h'),2))];
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
false:{
|
||||
|
@ -253,10 +265,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
ai:{
|
||||
filterDamage:true,
|
||||
nodamage:true,
|
||||
nofire:true,
|
||||
nothunder:true,
|
||||
skillTagFilter(player,tag,arg){
|
||||
return (arg&&arg.player&&arg.player.hasSkill('dcsbquanmou_false'));
|
||||
},
|
||||
effect:{
|
||||
target(card,player,target){
|
||||
if(get.tag(card,'damage')&&player&&player.hasSkill('dcsbquanmou_false')) return 'zeroplayertarget';
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -13416,8 +13435,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.draw();
|
||||
'step 1'
|
||||
var next=player.chooseTarget().set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.damageEffect(target,player,player)
|
||||
let player=_status.event.player;
|
||||
if(target.hasSkillTag('filterDamage',null,{
|
||||
player:player
|
||||
},true)) return get.damageEffect(target,player,player);
|
||||
return 2*get.damageEffect(target,player,player);
|
||||
});
|
||||
if(!['identity','guozhan'].includes(get.mode())){
|
||||
next.set('prompt','选择一名体力值最大的敌方角色,对其造成2点伤害');
|
||||
|
@ -13445,9 +13467,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ai:{
|
||||
result:{
|
||||
target:function(player,target){
|
||||
if(!['identity','guozhan'].includes(get.mode())) return 1;
|
||||
var target=game.filterPlayer(i=>i!=player).sort((a,b)=>b.hp-a.hp)[0];
|
||||
return target&&get.damageEffect(target,player,player)>0?1:0;
|
||||
let es;
|
||||
if(['identity','guozhan'].includes(get.mode())) es=game.hasPlayer(i=>{
|
||||
return i!=player&&!game.hasPlayer(j=>{
|
||||
return player!==j&&j.hp>i.hp;
|
||||
})&&get.attitude(player,i)<0;
|
||||
});
|
||||
else es=game.hasPlayer(i=>{
|
||||
return i.isEnemyOf(player)&&!game.hasPlayer(j=>{
|
||||
return j.hp>i.hp&&j.isEnemyOf(player);
|
||||
})&&get.attitude(player,i)<0;
|
||||
});
|
||||
if(es) return 2;
|
||||
return -1.5;
|
||||
},
|
||||
},
|
||||
order:12,
|
||||
|
@ -13456,26 +13488,38 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
subSkill:{
|
||||
dying:{
|
||||
trigger:{global:'dying'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
var evt=event.getParent(2);
|
||||
if(!evt||evt.name!='kuiji_content'||evt.player!=player) return false;
|
||||
var list=game.filterPlayer(function(current){
|
||||
return current.isFriendOf(player);
|
||||
}).sort(function(a,b){
|
||||
return a.hp-b.hp;
|
||||
});
|
||||
return (list.length==1||list[0].hp<list[1].hp)&&list[0].isDamaged();
|
||||
let evt=event.getParent(2);
|
||||
return evt&&evt.name=='kuiji';
|
||||
},
|
||||
locked:true,
|
||||
direct:true,
|
||||
content:function(){
|
||||
var list=game.filterPlayer(function(current){
|
||||
return current.isFriendOf(player);
|
||||
}).sort(function(a,b){
|
||||
return a.hp-b.hp;
|
||||
})[0];
|
||||
player.logSkill('kuiji',list);
|
||||
list.recover();
|
||||
'step 0'
|
||||
var list;
|
||||
if(['identity','guozhan'].includes(get.mode())) list=game.filterPlayer(current=>{
|
||||
return current!==trigger.player&&!game.hasPlayer(i=>{
|
||||
return trigger.player!==i&&i.hp<current.hp;
|
||||
});
|
||||
}).filter(i=>i.isDamaged());
|
||||
else list=game.filterPlayer(current=>{
|
||||
return current.isFriendOf(player)&&!game.hasPlayer(i=>{
|
||||
return i.hp<current.hp&&i.isFriendOf(player);
|
||||
});
|
||||
}).filter(i=>i.isDamaged());
|
||||
if(list.length>1) player.chooseTarget('溃击:选择一名角色回复1点体力',(card,player,target)=>{
|
||||
return _status.event.list.includes(target);
|
||||
},true).set('list',list).set('ai',target=>{
|
||||
return get.recoverEffect(target,player,_status.event.player);
|
||||
});
|
||||
else if(list.length) event._result={bool:true,targets:list};
|
||||
else event._result={bool:false};
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
let target=result.targets[0];
|
||||
player.logSkill('kuiji',target);
|
||||
target.recover();
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
@ -4342,8 +4342,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
longxi2:'龙息',
|
||||
longxi_info:'锁定技,在回合外每当你需要使用或打出一张卡牌时,若牌堆顶的前两张中有可使用或打出的牌,你立即获得之。',
|
||||
zhuyue:'逐月',
|
||||
zhuyue_info:'出牌阶段限一次,你可以弃置一张非基本牌并指定至多两个目标各随机弃置一张牌,若如此做,你本回使用的杀须指定选中角色为目标。',
|
||||
zhuyue_info_alter:'出牌阶段限一次,你可以弃置一张黑色非基本牌并指定至多两个目标各随机弃置一张牌,若如此做,你本回使用的杀须指定选中角色为目标。',
|
||||
zhuyue_info:'出牌阶段限一次,你可以弃置一张非基本牌并指定至多两个目标各随机弃置一张牌,若如此做,你本回合使用的杀须指定选中角色为目标。',
|
||||
zhuyue_info_alter:'出牌阶段限一次,你可以弃置一张黑色非基本牌并指定至多两个目标各随机弃置一张牌,若如此做,你本回合使用的杀须指定选中角色为目标。',
|
||||
guanri:'贯日',
|
||||
guanri_info:'限制技,你可以弃置两张红色手牌并失去1点体力,然后对一名体力值不少于你的其他角色造成2点火焰伤害并弃置其所有装备牌。',
|
||||
tianxian:'天弦',
|
||||
|
|
|
@ -13963,7 +13963,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
chengong:['chengong','re_chengong','sb_chengong'],
|
||||
xunyou:['xunyou','re_xunyou'],
|
||||
xuezong:['xuezong','tw_xuezong'],
|
||||
huanghao:['huanghao','dc_huanghao','old_huanghao'],
|
||||
huanghao:['huanghao','dc_huanghao','old_huanghao'],
|
||||
caorui:['caorui','re_caorui','old_caorui'],
|
||||
sunziliufang:['sunziliufang','dc_sunziliufang'],
|
||||
liyan:['liyan','old_liyan'],
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 51 KiB |
Binary file not shown.
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 47 KiB |
|
@ -10587,10 +10587,10 @@ return event.junling=='junling5'?1:0;});
|
|||
if(huoshao&&player.inline(target.getNext())) return -3;
|
||||
if(target.isUnseen()) return 0;
|
||||
if(player.isMajor()) return 0;
|
||||
if(!player.isMajor()&&huoshao&&player.getNext().isMajor()) return -2;
|
||||
if(!player.isMajor()&&huoshao&&player.getNext().isMajor()&&player.getNext().getNext().isMajor()) return -3;
|
||||
if(!player.isMajor()&&huoshao&&!target.isMajor()&&target.getNext().isMajor()&&target.getNext().getNext().isMajor()) return 3;
|
||||
if(!player.isMajor()&&huoshao&&!target.isMajor()&&target.getNext().isMajor()) return 1.5;
|
||||
if(!player.isMajor()&&huoshao&&player.getNext().isMajor()) return -2;
|
||||
if(!player.isMajor()&&huoshao&&player.getNext().isMajor()&&player.getNext().getNext().isMajor()) return -3;
|
||||
if(!player.isMajor()&&huoshao&&!target.isMajor()&&target.getNext().isMajor()&&target.getNext().getNext().isMajor()) return 3;
|
||||
if(!player.isMajor()&&huoshao&&!target.isMajor()&&target.getNext().isMajor()) return 1.5;
|
||||
return 1;
|
||||
},
|
||||
target:function(player,target){
|
||||
|
|
|
@ -580,7 +580,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
case 'fan':list[i]='反贼';break;
|
||||
case 'zhong':list[i]='忠臣';break;
|
||||
case 'nei':list[i]='内奸';break;
|
||||
case 'commoner':list[i]='平民'; break;
|
||||
case 'commoner':list[i]='平民'; break;
|
||||
case 'zhu':list[i]='主公';break;
|
||||
case 'enemy':list[i]='敌方';break;
|
||||
case 'friend':list[i]='友方';break;
|
||||
|
@ -737,7 +737,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
switch(me.identity){
|
||||
case 'fan':game.over(false);break;
|
||||
case 'zhong':game.over(true);break;
|
||||
case 'commoner':game.over(true); break;
|
||||
case 'commoner':game.over(true); break;
|
||||
default:game.over();break;
|
||||
}
|
||||
}
|
||||
|
@ -745,7 +745,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
switch(me.identity){
|
||||
case 'fan':game.over(true);break;
|
||||
case 'zhong':game.over(false);break;
|
||||
case 'commoner':game.over(true); break;
|
||||
case 'commoner':game.over(true); break;
|
||||
default:game.over();break;
|
||||
}
|
||||
}
|
||||
|
@ -765,7 +765,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
else if(me.identity=='nei'){
|
||||
if(game.players.length==(1+game.players.filter(i=>i.identity=='commoner').length)&&me.isAlive()){
|
||||
if(game.players.length==(1+game.players.filter(i=>i.identity=='commoner').length)&&me.isAlive()){
|
||||
game.over(true);
|
||||
}
|
||||
else{
|
||||
|
@ -781,8 +781,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
game.over(false);
|
||||
}
|
||||
}
|
||||
else if(me.identity=='commoner'){
|
||||
game.over(true);
|
||||
else if(me.identity=='commoner'){
|
||||
game.over(true);
|
||||
}
|
||||
},
|
||||
checkOnlineResult:function(player){
|
||||
|
@ -794,7 +794,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
if(game.zhu.isAlive()){
|
||||
return (player.identity=='zhu'||player.identity=='zhong'||player.identity=='mingzhong'||player.identity=='commoner'&&player.isAlive());
|
||||
}
|
||||
else if(game.players.length==(1+game.players.filter(i=>i.identity=='commoner').length)&&game.players[0].identity=='nei'||game.players[0].identity=='commoner'){
|
||||
else if(game.players.length==(1+game.players.filter(i=>i.identity=='commoner').length)&&game.players[0].identity=='nei'||game.players[0].identity=='commoner'){
|
||||
return player.isAlive();
|
||||
}
|
||||
else{
|
||||
|
@ -1568,9 +1568,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
link=['zhu','zhong','nei','fan','mingzhong'].randomGet();
|
||||
}
|
||||
else{
|
||||
var listi=['zhu','zhong','nei','fan'];
|
||||
if(get.config('enable_commoner')&&!event.stratagemMode) listi.push('commoner');
|
||||
link=listi.randomGet();
|
||||
var listi=['zhu','zhong','nei','fan'];
|
||||
if(get.config('enable_commoner')&&!event.stratagemMode) listi.push('commoner');
|
||||
link=listi.randomGet();
|
||||
}
|
||||
for(var i=0;i<this.parentNode.childElementCount;i++){
|
||||
if(this.parentNode.childNodes[i].link==link){
|
||||
|
@ -2712,7 +2712,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
if(this.identity=='fan'&&source) source.draw(3);
|
||||
else if(this.identity=='commoner'&&source) source.draw(2);
|
||||
else if(this.identity=='commoner'&&source) source.draw(2);
|
||||
else if(this.identity=='mingzhong'&&source){
|
||||
if(source.identity=='zhu'){
|
||||
source.discard(source.getCards('he'));
|
||||
|
@ -3506,11 +3506,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
game.players[i].ai.shown<1){
|
||||
identity2='nei';break;
|
||||
}
|
||||
else if(game.players[i].identity=='commoner'&&
|
||||
game.players[i].ai.identity_mark=='zhong'&&
|
||||
game.players[i].ai.shown<1){
|
||||
identity2='commoner'; break;
|
||||
}
|
||||
else if(game.players[i].identity=='commoner'&&
|
||||
game.players[i].ai.identity_mark=='zhong'&&
|
||||
game.players[i].ai.shown<1){
|
||||
identity2='commoner'; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
var zhongmode=false;
|
||||
|
@ -3596,13 +3596,13 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
if(zhongmode&&to.ai.sizhong&&to.ai.shown<1) return 6;
|
||||
return Math.min(3,-situation);
|
||||
case 'fan': return -8;
|
||||
case 'commoner':
|
||||
return Math.min(3,Math.max(-3,situation-0.2));
|
||||
case 'commoner':
|
||||
return Math.min(3,Math.max(-3,situation-0.2));
|
||||
}
|
||||
break;
|
||||
case 'nei':
|
||||
if(identity2=='zhu'&&game.players.length==2) return -10;
|
||||
if(from!=to&&identity2!='zhu'&&identity2!='commoner'&&game.players.length==3) return -8;
|
||||
if(from!=to&&identity2!='zhu'&&identity2!='commoner'&&game.players.length==3) return -8;
|
||||
var strategy=get.aiStrategy();
|
||||
if(strategy==4){
|
||||
if(from==to) return 10;
|
||||
|
@ -3706,8 +3706,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
if(game.zhu&&game.zhu.hp<=2) return -1;
|
||||
return Math.min(3,situation);
|
||||
case 'fan': return 5;
|
||||
case 'commoner':
|
||||
return 2*get.population('fan')-3;
|
||||
case 'commoner':
|
||||
return 2*get.population('fan')-3;
|
||||
}
|
||||
break;
|
||||
case 'commoner':
|
||||
|
|
|
@ -1414,7 +1414,7 @@ export class Create extends Uninstantable {
|
|||
packlist.push(lib.config.all.characters[i]);
|
||||
}
|
||||
for (var i in lib.characterPack) {
|
||||
if (!lib.config.all.characters.includes(i)) {
|
||||
if (lib.config.characters.includes(i) && !lib.config.all.characters.includes(i)) {
|
||||
packlist.push(i);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue