Merge pull request #830 from mengxinzxz/PR-Branch

部分新武将
This commit is contained in:
Spmario233 2024-01-21 11:12:48 +08:00 committed by GitHub
commit 11ef8585f3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 758 additions and 99 deletions

View File

@ -232,7 +232,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
case '鹤':
return true;
case '猿':
return game.hasPlayer(target=>target!=playertarget.countGainableCards(player,'e'));
return game.hasPlayer(target=>target!=player&&target.countGainableCards(player,'e'));
default:
return false;
}

View File

@ -1634,9 +1634,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcminze:{
audio:2,
enable:'phaseUse',
filter:function(event,player){
return !player.hasSkill('dcminze_ban');
},
filterTarget:function(card,player,target){
if(player.getStorage('dcminze_targeted').includes(target)) return false;
return target.countCards('h')<player.countCards('h');
@ -1653,16 +1650,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
delay:false,
group:'dcminze_draw',
content:function(){
'step 0'
player.give(cards,target);
player.addTempSkill('dcminze_targeted','phaseUseAfter');
player.markAuto('dcminze_targeted',[target]);
player.addTempSkill('dcminze_given');
player.markAuto('dcminze_given',cards.map(i=>get.name(i,player)));
'step 1'
if(target.countCards('h')>player.countCards('h')){
player.addTempSkill('dcminze_ban','phaseUseAfter');
}
},
ai:{
order:6.5,
@ -1670,7 +1662,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
subSkill:{
targeted:{onremove:true,charlotte:true},
ban:{charlotte:true},
given:{
charlotte:true,
onremove:true,
@ -11494,7 +11485,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dczuowei_info:'当你于回合内使用牌时你可以根据你的手牌数执行对应效果大于X令此牌不可被响应等于X对一名其他角色造成1点伤害小于X摸两张牌且不能于本回合再触发该选项X为你装备区里牌的数量且至少为1。',
liuchongluojun:'刘宠骆俊',
dcminze:'悯泽',
dcminze_info:'①出牌阶段每名角色限一次。你可以将至多两张牌名不同的牌交给一名手牌数小于你的角色,若其因此手牌数大于你,〖悯泽①〗于此阶段失效。②结束阶段你将手牌摸至X张X为你本回合因〖悯泽①〗失去过的牌的牌名数且至多为5。',
dcminze_info:'①出牌阶段每名角色限一次。你可以将至多两张牌名不同的牌交给一名手牌数小于你的角色。②结束阶段你将手牌摸至X张X为你本回合因〖悯泽①〗失去过的牌的牌名数且至多为5。',
dcjini:'击逆',
dcjini_info:'当你受到伤害后你可以重铸至多Y张手牌Y为你的体力上限减本回合你以此法重铸过的牌数。若你以此法获得了【杀】你可以对伤害来源使用一张无视距离且不可被响应的【杀】。',
yuechen:'乐綝',

View File

@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
characterSort:{
mobile:{
mobile_default:['mb_chengui','mb_huban','mb_xianglang','yanxiang','xin_wuban','laimin','baoxin','jiangji','liwei','xin_guozhao',"miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang","qianzhao",'shichangshi'],
mobile_default:['xin_huojun','muludawang','mb_chengui','mb_huban','mb_xianglang','yanxiang','xin_wuban','laimin','baoxin','jiangji','liwei','xin_guozhao',"miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang","qianzhao",'shichangshi'],
mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning",'yj_huangzhong','yj_weiyan','yj_zhoubuyi'],
mobile_standard:["xin_xiahoudun","xin_zhangfei"],
mobile_shenhua_feng:['re_xiaoqiao',"xin_zhoutai"],
@ -26,6 +26,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
xin_huojun:['male','shu',4,['sidai','jieyu'],['character:tw_huojun','die_audio:tw_huojun']],
muludawang:['male','qun','3/3/1',['shoufa','yuxiang','zhoulin']],
mb_chengui:['male','qun',3,['guimou','zhouxian']],
mb_huban:['male','wei',4,['mbyilie']],
mb_xianglang:['male','shu',3,['naxue','yijie']],
@ -176,6 +178,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
scs_gaowang:['male','qun','',['scsmiaoyu'],['unseen','sex:male_castrated']],
},
characterIntro:{
muludawang:'古典小说《三国演义》中的虚构人物,八纳洞主,孟获盟友。擅驱兽法,能行风雨,控制猛兽并指挥它们作战。在法术帮助下最初对蜀军取得一些胜利,但在诸葛亮的喷火木兽将他的动物吓跑后战败,最后死于乱军之中。',
laimin:'来敏165年—261年字敬达义阳新野人东汉太中大夫来歙之后司空来艳之子三国时期蜀汉官员。东汉末年逢董卓之乱来敏跟随姐夫黄琬到荆州避难黄琬是刘璋祖母的侄子来敏又与姐姐来氏入蜀被刘璋引为宾客。来敏喜欢读书尤其喜欢《左氏春秋》。刘备平定益州后以来敏为典学校尉后立太子来敏为家令。刘禅继位后任命来敏为虎贲中郎将诸葛亮驻汉中请来敏为军祭酒、辅军将军。却因其口出狂言而被罢官诸葛亮死后来敏历任大长秋、光禄大夫、执慎将军等职期间多次因说错话而被免官蜀汉景耀年间来敏去世时年九十七岁。',
shichangshi:'十常侍指中国东汉公元25年—220年灵帝时期168年-189年操纵政权的十二个宦官张让、赵忠、夏恽、郭胜、孙璋、毕岚、栗嵩、段珪、高望、张恭、韩悝、宋典在小说《三国演义》里十常侍指的是指张让、赵忠、封谞、段珪、曹节、侯览、蹇硕、程旷、夏恽、郭胜十人他们都任职中常侍。玩弄小皇帝于股掌之中以至灵帝称“张常侍是我父赵常侍是我母”。十常侍自己横征暴敛卖官鬻爵他们的父兄子弟遍布天下横行乡里祸害百姓无官敢管。人民不堪剥削、压迫纷纷起来反抗。当时一些比较清醒的官吏已看出宦官集团的黑暗腐败导致大规模农民起义的形势。郎中张钧在给皇帝的奏章中明确指出黄巾起义是外戚宦官专权逼出来的他说“张角所以能兴兵作乱万人所以乐附之者其源皆由十常侍多放父兄、子弟、婚宗、宾客典据州郡辜确财利侵略百姓百姓之怨无所告诉故谋议不轨聚为盗贼。”后被曹操、袁绍所歼。',
sunzhang:'孙璋(?-189年东汉末期汉灵帝的宦官官居中常侍为十常侍之一在张让、赵忠之下位居第三。光熹元年189年张让、赵忠、段珪等诛杀何进袁绍率军入宫诛杀孙璋。',
@ -391,6 +394,255 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//霍骏
sidai:{
audio:'twsidai',
enable:'phaseUse',
usable:1,
locked:false,
limited:true,
skillAnimation:true,
animationColor:'fire',
filter:function(event,player){
var cards=player.getCards('h',{type:'basic'});
if(!cards.length) return false;
for(var i of cards){
if(!game.checkMod(i,player,'unchanged','cardEnabled2',player)) return false;
}
return event.filterCard(get.autoViewAs({name:'sha',storage:{sidai:true}},cards),player,event);
},
viewAs:{name:'sha',storage:{sidai:true}},
filterCard:{type:'basic'},
selectCard:-1,
check:()=>1,
onuse:function(result,player){
player.awakenSkill('sidai');
player.addTempSkill('sidai_tao');
player.addTempSkill('sidai_shan');
},
ai:{
order:function(item,player){
return get.order({name:'sha'},player)+0.1;
},
result:{
target:function(player,target){
var cards=ui.selected.cards.slice(0);
var names=[];
for(var i of cards) names.add(i.name);
if(names.length<player.hp) return 0;
if(player.hasUnknown()&&(player.identity!='fan'||!target.isZhu)) return 0;
if(get.attitude(player,target)>=0) return -20;
return lib.card.sha.ai.result.target.apply(this,arguments);
},
},
},
subSkill:{
tao:{
trigger:{source:'damageSource'},
filter:function(event,player){
if(!event.card||!event.card.storage||!event.card.storage.sidai||!event.player.isIn()) return false;
for(var i of event.cards){
if(i.name=='tao') return true;
}
return false;
},
forced:true,
popup:false,
content:function(){
trigger.player.loseMaxHp();
},
},
shan:{
trigger:{player:'useCardToPlayered'},
filter:function(event,player){
if(!event.card||!event.card.storage||!event.card.storage.sidai||!event.target.isIn()) return false;
for(var i of event.cards){
if(i.name=='shan') return true;
}
return false;
},
forced:true,
popup:false,
content:function(){
'step 0'
trigger.target.chooseToDiscard('h',{type:'basic'},'弃置一张基本牌,否则不能响应'+get.translation(trigger.card)).set('ai',function(card){
var player=_status.event.player;
if(player.hasCard('hs',function(cardx){
return cardx!=card&&get.name(cardx,player)=='shan';
})) return 12-get.value(card);
return 0;
});
'step 1'
if(!result.bool) trigger.directHit.add(trigger.target);
},
},
},
},
jieyu:{
audio:'twjieyu',
trigger:{player:'phaseJieshuBegin'},
filter:function(event,player){
for(var i=0;i<ui.discardPile.childElementCount;i++){
if(get.type(ui.discardPile.childNodes[i])=='basic') return true;
}
return false;
},
prompt2:function(event,player){
const num=lib.skill.jieyu.getNum(player,true);
return '获得弃牌堆中'+get.cnNumber(num)+'张'+(num>1?'牌名各不相同的':'')+'基本牌';
},
async content(event,trigger,player){
const num=lib.skill.jieyu.getNum(player,false);
let gains=[],names=lib.inpile.filter(name=>get.type(name)=='basic').randomGets(num);
names.forEach(name=>{
let card=get.discardPile(card=>card.name==name);
if(name) gains.push(card);
});
if(gains.length) player.gain(gains,'gain2');
},
getNum:function(player,goon){
let num=3,bool=goon;
const history=game.getAllGlobalHistory('everything');
for(let i=history.length-1;i>=0;i--){
const evt=history[i];
if(evt.name=='useSkill'&&evt.player==player&&evt.skill=='jieyu'){
if(!bool) bool=true;
else break;
}
if(evt.name=='useCard'&&evt.player!=player&&evt.targets&&evt.targets.includes(player)&&get.tag(evt.card,'damage')){
num--;
if(num==1) break;
}
}
return num;
},
},
//木鹿大王
shoufa:{
audio:2,
trigger:{
player:'damageEnd',
source:'damageSource',
},
filter:function(event,player,name){
if(name=='damageSource'&&player.getHistory('sourceDamage').indexOf(event)!=0) return false;
return game.hasPlayer(target=>{
if(name=='damageEnd') return get.distance(player,target)>2;
return get.distance(player,target)<=2;
});
},
direct:true,
async content(event,trigger,player){
const zhoufa=player.storage.zhoulin_zhoufa;
const str=zhoufa?[
'令其受到1点无来源伤害',
'你随机获得其一张牌',
'你随机弃置其装备区的一张牌',
'令其摸一张牌',
][['豹','鹰','熊','兔'].indexOf(zhoufa)]:'令其随机执行一个效果';
const {result:{bool,targets}}=await player.chooseTarget(get.prompt('shoufa'),'选择一名距离'+(event.triggername=='damageEnd'?'':'不')+'大于2的角色'+str,(card,player,target)=>{
const name=_status.event.name;
if(name=='damageEnd'&&get.distance(player,target)<=2) return false;
if(name=='damageSource'&&get.distance(player,target)>2) return false;
const zhoufa=player.storage.zhoulin_zhoufa;
if(!zhoufa) return true;
if(zhoufa=='豹'||zhoufa=='兔') return true;
if(zhoufa=='鹰') return target.countCards('he');
return target.countDiscardableCards(player,'e');
}).set('ai',target=>{
const player=_status.event.player;
const zhoufa=player.storage.zhoulin_zhoufa;
if(!zhoufa) return -get.attitude(player,target);
switch(zhoufa){
case '豹':
return get.damageEffect(target,player,player);
case '鹰':
return get.effect(target,{name:'guohe_copy2'},player,player);
case '熊':
let att=get.attitude(player,target),eff=0;
target.getCards('e',card=>{
var val=get.value(card,target);
eff=Math.max(eff,-val*att);
});
return eff;
case '兔':
return get.effect(target,{name:'draw'},player,player);
}
}).set('name',event.triggername);
if(!bool) return;
const target=targets[0];
player.logSkill('shoufa',target);
const shoufa=zhoufa?zhoufa:['豹','鹰','熊','兔'].randomGet();
game.log(target,'执行','#g'+shoufa,'效果');
switch(shoufa){
case '豹':
target.damage('nosource');
break;
case '鹰':
player.gain(target.getGainableCards(player,'he'),target,'giveAuto');
break;
case '熊':
target.discard(target.getGainableCards(player,'e').randomGet()).discarder=player;
break;
case '兔':
target.draw();
break;
}
},
},
yuxiang:{
mod:{
globalFrom(from,to,distance){
if(from.hujia>0) return distance-1;
},
globalTo(from,to,distance){
if(to.hujia>0) return distance+1;
},
},
audio:2,
trigger:{player:'damageBegin2'},
filter:function(event,player){
return player.hujia>0&&event.hasNature('fire');
},
forced:true,
async content(event,trigger,player){
trigger.num++;
},
},
zhoulin:{
audio:2,
limited:true,
unique:true,
enable:'phaseUse',
skillAnimation:true,
animationColor:'fire',
async content(event,trigger,player){
player.awakenSkill('zhoulin');
player.changeHujia(2,null,true);
const {result:{control}}=await player.chooseControl('豹','鹰','熊','兔').set('ai',()=>'豹').set('prompt','选择一个固定效果');
if(control){
player.popup(control);
game.log(player,'选择了','#g'+control,'效果');
player.addTempSkill('zhoulin_zhoufa');
player.storage.zhoulin_zhoufa=control;
player.markSkill('zhoulin_zhoufa');
game.broadcastAll(function(player,zhoufa){
if(player.marks.zhoulin_zhoufa) player.marks.zhoulin_zhoufa.firstChild.innerHTML=zhoufa;
},player,control);
}
},
ai:{
order:12,
result:{player:1},
},
subSkill:{
zhoufa:{
charlotte:true,
onremove:true,
intro:{content:'已选择$效果'},
},
}
},
//陈珪
guimou:{
audio:2,
@ -15380,6 +15632,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mobilexingxue:function(player){
return lib.translate[(player.storage.mobileyanzhu?'mobilexingxuex':'mobilexingxue')+'_info'];
},
shoufa:function(player){
const zhoufa=player.storage.zhoulin_zhoufa;
if(!zhoufa) return '当你受到伤害后/于一回合首次造成伤害后,你可以选择一名与你距离大于/不大于2的角色令其随机执行以下一项令其受到1点无来源伤害你随机获得其一张牌你随机弃置其装备区的一张牌令其摸一张牌。';
let str='当你受到伤害后/于一回合首次造成伤害后,你可以选择一名与你距离大于/不大于2的角色';
str+=[
'令其受到1点无来源伤害',
'你随机获得其一张牌',
'你随机弃置其装备区的一张牌',
'令其摸一张牌',
][['豹','鹰','熊','兔'].indexOf(zhoufa)];
return str;
},
},
perfectPair:{
simazhao:['simayi','jin_simayi','jin_wangyuanji'],
@ -16247,6 +16511,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mbyilie2:'义烈',
mbyilie3:'义烈',
mbyilie_info:'锁定技。①游戏开始时你选择一名其他角色然后你获得以下效果其受到伤害时若你的“烈”标记数小于2则你获得等同于伤害值的“烈”标记然后防止此伤害其对其他角色造成伤害后你回复1点体力。②结束阶段若你有“烈”标记你摸X张牌并失去X点体力然后移去所有“烈”标记X为你拥有的“烈”标记数。',
muludawang:'木鹿大王',
shoufa:'兽法',
shoufa_info:'当你受到伤害后/于一回合首次造成伤害后,你可以选择一名与你距离大于/不大于2的角色令其随机执行以下一项令其受到1点无来源伤害你随机获得其一张牌你随机弃置其装备区的一张牌令其摸一张牌。',
yuxiang:'御象',
yuxiang_info:'锁定技,若你有护甲值,则:①你计算与其他角色的距离-1其他角色计算与你的距离+1②当你受到火焰伤害时此伤害+1。',
zhoulin:'咒鳞',
zhoulin_info:'限定技出牌阶段你可以获得2点护甲值然后选择一个“兽法”效果你发动〖兽法〗的执行效果改为你选择的效果直到你的下个回合结束。',
xin_huojun:'手杀霍峻',
xin_huojun_prefix:'手杀',
sidai:'伺怠',
sidai_info:'限定技出牌阶段你可以将手牌区内的所有基本牌当做【杀】使用。若此牌对应的实体牌中包含【闪】则目标角色成为此牌的目标后需弃置一张基本牌否则不可响应此牌包含【桃】则当目标角色受到此牌的伤害后其减1点体力上限。',
jieyu:'竭御',
jieyu_info:'结束阶段你可以从弃牌堆中获得共X张不同牌名的基本牌X为3-你上次发动〖竭御〗至今你成为其他角色使用伤害类卡牌目标的次数且X至少为1。',
mobile_standard:'手杀异构·标准包',
mobile_shenhua_feng:'手杀异构·其疾如风',

View File

@ -5,6 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sb',
connect:true,
character:{
sb_caopi:['male','wei',3,['sbxingshang','sbfangzhu','sbsongwei'],['zhu']],
sb_guanyu:['male','shu',4,['sbwusheng','sbyijue']],
sb_huangyueying:['female','shu',3,['sbjizhi','sbqicai']],
sb_sp_zhugeliang:['male','shu',3,['sbhuoji','sbkanpo']],
@ -55,6 +56,392 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
skill:{
//曹丕
sbxingshang:{
audio:2,
trigger:{global:['die','damageEnd']},
usable:1,
forced:true,
locked:false,
async content(event,trigger,player){
player.addMark('sbxingshang',1);
},
marktext:'颂',
intro:{
name:'颂',
content:'mark',
},
ai:{threaten:2.5},
group:'sbxingshang_use',
subSkill:{
use:{
audio:'sbxingshang',
enable:'phaseUse',
filter:function(event,player){
return game.hasPlayer(target=>{
if(player.countMark('sbxingshang')>1) return true;
return player.countMark('sbxingshang')&&(target.isLinked()||target.isTurnedOver());
});
},
usable:1,
chooseButton:{
dialog:function(){
var dialog=ui.create.dialog(
'行殇:请选择你要执行的一项',
[[
[1,'   ⒈复原一名角色的武将牌   '],
[2,'   ⒉令一名角色摸'+Math.min(5,Math.max(1,game.dead.length))+'张牌   '],
],'tdnodes'],
[[
[3,'   ⒊令一名体力上限小于10的角色加1点体力上限并回复1点体力然后随机恢复一个被废除的装备栏   '],
],'tdnodes'],
[[
[4,'   ⒋获得一名已阵亡角色的所有技能,然后失去武将牌上的所有技能   '],
],'tdnodes']
);
return dialog;
},
filter:function(button,player){
if(button.link>player.countMark('sbxingshang')) return false;
switch(button.link){
case 1:
return game.hasPlayer(target=>target.isLinked()||target.isTurnedOver());
case 2:
return true;
case 3:
return game.hasPlayer(target=>target.maxHp<10);
case 4:
return game.dead.length;
}
},
check:function(button){
let player=_status.event.player;
switch(button.link){
case 1:
return game.filterPlayer(current=>get.attitude(player,current)>0).reduce((list,target)=>{
let num=0;
if(target.isLinked()) num+=0.5;
if(target.isTurnedOver()) num+=10;
list.push(num);
return list;
},[]).sort((a,b)=>b-a)[0];
case 2:
return Math.min(5,Math.max(1,game.dead.length));
case 3:
return game.filterPlayer().reduce((list,target)=>{
list.push(get.recoverEffect(target,player,player));
return list;
},[]).sort((a,b)=>b-a)[0];
case 4:
return game.dead.reduce((list,target)=>{
let num=0;
if(target.name&&lib.character[target.name]) num+=get.rank(target.name,true);
if(target.name2&&lib.character[target.name2]) num+=get.rank(target.name2,true);
list.push(num);
return list;
},[]).sort((a,b)=>b-a)[0];
}
},
backup:function(links,player){
return {
num:links[0],
audio:'sbxingshang',
filterTarget:function(card,player,target){
switch(lib.skill.sbxingshang_use_backup.num){
case 1:
return target=>target.isLinked()||target.isTurnedOver();
case 2:
return true;
case 3:
return target.maxHp<10;
case 4:
return target==player;
}
},
selectTarget:()=>lib.skill.sbxingshang_use_backup.num==4?-1:1,
async content(event,trigger,player){
const target=event.targets[0];
const num=lib.skill.sbxingshang_use_backup.num;
player.removeMark('sbxingshang',num);
switch(num){
case 1:
if(target.isLinked()) target.link(false);
if(target.isTurnedOver()) target.turnOver();
break;
case 2:
target.draw(Math.min(5,Math.max(1,game.dead.length)));
break;
case 3:
target.gainMaxHp();
target.recover();
let list=[];
for (let i=1;i<=5;i++){
if(target.hasDisabledSlot(i)) list.push('equip'+i);
}
if(list.length) target.enableEquip(list.randomGet());
break;
case 4:
let map={};
game.dead.forEach(target=>map[target.playerid]=get.translation(target));
const {result:{control}}=await player.chooseControl(Object.values(map)).set('ai',()=>{
const getNum=(target)=>{
let num=0;
if(target.name&&lib.character[target.name]) num+=get.rank(target.name,true);
if(target.name2&&lib.character[target.name2]) num+=get.rank(target.name2,true);
return num;
};
let controls=_status.event.controls.slice();
controls=controls.map(name=>[name,game.dead.find(target=>_status.event.map[target.playerid]==name)]);
controls.sort((a,b)=>getNum(b[1])-getNum(a[1]));
return controls[0][0];
}).set('prompt','获得一名已阵亡角色的所有技能').set('map',map);
if(control){
const target2=game.dead.find(targetx=>map[targetx.playerid]==control);
player.line(target2);
game.log(player,'选择了',target2);
const skills=target2.getStockSkills(true,true);
const skills2=player.getStockSkills(true,true);
player.addSkillLog(skills);
player.removeSkillLog(skills2);
}
}
},
ai:{
result:{
target:function(player,target){
switch(lib.skill.sbxingshang_use_backup.num){
case 1:
let num=0;
if(target.isLinked()) num+=0.5;
if(target.isTurnedOver()) num+=10;
return num;
case 2:
return 1;
case 3:
return get.recoverEffect(target,player,player);
case 4:
return 1;
}
},
},
},
}
},
prompt:function(links,player){
switch(links[0]){
case 1:
return '复原一名角色的武将牌';
case 2:
return '令一名角色摸'+get.cnNumber(Math.min(5,Math.max(1,game.dead.length)))+'张牌';
case 3:
return '令一名体力上限小于10的角色加1点体力上限并回复1点体力然后随机恢复一个被废除的装备栏';
case 4:
return '获得一名已阵亡角色的所有技能,然后失去武将牌上的所有技能';
}
}
},
ai:{
order:9,
result:{player:1},
},
},
use_backup:{},
},
},
sbfangzhu:{
audio:2,
enable:'phaseUse',
filter:function(event,player){
return player.countMark('sbxingshang')>1;
},
usable:1,
chooseButton:{
dialog:function(){
var dialog=ui.create.dialog('放逐:请选择你要执行的一项','hidden');
dialog.add([[
[1,'移去2个“颂”标记令一名其他角色的非Charlotte技能失效直到其回合结束'],
[2,'移去2个“颂”标记令一名其他角色不能响应除其外的角色使用的牌直到其回合结束'],
[3,'移去3个“颂”标记令一名其他角色将武将牌翻面'],
[4,'移去3个“颂”标记令一名其他角色只能使用你选择的一种类型的牌直到其回合结束']
],'textbutton']);
return dialog;
},
filter:function(button,player){
if(button.link>2&&player.countMark('sbxingshang')<3) return false;
if(button.link==4) return game.hasPlayer(target=>target!=player&&!target.hasSkill('sbfangzhu_ban'));
return true;
},
check:function(button){
let player=_status.event.player;
switch(button.link){
case 1:
return game.filterPlayer(current=>get.attitude(player,current)<0).reduce((list,target)=>{
let num=0;
if(target.name&&lib.character[target.name]) num+=get.rank(target.name,true);
if(target.name2&&lib.character[target.name2]) num+=get.rank(target.name2,true);
list.push(num);
return list;
},[]).sort((a,b)=>b-a)[0];
case 2:
return 0;
case 3:
return game.filterPlayer(target=>target!=player&&!target.hasSkill('sbfangzhu_ban')).reduce((list,target)=>{
if(get.attitude(player,target)>0&&target.isTurnedOver()) list.push(10*target.countCards('hs')+1);
else if(get.attitude(player,target)<0&&!target.isTurnedOver()) list.push(5*target.countCards('hs')+1);
else list.push(0);
return list;
},[]).sort((a,b)=>b-a)[0];
case 4:
return 0;
}
},
backup:function(links,player){
return {
num:links[0],
audio:'sbfangzhu',
filterTarget:lib.filter.notMe,
async content(event,trigger,player){
const target=event.target;
const num=lib.skill.sbfangzhu_backup.num;
player.removeMark('sbxingshang',num>2?3:2);
switch(num){
case 1:
target.removeSkill('baiban');
target.addTempSkill('baiban',{player:'phaseEnd'});
break;
case 2:
target.addTempSkill('sbfangzhu_kill',{player:'phaseEnd'});
break;
case 3:
target.turnOver();
break;
case 4:
const {result:{control}}=await player.chooseControl('basic','trick','equip').set('ai',()=>'equip').set('prompt','放逐:请选择'+get.translation(target)+'仅能使用的类别的牌');
if(control){
player.line(target);
player.popup(get.translation(control)+'牌');
target.addTempSkill('sbfangzhu_ban',{player:'phaseEnd'});
target.markAuto('sbfangzhu_ban',[control]);
}
}
},
ai:{
result:{
target:function(player,target){
switch(lib.skill.sbfangzhu_backup.num){
case 1:
let num=0;
if(target.name&&lib.character[target.name]) num+=get.rank(target.name,true);
if(target.name2&&lib.character[target.name2]) num+=get.rank(target.name2,true);
return num;
case 2:
return 0;
case 3:
if(get.attitude(player,target)>0&&target.isTurnedOver()) return 10*target.countCards('hs')+1;
if(get.attitude(player,target)<0&&!target.isTurnedOver()) return -5*target.countCards('hs')+1;
return 0;
case 4:
return 0;
}
},
},
},
}
},
prompt:function(links,player){
switch(links[0]){
case 1:
return '移去2个“颂”标记令一名其他角色的非Charlotte技能失效直到其回合结束';
case 2:
return '移去2个“颂”标记令一名其他角色不能响应除其外的角色使用的牌直到其回合结束';
case 3:
return '移去3个“颂”标记令一名其他角色将武将牌翻面';
case 4:
return '移去3个“颂”标记令一名其他角色只能使用你选择的一种类型的牌直到其回合结束';
}
}
},
ai:{
order:9,
result:{player:1},
},
subSkill:{
backup:{},
kill:{
charlotte:true,
mark:true,
marktext:'禁',
intro:{content:'不能响应其他角色使用的牌'},
trigger:{global:'useCard1'},
filter:function(event,player){
return event.player!=player;
},
forced:true,
popup:false,
async content(event,trigger,player){
trigger.directHit.add(player);
},
},
ban:{
charlotte:true,
onremove:true,
mark:true,
marktext:'禁',
intro:{
markcount:()=>0,
content:'只能使用$牌',
},
mod:{
cardEnabled:function(card,player){
if(!player.getStorage('sbfangzhu_ban').includes(get.type2(card))) return false;
},
cardSavable:function(card,player){
if(!player.getStorage('sbfangzhu_ban').includes(get.type2(card))) return false;
},
},
},
},
},
sbsongwei:{
audio:2,
trigger:{player:'phaseUseBegin'},
filter:function(event,player){
return game.hasPlayer(target=>target.group=='wei'&&target!=player);
},
zhuSkill:true,
forced:true,
locked:false,
async content(event,trigger,player){
player.addMark('sbxingshang',game.countPlayer(target=>target.group=='wei'&&target!=player));
},
group:'sbsongwei_delete',
subSkill:{
delete:{
audio:'sbsongwei',
enable:'phaseUse',
filter:function(event,player){
return game.hasPlayer(target=>lib.skill.sbsongwei.subSkill.delete.filterTarget(null,player,target));
},
filterTarget:function(card,player,target){
return target!=player&&target.group=='wei'&&target.getStockSkills(false,true).length;
},
skillAnimation:true,
animationColor:'thunder',
async content(event,trigger,player){
player.awakenSkill('sbsongwei_delete');
event.target.removeSkillLog(event.target.getStockSkills(false,true));
},
ai:{
order:13,
result:{
target:function(player,target){
return -target.getStockSkills(false,true).length;
},
},
},
},
},
},
//关羽
//矢
sbwusheng:{
@ -254,19 +641,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
filter:function(event,player){
if(!game.hasPlayer(target=>target!=player&&target.hasEmptySlot(2))) return false;
return player.countCards('h',card=>lib.skill.sbqicai.filterCardx(card,player))||event.sbqicai&&event.sbqicai.length;
},
filterCardx:function(card,player){
if(player.getStorage('sbqicai').includes(card.name)) return false;
return get.type(card)=='equip'&&get.subtype(card)=='equip2';
//if(player.getStorage('sbqicai').includes(card.name)) return false;
return get.type(card)=='equip'&&get.hasPlayer(target=>target!=player&&target.hasEmptySlot(get.subtype(card)));
},
usable:1,
chooseButton:{
dialog:function(event,player){
const list1=player.getCards('h',card=>lib.skill.sbqicai.filterCardx(card,player));
const list2=event.sbqicai;
var dialog=ui.create.dialog('###奇才###<div class="text center">请选择一张防具牌置入一名其他角色的装备区</div>');
var dialog=ui.create.dialog('###奇才###<div class="text center">请选择一张装备牌置入一名其他角色的装备区</div>');
if(list1.length){
dialog.add('<div class="text center">手牌区</div>');
dialog.add(list1);
@ -281,7 +667,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(button){
var player=_status.event.player;
var num=get.value(button.link);
if(!game.hasPlayer(target=>target!=player&&target.hasEmptySlot(2)&&get.attitude(player,target)>0)) num=1/(get.value(button.link)||0.5);
if(!game.hasPlayer(target=>target!=player&&target.hasEmptySlot(get.subtype(button.link))&&get.attitude(player,target)>0)) num=1/(get.value(button.link)||0.5);
if(get.owner(button.link)) return num;
return num*5;
},
@ -310,7 +696,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target.$gain2(cards);
game.delayx();
}
player.markAuto('sbqicai',[cards[0].name]);
//player.markAuto('sbqicai',[cards[0].name]);
target.equip(cards[0]);
player.addSkill('sbqicai_gain');
lib.skill.sbqicai.updateCounter(player,target,0);
@ -556,7 +942,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sbkanpo:{
init:function(player){
if(!player.storage.sbkanpo){
player.storage.sbkanpo=[3,[],[]];
player.storage.sbkanpo=[4,[],[]];
player.markSkill('sbkanpo');
}
},
@ -5951,7 +6337,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sbhuoji:'火计',
sbhuoji_info:'使命技。①使命出牌阶段限一次。你可以对一名其他角色造成1点火焰伤害然后你对所有与其势力相同的不为其的其他角色各造成1点火焰伤害。②成功准备阶段若你本局游戏已造成的火焰伤害不小于本局游戏总角色数则你失去〖火计〗和〖看破〗然后获得〖观星〗和〖空城〗。③失败使命成功前进入濒死状态。',
sbkanpo:'看破',
sbkanpo_info:'①一轮游戏开始时,你清除〖看破①〗记录的牌名,然后你可以依次记录任意个未于上次发动〖看破①〗记录清除过的非装备牌牌名(对其他角色不可见,每局游戏至多记录3个牌名)。②其他角色使用你〖看破①〗记录过的牌名的牌时,你可以移去一个〖看破①〗中的此牌名的记录令此牌无效,然后你摸一张牌。',
sbkanpo_info:'①一轮游戏开始时,你清除〖看破①〗记录的牌名,然后你可以依次记录任意个未于上次发动〖看破①〗记录清除过的非装备牌牌名(对其他角色不可见,每局游戏至多记录4个牌名)。②其他角色使用你〖看破①〗记录过的牌名的牌时,你可以移去一个〖看破①〗中的此牌名的记录令此牌无效,然后你摸一张牌。',
sbguanxing:'观星',
sbguanxing_info:'①准备阶段你将所有“星”置入弃牌堆将牌堆顶的X张牌置于你的武将牌上称为“星”X为7-此前发动〖观星①〗次数的三倍且X至少为0。然后你可以将任意张“星”置于牌堆顶。②结束阶段若你未于本回合的准备阶段将“星”置于过牌堆顶你可以将任意张“星”置于牌堆顶。③你可以如手牌般使用或打出“星”。',
sbkongcheng:'空城',
@ -5960,7 +6346,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sb_huangyueying_prefix:'谋',
sbqicai:'奇才',
sbqicai_backup:'奇才',
sbqicai_info:'①出牌阶段限一次。你可以将手牌中或弃牌堆中的一张防具牌置于一名其他角色的防具栏,然后其获得如下效果:当其得到普通锦囊牌后,其将此牌交给你(限三张)。②你使用锦囊牌无距离限制。',
sbqicai_info:'①出牌阶段限一次。你可以将手牌中或弃牌堆中的一张装备牌置于一名其他角色的对应装备栏,然后其获得如下效果:当其得到普通锦囊牌后,其将此牌交给你(限三张)。②你使用锦囊牌无距离限制。',
sbjizhi:'集智',
sbjizhi_info:'锁定技,当你使用一张普通锦囊牌时,你摸一张牌,且此牌本回合不计入你的手牌上限。',
sb_guanyu:'谋关羽',
@ -5970,6 +6356,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sbwusheng_info:'你可以将一张手牌当作任意【杀】使用或打出。出牌阶段开始时,你可以选择一名非主公的其他角色,本阶段对其使用【杀】无距离和次数限制,使用【杀】指定其为目标后摸一张牌,对其使用五张【杀】后不能对其使用【杀】。',
sbyijue:'义绝',
sbyijue_info:'锁定技,每名角色每局游戏限一次,当你对一名角色造成大于等于其体力值的伤害时,你防止此伤害,且本回合你使用牌指定其为目标后,取消之。',
sb_caopi:'谋曹丕',
sb_caopi_prefix:'谋',
sbxingshang:'行殇',
sbxingshang_info:'①每回合限一次当一名角色死亡时或受到伤害时你获得1个“颂”标记。②出牌阶段限一次你可以1.移去1个“颂”标记令一名角色复原武将牌2.移去2个“颂”标记令一名角色摸X张牌X为场上阵亡角色数且X至少为1至多为53.移去3个“颂”标记令一名体力上限小于10的角色加1点体力上限回复1点体力随机恢复一个已废除的装备栏4.移去4个“颂”标记获得一名阵亡角色武将牌上的所有技能然后你失去武将牌上的所有技能。',
sbfangzhu:'放逐',
sbfangzhu_info:'出牌阶段限一次你可以1.移去2个“颂”标记令一名其他角色的非Charlotte技能失效直到其回合结束2.移去2个“颂”标记令一名其他角色不能响应除其以为的角色使用的牌直到其回合结束3.移去2个“颂”标记令一名其他角色将武将牌翻面4.移去2个“颂”标记令一名其他角色只能使用你选择的一种类型的牌直到其回合结束。',
sbsongwei:'颂威',
sbsongwei_info:'①出牌阶段开始时你获得Y个“颂”标记Y为场上其他魏势力角色数。②每局游戏限一次出牌阶段你可以令一名其他魏势力角色失去所有武将牌的技能。',
sb_zhi:'谋攻篇·知',
sb_shi:'谋攻篇·识',

View File

@ -7718,7 +7718,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_yuanshao:['re_yuanshao','ol_yuanshao','xin_yuanshao','sb_yuanshao'],
pangde:['re_pangde','ol_pangde','pangde'],
yanwen:['yanwen','ol_yanwen','re_yanwen'],
caopi:['caopi','re_caopi','ps_caopi'],
caopi:['caopi','re_caopi','ps_caopi','sb_caopi'],
xuhuang:['re_xuhuang','ol_xuhuang','sb_xuhuang','xuhuang'],
menghuo:['menghuo','re_menghuo','sb_menghuo'],
zhurong:['zhurong','ol_zhurong','re_zhurong','sb_zhurong'],

View File

@ -862,16 +862,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(evt.gaintag_map[i].includes('dcjiaoxia_used')) return true;
}
return false;
}).length&&player.getHistory('sourceDamage',evt=>evt.card==event.card).length&&!['delay','equip'].includes(get.type(event.cards[0],player));
}).length&&player.getHistory('sourceDamage',evt=>evt.card==event.card).length&&player.hasUseTarget(event.cards[0]);
},
direct:true,
content:function(){
var card={
name:get.name(trigger.cards[0],player),
nature:get.nature(trigger.cards[0],player),
isCard:true,
};
player.chooseUseTarget(card,get.prompt('dcjiaoxia'),false,false).set('prompt2','视为使用'+get.translation(card)).logSkill='dcjiaoxia';
player.chooseUseTarget(trigger.cards[0],get.prompt('dcjiaoxia'),false,false).set('prompt2','使用'+get.translation(card)).logSkill='dcjiaoxia';
},
},
},
@ -5335,10 +5330,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
reliewei:{
audio:'liewei',
trigger:{global:'dying'},
frequent:true,
filter:function(event,player){
return player==_status.currentPhase;
return player==_status.currentPhase||player.getHistory('useSkill',evt=>evt.skill=='reliewei').length<player.getHp();
},
frequent:true,
content:function(){
player.draw();
},
@ -10895,7 +10890,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jiaojie:'狡黠',
jiaojie_info:'锁定技,你的红色牌不计入手牌上限。你使用黑色牌无距离和次数限制。',
dcjiaoxia:'狡黠',
dcjiaoxia_info:'①出牌阶段开始时,你可以令自己的所有手牌于此阶段均视为【杀】。若如此做,你使用以此法转化的【杀】造成伤害后,你可以视为使用此牌对应的原卡牌。②出牌阶段,你对你本阶段未使用过【杀】的角色使用【杀】无距离和次数限制。',
dcjiaoxia_info:'①出牌阶段开始时,你可以令自己的所有手牌于此阶段均视为【杀】。若如此做,你使用以此法转化的【杀】造成伤害后,你可以使用此牌对应的原卡牌。②出牌阶段,你对你本阶段未使用过【杀】的角色使用【杀】无距离和次数限制。',
dchumei:'狐魅',
dchumei_info:'出牌阶段各限一次你可以选择一名体力值不大于X的角色令其①摸一张牌。②交给你一张牌。③回复1点体力。X为你本阶段造成的伤害数',
buchen:'不臣',
@ -10953,7 +10948,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
recuorui:'摧锐',
recuorui_info:'限定技出牌阶段你可以依次获得至多X名角色的各一张手牌X为你的体力值。',
reliewei:'裂围',
reliewei_info:'当有角色于你的回合内进入濒死状态时,你可以摸一张牌。',
reliewei_info:'每回合限Y次当有角色于你的回合内进入濒死状态时,你可以摸一张牌Y为你的体力值若当前回合角色为你则Y为Infinity。',
duanwei:'段煨',
langmie:'狼灭',
langmie_damage:'狼灭',

View File

@ -2654,7 +2654,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcjianguo:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return !player.hasSkill('dcjianguo_0')||!player.hasSkill('dcjianguo_1');
},
chooseButton:{
dialog:function(event,player){
var dialog=ui.create.dialog('谏国:请选择一项','hidden');
@ -2664,6 +2666,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
],'textbutton']);
return dialog;
},
filter:function(button,player){
if(button.link=='discard'&&player.hasSkill('dcjianguo_0')) return false;
if(button.link=='draw'&&player.hasSkill('dcjianguo_1')) return false;
return true;
},
check:function(button){
var player=_status.event.player;
if(button.link=='discard'){
@ -2701,6 +2708,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
subSkill:{
'0':{charlotte:true},
'1':{charlotte:true},
backup:{audio:'dcjianguo'},
discard:{
audio:'dcjianguo',
@ -2709,16 +2718,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
selectCard:-1,
content:function(){
'step 0'
player.addTempSkill('dcjianguo_0','phaseUseAfter');
target.draw();
game.delayex();
'step 1'
var num=Math.floor(target.countCards('h')/2);
var num=Math.ceil(target.countCards('h')/2);
if(num>0) target.chooseToDiscard(num,true,'谏国:请弃置'+get.cnNumber(num)+'张手牌');
},
ai:{
result:{
target:function(player,target){
return 1.1-Math.ceil(target.countCards('h')/2);
return 1.1-Math.floor(target.countCards('h')/2);
},
},
tag:{
@ -2736,9 +2746,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
selectCard:-1,
content:function(){
'step 0'
player.addTempSkill('dcjianguo_1','phaseUseAfter');
target.chooseToDiscard('he',true,'谏国:请弃置一张牌');
'step 1'
var num=Math.floor(target.countCards('h')/2);
var num=Math.ceil(target.countCards('h')/2);
if(num>0) target.draw(num);
},
ai:{
@ -2747,7 +2758,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var fix=0;
var num=target.countCards('h');
if(player==target&&num%2==1&&num>=5) fix+=1;
return Math.floor(num/2-0.5)+fix;
return Math.ceil(num/2-0.5)+fix;
},
},
tag:{
@ -2813,15 +2824,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
//甘糜
dcchanjuan:{
audio:2,
trigger:{
player:'useCardAfter',
init:function(player){
if(!player.storage.dcchanjuan){
player.storage.dcchanjuan={};
}
},
audio:2,
trigger:{player:'useCardAfter'},
filter:function(event,player){
if(event.targets.length!=1) return false;
if(!['basic','trick'].includes(get.type(event.card,false))) return false;
if(event.getParent(2).name=='dcchanjuan') return false;
return !player.getStorage('dcchanjuan').includes(event.card.name);
return !player.storage.dcchanjuan[event.card.name]||player.storage.dcchanjuan[event.card.name]<2;
},
direct:true,
content:function(){
@ -2834,17 +2848,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.chooseUseTarget(card,get.prompt('dcchanjuan'),false,false).set('prompt2','视为再使用一张'+get.translation(card)).set('logSkill','dcchanjuan');
'step 1'
if(result.bool){
player.markAuto('dcchanjuan',[trigger.card.name]);
if(!player.storage.dcchanjuan[trigger.card.name]) player.storage.dcchanjuan[trigger.card.name]=0;
player.storage.dcchanjuan[trigger.card.name]++;
var list1=trigger.targets,list2=result.targets;
if(list1.slice().removeArray(list2).length==0&&list2.slice().removeArray(list1).length==0) player.draw();
}
},
ai:{
threaten:2,
},
ai:{threaten:2},
mark:true,
intro:{
content:'已记录牌名:$',
}
markcount:(storage)=>0,
content:function(storage){
var str='已使用牌名:',names=Object.keys(storage);
if(!names.length) str+='无';
else names.forEach(name=>{
str+='<br><li>【';
str+=get.translation(name);
str+='】:';
str+=storage[name]+'次';
});
return str;
},
},
},
dcxunbie:{
audio:2,
@ -3695,16 +3720,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
complexCard:true,
selectCard:[1,4],
position:'he',
filterCard:function(card,player){
var suit=get.suit(card);
if(!lib.suit.includes(suit)) return false;
if(ui.selected.cards.length){
if(ui.selected.cards.some(i=>{
return get.suit(i)==suit;
})) return false;
}
return true;
},
filterCard:true,
check:function(card){
var player=_status.event.player;
var suit=get.suit(card);
@ -3728,22 +3744,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
order:2,
result:{
player:function(player){
var suits=lib.suit.filter(suit=>{
return player.countCards('h',{suit:suit})>1;
});
var suits2=[],cards=player.getCards('h');
for(var card of cards){
var suitx=get.suit(card);
if(suits2.includes(suitx)) continue;
if(!player.hasCard(cardx=>cardx!=card&&get.suit(cardx)==suitx)&&get.value(card)<7.5||get.value(card)<6) suits2.add(suitx);
}
if(suits2.length<=suits.length) return 0;
return 1;
}
}
}
result:{player:1},
},
},
dchuayi:{
audio:2,
@ -3761,16 +3763,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{global:'phaseEnd'},
charlotte:true,
forced:true,
filter:function(event,player){
return event.player!=player;
},
content:function(){
player.draw();
},
mark:true,
intro:{
name:'华衣·红',
content:'其他角色的回合结束时,你摸一张牌'
content:'一名角色的回合结束时,你摸一张牌'
},
},
black:{
@ -4324,10 +4323,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
trigger:{player:'phaseUseBegin'},
filter:function(event,player){
var card=lib.skill.dcshexue.getLast();
return card&&player.hasUseTarget(card,false);
var cards=lib.skill.dcshexue.getLast();
return cards.some(card=>player.hasUseTarget(card,false));
},
getLast:function(){
var cards=[];
for(var current of game.filterPlayer()){
var history=current.actionHistory;
if(history.length<2) continue;
@ -4337,18 +4337,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var evt=evts[i];
if(get.type(evt.card)!='basic'&&get.type(evt.card)!='trick') continue;
var evtx=evt.getParent('phaseUse');
if(evtx&&evtx.player==current){
return {name:evt.card.name,nature:evt.card.nature};
}
if(evtx&&evtx.player==current) cards.push({name:evt.card.name,nature:evt.card.nature});
}
}
}
return null;
return cards;
},
direct:true,
group:'dcshexue_end',
content:function(){
var card=lib.skill.dcshexue.getLast();
'step 0'
var cards=lib.skill.dcshexue.getLast();
cards=cards.filter(card=>player.hasUseTarget(card,false));
player.chooseButton(['设学:是否将一张牌当作其中一张牌使用?',[cards,'vards']]);
'step 1'
if(!result.bool) return;
var card=result.links[0];
game.broadcastAll(function(card){
lib.skill.dcshexue_backup.viewAs=card;
},card);
@ -4384,11 +4388,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).length;
},
prompt2:function(event,player){
var history=player.getHistory('useCard',evt=>{
return evt.getParent('phaseUse')==event&&(get.type(evt.card)=='basic'||get.type(evt.card)=='trick');
});
var card=history[history.length-1].card;
return '令下一回合的角色于其出牌阶段开始时选择是否将一张牌当做'+(get.translation(card.nature)||'')+'【'+get.translation(card.name)+'】使用';
return '令下一回合的角色于其出牌阶段开始时选择是否将一张牌当做你本阶段使用过的一张基本牌或普通锦囊牌使用?';
},
check:function(event,player){
let evt=event.getParent('phase').getParent();
@ -4402,11 +4402,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var history=player.getHistory('useCard',evt=>{
return evt.getParent('phaseUse')==trigger&&(get.type(evt.card)=='basic'||get.type(evt.card)=='trick');
});
var card=history[history.length-1].card;
card={name:card.name,nature:card.nature};
player.addSkill('dcshexue_studyclear');
if(!player.storage.dcshexue_studyclear) player.storage.dcshexue_studyclear=[];
player.storage.dcshexue_studyclear.push(card);
history.forEach(evt=>{
var card=evt.card;
card={name:card.name,nature:card.nature};
player.storage.dcshexue_studyclear.push(card);
});
}
},
study:{
@ -13895,7 +13897,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcquanshou:'劝守',
dcquanshou_info:'一名角色的回合开始时若其手牌数不大于其体力上限你可以令其选择一项1.将手牌摸至体力上限,然后本回合使用【杀】的次数上限-1至多摸五张2.其本回合使用牌被抵消后,你摸一张牌。',
dcshexue:'设学',
dcshexue_info:'①出牌阶段开始时,你可以将一张牌当做上回合的角色于其出牌阶段内使用的最后一张基本牌或普通锦囊牌使用。②出牌阶段结束时,你可以令下回合的角色于其出牌阶段开始时可以将一张牌当做你于此阶段内使用的最后一张基本牌或普通锦囊牌使用(一名角色因〖设学〗使用的牌均无距离和次数限制)。',
dcshexue_info:'①出牌阶段开始时,你可以将一张牌当做上回合的角色于其出牌阶段内使用的一张基本牌或普通锦囊牌使用。②出牌阶段结束时,你可以令下回合的角色于其出牌阶段开始时可以将一张牌当做你于此阶段内使用的一张基本牌或普通锦囊牌使用(一名角色因〖设学〗使用的牌均无距离和次数限制)。',
xizheng:'郤正',
dcdanyi:'耽意',
dcdanyi_info:'当你使用牌指定第一个目标后你可以摸X张牌X为此牌目标数与你使用的上一张牌相同的目标数。',
@ -13908,9 +13910,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcjijiao_info:'限定技。出牌阶段,你可以令一名角色获得所有弃牌堆中你于本局游戏内使用或弃置过的普通锦囊牌,且这些牌不能被【无懈可击】响应。一名角色的回合结束后,若本回合牌堆洗过牌或有角色死亡,你重置〖继椒〗。',
duanqiaoxiao:'段巧笑',
dccaizhuang:'彩妆',
dccaizhuang_info:'出牌阶段限一次。你可以弃置任意张花色各不相同的牌。然后若你手牌中的花色数小于你以此法弃置的牌数,你摸一张牌并重复此流程。',
dccaizhuang_info:'出牌阶段限一次。你可以弃置任意张牌。然后若你手牌中的花色数小于你以此法弃置的牌数,你摸一张牌并重复此流程。',
dchuayi:'华衣',
dchuayi_info:'结束阶段,你可以判定,然后你获得如下效果直到你下回合开始时:红色,其他角色回合结束时,你摸一张牌;黑色,当你受到伤害后,你摸两张牌。',
dchuayi_info:'结束阶段,你可以判定,然后你获得如下效果直到你下回合开始时:红色,一名角色的回合结束时,你摸一张牌;黑色,当你受到伤害后,你摸两张牌。',
wu_zhugeliang:'武诸葛亮',
wu_zhugeliang_prefix:'武',
dcjincui:'尽瘁',
@ -13927,8 +13929,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcjiudun:'酒遁',
dcjiudun_info:'①以你为目标的【酒】(使用方法①)的作用效果改为“目标对应的角色使用的下一张【杀】的伤害基数+1”。②当你成为其他角色使用黑色牌的目标后若你未处于【酒】状态你可以摸一张牌并视为使用一张【酒】处于【酒】状态你可以弃置一张手牌令此牌对你无效。',
ganfurenmifuren:'甘夫人糜夫人',
dcchanjuan:'婵娟',
dcchanjuan_info:'每种牌名限次。当你使用仅指定单一目标的【杀】或普通锦囊牌结算结束后,你可以视为使用一张名称和属性均相同的牌。若这两张牌指定的目标完全相同,你摸一张牌。',
dcchanjuan:'双姝',
dcchanjuan_info:'每种牌名限次。当你使用仅指定单一目标的【杀】或普通锦囊牌结算结束后,你可以视为使用一张名称和属性均相同的牌。若这两张牌指定的目标完全相同,你摸一张牌。',
dcxunbie:'殉别',
dcxunbie_info:'限定技。当你进入濒死状态时你可以将此武将牌替换为“甘夫人”或“糜夫人”不能选择已在场上的武将。然后回复至1点体力并防止所有伤害直到当前回合结束。',
dc_mifuren:'糜夫人',
@ -13945,7 +13947,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcshenzhi_info:'准备阶段若你的手牌数大于体力值你可以弃置一张手牌然后回复1点体力。',
dc_duyu:'杜预',
dcjianguo:'谏国',
dcjianguo_info:'出牌阶段限一次。你可以选择一名角色并选择一项1.令其摸一张牌然后其弃置一半的手牌2.令其弃置一张牌,然后其摸等同于手牌数一半的牌(均向取整)。',
dcjianguo_info:'出牌阶段限一次。你可以选择一名角色并选择一项1.令其摸一张牌然后其弃置一半的手牌2.令其弃置一张牌,然后其摸等同于手牌数一半的牌(均向取整)。',
dcdyqingshi:'倾势',
dcdyqingshi_info:'当你于回合内使用【杀】或普通锦囊牌指定第一个目标后若目标角色包括其他角色且此牌为你本回合使用的第X张牌你可以对其中一名不为你的目标角色造成1点伤害X为你的手牌数。',
sunlingluan:'孙翎鸾',