Merge branch 'libccy:PR-Branch' into PR-Branch
This commit is contained in:
commit
618d7ab802
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.
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.
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.
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.
|
@ -330,7 +330,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
res = 0.9;
|
res = 0.9;
|
||||||
if(f&&t || target.hasSkillTag('nodamage')) return 0;
|
if(f&&t || target.hasSkillTag('nodamage')) return 0;
|
||||||
if(f || t) res = 0.45;
|
if(f || t) res = 0.45;
|
||||||
if(target.getEquip('tengjia')) res *= 2;
|
if(!f&&target.getEquip('tengjia')) res *= 2;
|
||||||
if(!target.isLinked()) res = -res;
|
if(!target.isLinked()) res = -res;
|
||||||
if(ui.selected.targets.length) return res;
|
if(ui.selected.targets.length) return res;
|
||||||
let fs = 0,
|
let fs = 0,
|
||||||
|
|
|
@ -1343,7 +1343,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
target:(card,player,target)=>{
|
target:(card,player,target)=>{
|
||||||
if(target._g_taipingyaoshu_temp) return;
|
if(target._g_taipingyaoshu_temp) return;
|
||||||
if(get.subtype(card)==='equip2'&&target.getEquip('taipingyaoshu')&&!target.countEmpty(2)){
|
if(get.subtype(card)==='equip2'&&target.getEquip('taipingyaoshu')&&!target.countEmptySlot(2)){
|
||||||
target._g_taipingyaoshu_temp=true;
|
target._g_taipingyaoshu_temp=true;
|
||||||
let lose=get.effect(target,{name:'losehp'},target,target),
|
let lose=get.effect(target,{name:'losehp'},target,target),
|
||||||
draw=2*get.effect(target,{name:'draw'},target,target);
|
draw=2*get.effect(target,{name:'draw'},target,target);
|
||||||
|
|
|
@ -527,15 +527,15 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
if(event.name=='phase'){
|
if(event.name=='phase'){
|
||||||
if(game.phaseNumber!=0) return false;
|
if(game.phaseNumber!=0) return false;
|
||||||
if(!player._start_cards) return false;
|
if(!player._start_cards) return false;
|
||||||
var hs=player.getCards('h');
|
let hs=player.getCards('h');
|
||||||
for(var card of player._start_cards){
|
for(let card of player._start_cards){
|
||||||
if(get.name(card,player)=='du'&&hs.includes(card)) return true;
|
if(get.name(card,player)=='du'&&hs.includes(card)) return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if(event.getParent().name!='draw') return false;
|
if(event.getParent().name!='draw') return false;
|
||||||
var hs=player.getCards('h');
|
let hs=player.getCards('h');
|
||||||
for(var card of event.cards){
|
for(let card of event.getg(player)){
|
||||||
if(get.name(card,player)=='du'&&hs.includes(card)) return true;
|
if(get.name(card,player)=='du'&&hs.includes(card)) return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4564,7 +4564,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
filter(event,player){
|
filter(event,player){
|
||||||
if(!event.source||!event.source.isIn()||event.source.group!='qun') return false;
|
if(!event.source||!event.source.isIn()||event.source.group!='qun') return false;
|
||||||
if(!event.souce.countCards('he')<2) return false;
|
if(!event.source.countCards('he')<2) return false;
|
||||||
if(!player.hasZhuSkill('dddfuyi',event.source)) return false;
|
if(!player.hasZhuSkill('dddfuyi',event.source)) return false;
|
||||||
const skills=player.getStockSkills(true,true).filter(skill=>{
|
const skills=player.getStockSkills(true,true).filter(skill=>{
|
||||||
return !player.hasSkill(skill,null,false,false);
|
return !player.hasSkill(skill,null,false,false);
|
||||||
|
|
|
@ -6117,7 +6117,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
kuangfeng3:{
|
kuangfeng3:{
|
||||||
trigger:{global:'damageBegin3'},
|
trigger:{global:'damageBegin3'},
|
||||||
filter:function(event){
|
filter:function(event,player){
|
||||||
return event.hasNature('fire')&&event.player.getStorage('kuangfeng2').includes(player);
|
return event.hasNature('fire')&&event.player.getStorage('kuangfeng2').includes(player);
|
||||||
},
|
},
|
||||||
charlotte:true,
|
charlotte:true,
|
||||||
|
|
|
@ -757,7 +757,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
trigger:{player:'useCardAfter'},
|
trigger:{player:'useCardAfter'},
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
if(get.type(event.card)!='basic') return false;
|
if(get.type(event.card)!='basic') return false;
|
||||||
if(player.getHistory('gain',evt=>evt.getParent().name=='dccaisi').length>player.maxHp) return false;
|
if(player.getHistory('gain',evt=>{
|
||||||
|
return evt.getParent().name==='dccaisi';
|
||||||
|
}).reduce((num,evt)=>{
|
||||||
|
return num+evt.cards.length;
|
||||||
|
},0)>player.maxHp) return false;
|
||||||
return _status.currentPhase;
|
return _status.currentPhase;
|
||||||
},
|
},
|
||||||
prompt2:function(event,player){
|
prompt2:function(event,player){
|
||||||
|
@ -11171,6 +11175,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
liuchongluojun:'刘宠(?~197年),汉明帝刘庄玄孙,陈敬王刘羡曾孙,陈顷王刘崇之孙,陈孝王刘承之子,陈国第六位国君,也是东汉陈国的最后一位国君。骆俊(?-197),字孝远,东汉末年扬州会稽郡乌伤县(今浙江义乌)人。宗室陈王刘宠的国相,在任期间励精图治,深得民众爱戴。刘宠勇猛过人,善使弓弩,箭法高超。在其父刘承死后,继承陈王爵位。中平年间,黄巾军起义,郡县官兵都弃城逃走,刘宠于是征兵自守卫。当时天下饥荒,诸王侯都已不再享有租赋,反屡遭抢掠,有的甚至流离在外,死于荒野。只有陈国仍很富强,邻郡百姓纷纷前去投靠,陈国拥有部众达十余万人。初平元年(190年),各州郡起兵讨伐董卓,刘宠率军屯驻阳夏,自称辅汉大将军。建安二年(197年),袁术向陈国求取粮草,遭陈国国相骆俊拒绝,袁术大为生气,便派刺客张闿假装路过陈国,乘机杀死骆俊和刘宠。',
|
liuchongluojun:'刘宠(?~197年),汉明帝刘庄玄孙,陈敬王刘羡曾孙,陈顷王刘崇之孙,陈孝王刘承之子,陈国第六位国君,也是东汉陈国的最后一位国君。骆俊(?-197),字孝远,东汉末年扬州会稽郡乌伤县(今浙江义乌)人。宗室陈王刘宠的国相,在任期间励精图治,深得民众爱戴。刘宠勇猛过人,善使弓弩,箭法高超。在其父刘承死后,继承陈王爵位。中平年间,黄巾军起义,郡县官兵都弃城逃走,刘宠于是征兵自守卫。当时天下饥荒,诸王侯都已不再享有租赋,反屡遭抢掠,有的甚至流离在外,死于荒野。只有陈国仍很富强,邻郡百姓纷纷前去投靠,陈国拥有部众达十余万人。初平元年(190年),各州郡起兵讨伐董卓,刘宠率军屯驻阳夏,自称辅汉大将军。建安二年(197年),袁术向陈国求取粮草,遭陈国国相骆俊拒绝,袁术大为生气,便派刺客张闿假装路过陈国,乘机杀死骆俊和刘宠。',
|
||||||
yuechen:'乐綝(195~257年),字号不详,阳平郡卫国县(今河南省清丰县)人。三国时期曹魏将领,右将军乐进的儿子。果毅坚毅,袭封广昌亭侯,累迁扬州刺史。甘露二年,为叛乱的征东大将军诸葛诞所杀,追赠卫尉。',
|
yuechen:'乐綝(195~257年),字号不详,阳平郡卫国县(今河南省清丰县)人。三国时期曹魏将领,右将军乐进的儿子。果毅坚毅,袭封广昌亭侯,累迁扬州刺史。甘露二年,为叛乱的征东大将军诸葛诞所杀,追赠卫尉。',
|
||||||
kuaiqi:'蒯祺(?~219年),南郡中卢人,荆州望族子弟,与荆州牧刘表帐下谋士蒯良、蒯越为同族,东汉末年房陵太守。建安二十四年(219年),汉中王刘备遣宜都太守孟达从秭归北攻房陵,蒯祺于战斗中被孟达所部士兵所杀。清朝任兆麟《心斋十种》中的《襄阳记》辑本引用《万历襄阳府志》“(蒯)钦从祖祺妇,即诸葛孔明之姊也”,称蒯祺娶故兖州泰山郡丞诸葛珪长女,即他是知名政治家、蜀汉丞相诸葛亮的姐夫。但在任兆麟之前的《襄阳记》辑本中,并没有这一条。',
|
kuaiqi:'蒯祺(?~219年),南郡中卢人,荆州望族子弟,与荆州牧刘表帐下谋士蒯良、蒯越为同族,东汉末年房陵太守。建安二十四年(219年),汉中王刘备遣宜都太守孟达从秭归北攻房陵,蒯祺于战斗中被孟达所部士兵所杀。清朝任兆麟《心斋十种》中的《襄阳记》辑本引用《万历襄阳府志》“(蒯)钦从祖祺妇,即诸葛孔明之姊也”,称蒯祺娶故兖州泰山郡丞诸葛珪长女,即他是知名政治家、蜀汉丞相诸葛亮的姐夫。但在任兆麟之前的《襄阳记》辑本中,并没有这一条。',
|
||||||
|
pangshanmin:'庞山民,荆州襄阳人,三国时期曹魏大臣。庞山民出身荆州庞氏,为隐士庞德公之子、凤雏庞统的堂兄,娶诸葛亮二姐诸葛氏(“若雪”为网络小说虚构)为妻。后出仕曹魏,历任黄门、吏部郎等职。',
|
||||||
},
|
},
|
||||||
characterTitle:{
|
characterTitle:{
|
||||||
},
|
},
|
||||||
|
|
|
@ -1214,6 +1214,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
enable:'chooseToUse',
|
enable:'chooseToUse',
|
||||||
viewAs:{name:'lebu'},
|
viewAs:{name:'lebu'},
|
||||||
position:'hes',
|
position:'hes',
|
||||||
|
round:1,
|
||||||
viewAsFilter(player){
|
viewAsFilter(player){
|
||||||
return player.countCards('hes');
|
return player.countCards('hes');
|
||||||
},
|
},
|
||||||
|
@ -8251,7 +8252,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
jsrgeqian_info:'①结束阶段,你可以蓄谋任意次。②当你使用【杀】或蓄谋牌指定其他角色为唯一目标后,你可以令此牌不计入次数限制并获得目标一张牌,然后其可以令你本回合至其的距离+2。',
|
jsrgeqian_info:'①结束阶段,你可以蓄谋任意次。②当你使用【杀】或蓄谋牌指定其他角色为唯一目标后,你可以令此牌不计入次数限制并获得目标一张牌,然后其可以令你本回合至其的距离+2。',
|
||||||
jsrgfusha:'伏杀',
|
jsrgfusha:'伏杀',
|
||||||
jsrgfusha_info:'限定技。出牌阶段,若你的攻击范围内仅有一名角色,你可以对其造成X点伤害(X为你的攻击范围,至多为游戏人数)。',
|
jsrgfusha_info:'限定技。出牌阶段,若你的攻击范围内仅有一名角色,你可以对其造成X点伤害(X为你的攻击范围,至多为游戏人数)。',
|
||||||
jsrg_sunlubansunluyu:'合孙鲁班孙鲁育',
|
jsrg_sunlubansunluyu:'合大小虎',
|
||||||
jsrg_sunlubansunluyu_prefix:'合',
|
jsrg_sunlubansunluyu_prefix:'合',
|
||||||
jsrgdaimou:'殆谋',
|
jsrgdaimou:'殆谋',
|
||||||
jsrgdaimou_info:'每回合各限一次。当一名角色使用【杀】指定其他角色/你为目标时,你可以用牌堆顶的牌蓄谋/你须弃置你区域里的一张蓄谋牌。',
|
jsrgdaimou_info:'每回合各限一次。当一名角色使用【杀】指定其他角色/你为目标时,你可以用牌堆顶的牌蓄谋/你须弃置你区域里的一张蓄谋牌。',
|
||||||
|
|
|
@ -4112,7 +4112,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
'step 1'
|
'step 1'
|
||||||
var hp=player.hp-1,maxhp=player.maxHp-1;
|
var hp=player.hp-1,maxhp=player.maxHp-1;
|
||||||
if(hp>0&&maxhp>0){
|
if(hp>0&&maxhp>0){
|
||||||
player.chooseControl(choices).set('prompt','安国:请选择一项').set('choiceList',[
|
player.chooseControl().set('prompt','安国:请选择一项').set('choiceList',[
|
||||||
'失去'+hp+'点体力,令'+get.translation(trigger.player)+'获得1点护甲',
|
'失去'+hp+'点体力,令'+get.translation(trigger.player)+'获得1点护甲',
|
||||||
'减'+maxhp+'点体力上限,令'+get.translation(trigger.player)+'获得1点护甲'
|
'减'+maxhp+'点体力上限,令'+get.translation(trigger.player)+'获得1点护甲'
|
||||||
]).set('ai',()=>'选项一');
|
]).set('ai',()=>'选项一');
|
||||||
|
@ -6760,7 +6760,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
mingzhi:false,
|
mingzhi:false,
|
||||||
effect:{
|
effect:{
|
||||||
target:function(card,player,target,current){
|
target:function(card,player,target,current){
|
||||||
if((get.tag(card,'respondShan')||get.tag(card,'respondSha'))&&target.getStorage('jibing').length>0&&player.isMaxHp()){
|
if((get.tag(card,'respondShan')||get.tag(card,'respondSha'))&&target.getExpansions('jibing').length>0&&player.isMaxHp()){
|
||||||
if(get.attitude(target,player)<=0){
|
if(get.attitude(target,player)<=0){
|
||||||
return [0,0,1,0.3];
|
return [0,0,1,0.3];
|
||||||
}
|
}
|
||||||
|
|
|
@ -404,6 +404,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
sbsongwei:{
|
sbsongwei:{
|
||||||
audio:2,
|
audio:2,
|
||||||
|
init:(player)=>{
|
||||||
|
player.addSkill('sbsongwei_delete');
|
||||||
|
},
|
||||||
trigger:{player:'phaseUseBegin'},
|
trigger:{player:'phaseUseBegin'},
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
return game.hasPlayer(target=>target.group=='wei'&&target!=player);
|
return game.hasPlayer(target=>target.group=='wei'&&target!=player);
|
||||||
|
@ -414,7 +417,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
async content(event,trigger,player){
|
async content(event,trigger,player){
|
||||||
player.addMark('sbxingshang',game.countPlayer(target=>target.group=='wei'&&target!=player));
|
player.addMark('sbxingshang',game.countPlayer(target=>target.group=='wei'&&target!=player));
|
||||||
},
|
},
|
||||||
group:'sbsongwei_delete',
|
|
||||||
subSkill:{
|
subSkill:{
|
||||||
delete:{
|
delete:{
|
||||||
audio:'sbsongwei',
|
audio:'sbsongwei',
|
||||||
|
@ -453,7 +455,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
direct:true,
|
direct:true,
|
||||||
content:function*(event,map){
|
content:function*(event,map){
|
||||||
var player=map.player;
|
var player=map.player;
|
||||||
var result=yield player.chooseTarget(get.prompt('sbwusheng'),'选择一名非主公的其他角色,本阶段对其使用【杀】无距离和次数限制,使用【杀】指定其为目标后摸一张牌,对其使用五张【杀】后不能对其使用【杀】',(card,player,target)=>{
|
var result=yield player.chooseTarget(get.prompt('sbwusheng'),'选择一名非主公的其他角色,本阶段对其使用【杀】无距离和次数限制,使用【杀】指定其为目标后摸一张牌,对其使用三张【杀】后不能对其使用【杀】',(card,player,target)=>{
|
||||||
return target!=player&&!target.isZhu2();
|
return target!=player&&!target.isZhu2();
|
||||||
}).set('ai',target=>{
|
}).set('ai',target=>{
|
||||||
var player=_status.event.player;
|
var player=_status.event.player;
|
||||||
|
@ -462,6 +464,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
if(result.bool){
|
if(result.bool){
|
||||||
var target=result.targets[0];
|
var target=result.targets[0];
|
||||||
player.logSkill('sbwusheng',target);
|
player.logSkill('sbwusheng',target);
|
||||||
|
if(get.mode()!=='identity'||player.identity!=='nei') player.addExpose(0.25);
|
||||||
player.addTempSkill('sbwusheng_effect',{player:'phaseUseAfter'});
|
player.addTempSkill('sbwusheng_effect',{player:'phaseUseAfter'});
|
||||||
player.storage.sbwusheng_effect[target.playerid]=0;
|
player.storage.sbwusheng_effect[target.playerid]=0;
|
||||||
}
|
}
|
||||||
|
@ -555,7 +558,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
playerEnabled:function(card,player,target){
|
playerEnabled:function(card,player,target){
|
||||||
if(card.name!='sha'||typeof player.storage.sbwusheng_effect[target.playerid]!='number') return;
|
if(card.name!='sha'||typeof player.storage.sbwusheng_effect[target.playerid]!='number') return;
|
||||||
if(player.storage.sbwusheng_effect[target.playerid]>=5) return false;
|
if(player.storage.sbwusheng_effect[target.playerid]>=3) return false;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
audio:'sbwusheng',
|
audio:'sbwusheng',
|
||||||
|
@ -645,7 +648,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
filterCardx:function(card,player){
|
filterCardx:function(card,player){
|
||||||
//if(player.getStorage('sbqicai').includes(card.name)) return false;
|
//if(player.getStorage('sbqicai').includes(card.name)) return false;
|
||||||
return get.type(card)=='equip'&&get.hasPlayer(target=>target!=player&&target.hasEmptySlot(get.subtype(card)));
|
return get.type(card)=='equip'&&game.hasPlayer(target=>target!=player&&target.hasEmptySlot(get.subtype(card)));
|
||||||
},
|
},
|
||||||
usable:1,
|
usable:1,
|
||||||
chooseButton:{
|
chooseButton:{
|
||||||
|
@ -6353,7 +6356,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
sb_guanyu_prefix:'谋',
|
sb_guanyu_prefix:'谋',
|
||||||
sbwusheng:'武圣',
|
sbwusheng:'武圣',
|
||||||
sbwusheng_wusheng_backup:'武圣',
|
sbwusheng_wusheng_backup:'武圣',
|
||||||
sbwusheng_info:'你可以将一张手牌当作任意【杀】使用或打出。出牌阶段开始时,你可以选择一名非主公的其他角色,本阶段对其使用【杀】无距离和次数限制,使用【杀】指定其为目标后摸一张牌,对其使用五张【杀】后不能对其使用【杀】。',
|
sbwusheng_info:'你可以将一张手牌当作任意【杀】使用或打出。出牌阶段开始时,你可以选择一名非主公的其他角色,本阶段对其使用【杀】无距离和次数限制,使用【杀】指定其为目标后摸一张牌,对其使用三张【杀】后不能对其使用【杀】。',
|
||||||
sbyijue:'义绝',
|
sbyijue:'义绝',
|
||||||
sbyijue_info:'锁定技,每名角色每局游戏限一次,当你对一名角色造成大于等于其体力值的伤害时,你防止此伤害,且本回合你使用牌指定其为目标后,取消之。',
|
sbyijue_info:'锁定技,每名角色每局游戏限一次,当你对一名角色造成大于等于其体力值的伤害时,你防止此伤害,且本回合你使用牌指定其为目标后,取消之。',
|
||||||
sb_caopi:'谋曹丕',
|
sb_caopi:'谋曹丕',
|
||||||
|
@ -6361,7 +6364,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
sbxingshang:'行殇',
|
sbxingshang:'行殇',
|
||||||
sbxingshang_info:'①每回合限一次,当一名角色死亡时或受到伤害时,你获得1个“颂”标记。②出牌阶段限一次,你可以:1.移去1个“颂”标记,令一名角色复原武将牌;2.移去2个“颂”标记,令一名角色摸X张牌(X为场上阵亡角色数,且X至少为1,至多为5);3.移去3个“颂”标记,令一名体力上限小于10的角色加1点体力上限,回复1点体力,随机恢复一个已废除的装备栏;4.移去4个“颂”标记,获得一名阵亡角色武将牌上的所有技能,然后你失去武将牌上的所有技能。',
|
sbxingshang_info:'①每回合限一次,当一名角色死亡时或受到伤害时,你获得1个“颂”标记。②出牌阶段限一次,你可以:1.移去1个“颂”标记,令一名角色复原武将牌;2.移去2个“颂”标记,令一名角色摸X张牌(X为场上阵亡角色数,且X至少为1,至多为5);3.移去3个“颂”标记,令一名体力上限小于10的角色加1点体力上限,回复1点体力,随机恢复一个已废除的装备栏;4.移去4个“颂”标记,获得一名阵亡角色武将牌上的所有技能,然后你失去武将牌上的所有技能。',
|
||||||
sbfangzhu:'放逐',
|
sbfangzhu:'放逐',
|
||||||
sbfangzhu_info:'出牌阶段限一次,你可以:1.移去2个“颂”标记,令一名其他角色的非Charlotte技能失效直到其回合结束;2.移去2个“颂”标记,令一名其他角色不能响应除其以为的角色使用的牌直到其回合结束;3.移去2个“颂”标记,令一名其他角色将武将牌翻面;4.移去2个“颂”标记,令一名其他角色只能使用你选择的一种类型的牌直到其回合结束。',
|
sbfangzhu_info:'出牌阶段限一次,你可以:1.移去2个“颂”标记,令一名其他角色的非Charlotte技能失效直到其回合结束;2.移去2个“颂”标记,令一名其他角色不能响应除其以外的角色使用的牌直到其回合结束;3.移去3个“颂”标记,令一名其他角色将武将牌翻面;4.移去3个“颂”标记,令一名其他角色只能使用你选择的一种类型的牌直到其回合结束。',
|
||||||
sbsongwei:'颂威',
|
sbsongwei:'颂威',
|
||||||
sbsongwei_info:'主公技。①出牌阶段开始时,你获得Y个“颂”标记(Y为场上其他魏势力角色数)。②每局游戏限一次,出牌阶段,你可以令一名其他魏势力角色失去所有武将牌的技能。',
|
sbsongwei_info:'主公技。①出牌阶段开始时,你获得Y个“颂”标记(Y为场上其他魏势力角色数)。②每局游戏限一次,出牌阶段,你可以令一名其他魏势力角色失去所有武将牌的技能。',
|
||||||
|
|
||||||
|
|
|
@ -942,7 +942,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
audio:2,
|
audio:2,
|
||||||
trigger:{
|
trigger:{
|
||||||
player:'loseAfter',
|
player:'loseAfter',
|
||||||
global:['gainAfter','equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
|
global:['gainAfter','equipAfter','addJudgeAfter','loseAsyncAfter','addToExpansionAfter'],
|
||||||
},
|
},
|
||||||
filter(event,player){
|
filter(event,player){
|
||||||
if(!_status.currentPhase||!_status.currentPhase.isIn()) return false;
|
if(!_status.currentPhase||!_status.currentPhase.isIn()) return false;
|
||||||
|
@ -3038,13 +3038,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
var aimx=game.filterPlayer(current=>{
|
var aimx=game.filterPlayer(current=>{
|
||||||
return target.canUse({name:'sha'},current)&&get.effect(current,{name:'sha'},target,target)>0;
|
return target.canUse({name:'sha'},current)&&get.effect(current,{name:'sha'},target,target)>0;
|
||||||
}).sort((a,b)=>get.effect(b,{name:'sha'},target,target)-get.effect(a,{name:'sha'},target,target))[0];
|
}).sort((a,b)=>get.effect(b,{name:'sha'},target,target)-get.effect(a,{name:'sha'},target,target))[0];
|
||||||
if(get.effect(aimx,{name:'sha'},target,player)<0&&get.effect(aimx,{name:'sha'},target,aimx)<0&&!canSave(player,aimx)) return 0;
|
if(aimx&&get.effect(aimx,{name:'sha'},target,player)<0&&get.effect(aimx,{name:'sha'},target,aimx)<0&&!canSave(player,aimx)) return 0;
|
||||||
}
|
}
|
||||||
if(target.hasValueTarget({name:'juedou'})){
|
if(target.hasValueTarget({name:'juedou'})){
|
||||||
var aimy=game.filterPlayer(current=>{
|
var aimy=game.filterPlayer(current=>{
|
||||||
return target.canUse({name:'juedou'},current)&&get.effect(current,{name:'juedou'},target,target)>0;
|
return target.canUse({name:'juedou'},current)&&get.effect(current,{name:'juedou'},target,target)>0;
|
||||||
}).sort((a,b)=>get.effect(b,{name:'juedou'},target,target)-get.effect(a,{name:'juedou'},target,target))[0];
|
}).sort((a,b)=>get.effect(b,{name:'juedou'},target,target)-get.effect(a,{name:'juedou'},target,target))[0];
|
||||||
if(get.effect(aimy,{name:'juedou'},target,player)<0&&get.effect(aimy,{name:'sha'},target,aimy)<0&&!canSave(player,aimy)) return 0;
|
if(aimy&&get.effect(aimy,{name:'juedou'},target,player)<0&&get.effect(aimy,{name:'sha'},target,aimy)<0&&!canSave(player,aimy)) return 0;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
},
|
},
|
||||||
|
@ -14987,7 +14987,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
player.chooseCard('he',get.prompt('new_xingwu'),'将一张牌置于武将牌上作为“舞”').set('ai',function(card){
|
player.chooseCard('he',get.prompt('new_xingwu'),'将一张牌置于武将牌上作为“舞”').set('ai',function(card){
|
||||||
if(_status.event.goon) return 20-get.value(card);
|
if(_status.event.goon) return 20-get.value(card);
|
||||||
return 7-get.value(card);
|
return 7-get.value(card);
|
||||||
}).set('goon',player.needsToDiscard()||player.getStorage('new_xingwu').length>1);
|
}).set('goon',player.needsToDiscard()||player.getExpansions('new_xingwu').length>1);
|
||||||
'step 1'
|
'step 1'
|
||||||
if(result.bool){
|
if(result.bool){
|
||||||
player.logSkill('new_xingwu');
|
player.logSkill('new_xingwu');
|
||||||
|
@ -15061,7 +15061,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
new_luoyan:{
|
new_luoyan:{
|
||||||
init:function(player){
|
init:function(player){
|
||||||
if(player.getStorage('new_xingwu').length) player.addAdditionalSkill('new_luoyan',['oltianxiang','liuli']);
|
if(player.getExpansions('new_xingwu').length) player.addAdditionalSkill('new_luoyan',['oltianxiang','liuli']);
|
||||||
},
|
},
|
||||||
onremove:function(player){
|
onremove:function(player){
|
||||||
player.removeAdditionalSkill('new_luoyan');
|
player.removeAdditionalSkill('new_luoyan');
|
||||||
|
@ -24834,7 +24834,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
forced:true,
|
forced:true,
|
||||||
content:function(){
|
content:function(){
|
||||||
player.addMark('xinfu_xionghuo',1);
|
if(player.countMark('xinfu_xionghuo')<3) player.addMark('xinfu_xionghuo',1);
|
||||||
if(trigger.player.hp<0&&get.itemtype(trigger.parent.cards)=='cards'&&get.position(trigger.parent.cards[0],true)=='o'){
|
if(trigger.player.hp<0&&get.itemtype(trigger.parent.cards)=='cards'&&get.position(trigger.parent.cards[0],true)=='o'){
|
||||||
player.gain(trigger.parent.cards,'gain2');
|
player.gain(trigger.parent.cards,'gain2');
|
||||||
}
|
}
|
||||||
|
@ -25815,7 +25815,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
"xinfu_fujian":"伏间",
|
"xinfu_fujian":"伏间",
|
||||||
"xinfu_fujian_info":"锁定技,结束阶段开始时,你观看一名随机的其他角色的随机X张手牌。(X为场上手牌最少的角色的手牌数)",
|
"xinfu_fujian_info":"锁定技,结束阶段开始时,你观看一名随机的其他角色的随机X张手牌。(X为场上手牌最少的角色的手牌数)",
|
||||||
xinfu_xionghuo:'凶镬',
|
xinfu_xionghuo:'凶镬',
|
||||||
xinfu_xionghuo_info:'游戏开始时,你获得3个“暴戾”标记。出牌阶段,你可以交给一名其他角色一个“暴戾”标记。当你对有“暴戾”标记的其他角色造成伤害时,此伤害+1。有“暴戾”标记的其他角色的出牌阶段开始时,其移去所有“暴戾”标记并随机执行一项:1.受到1点火焰伤害且本回合不能对你使用【杀】;2.失去1点体力且本回合手牌上限-1;3.你随机获得其一张手牌和一张装备区的牌。',
|
xinfu_xionghuo_info:'游戏开始时,你获得3个“暴戾”标记(标记上限为3)。出牌阶段,你可以交给一名其他角色一个“暴戾”标记。当你对有“暴戾”标记的其他角色造成伤害时,此伤害+1。有“暴戾”标记的其他角色的出牌阶段开始时,其移去所有“暴戾”标记并随机执行一项:1.受到1点火焰伤害且本回合不能对你使用【杀】;2.失去1点体力且本回合手牌上限-1;3.你随机获得其一张手牌和一张装备区的牌。',
|
||||||
xinfu_shajue:'杀绝',
|
xinfu_shajue:'杀绝',
|
||||||
xinfu_shajue_info:'锁定技,其他角色进入濒死状态时,你获得一个“暴戾”标记。然后若其体力值小于0,你获得使其进入濒死状态的牌。',
|
xinfu_shajue_info:'锁定技,其他角色进入濒死状态时,你获得一个“暴戾”标记。然后若其体力值小于0,你获得使其进入濒死状态的牌。',
|
||||||
xinfu_jianjie:"荐杰",
|
xinfu_jianjie:"荐杰",
|
||||||
|
|
|
@ -10998,7 +10998,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
gongxiu:'共修',
|
gongxiu:'共修',
|
||||||
gongxiu_info:'结束阶段,若你本回合内发动过〖经合〗,则你选择一项:①令所有本回合内成为过〖经合〗目标的角色各摸一张牌;②令所有本回合内未成为过〖经合〗目标的角色各弃置一张手牌。',
|
gongxiu_info:'结束阶段,若你本回合内发动过〖经合〗,则你选择一项:①令所有本回合内成为过〖经合〗目标的角色各摸一张牌;②令所有本回合内未成为过〖经合〗目标的角色各弃置一张手牌。',
|
||||||
jinghe:'经合',
|
jinghe:'经合',
|
||||||
jinghe_info:'出牌阶段限一次,你可以展示四张牌名各不相同的牌并选择等量的角色。系统从“写满技能的天书”中随机选择等量的技能,然后这些角色依次选择获得其中的一个。',
|
jinghe_info:'出牌阶段限一次,你可以展示至多四张牌名各不相同的牌并选择等量的角色。系统从“写满技能的天书”中随机选择等量的技能,然后这些角色依次选择获得其中的一个。',
|
||||||
nhyinbing:'阴兵',
|
nhyinbing:'阴兵',
|
||||||
nhyinbing_info:'锁定技,你使用的【杀】造成伤害改为失去体力。其他角色失去体力后,你摸一张牌。',
|
nhyinbing_info:'锁定技,你使用的【杀】造成伤害改为失去体力。其他角色失去体力后,你摸一张牌。',
|
||||||
nhhuoqi:'活气',
|
nhhuoqi:'活气',
|
||||||
|
|
|
@ -13659,7 +13659,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
return (get.suit(card)!=_status.event.suit?9:6)-get.value(card);
|
return (get.suit(card)!=_status.event.suit?9:6)-get.value(card);
|
||||||
}).set('num',num);
|
}).set('num',num);
|
||||||
if(lib.suit.includes(suit)){
|
if(lib.suit.includes(suit)){
|
||||||
next.set('prompt2','若弃置的是'+get.suit(suit)+'牌,则改为'+get.translation(player)+'获得之');
|
next.set('prompt2','若弃置的是'+get.translation(suit)+'牌,则改为'+get.translation(player)+'获得之');
|
||||||
next.set('suit',suit);
|
next.set('suit',suit);
|
||||||
}
|
}
|
||||||
'step 1'
|
'step 1'
|
||||||
|
|
|
@ -1700,7 +1700,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
if (!list.includes(get.suit(card))) att = 2;
|
if (!list.includes(get.suit(card))) att = 2;
|
||||||
if (_status.event.goon) return (20 - get.value(card)) * att;
|
if (_status.event.goon) return (20 - get.value(card)) * att;
|
||||||
return (7 - get.value(card)) * att;
|
return (7 - get.value(card)) * att;
|
||||||
}).set('goon', player.needsToDiscard() || player.getStorage('dcxingwu').length == 2);
|
}).set('goon', player.needsToDiscard() || player.getExpansions('dcxingwu').length == 2);
|
||||||
'step 1'
|
'step 1'
|
||||||
if (result.bool) {
|
if (result.bool) {
|
||||||
player.logSkill('dcxingwu');
|
player.logSkill('dcxingwu');
|
||||||
|
@ -1901,7 +1901,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
var player=_status.event.player;
|
var player=_status.event.player;
|
||||||
var target=_status.event.target;
|
var target=_status.event.target;
|
||||||
var left=0,right=0;
|
var left=0,right=0;
|
||||||
var leftx=target.getPrevious(),lefty=target.getNext();
|
var leftx=target.getPrevious(),rightx=target.getNext();
|
||||||
while(leftx!=player){
|
while(leftx!=player){
|
||||||
if(get.damageEffect(leftx,player,player)<0) break;
|
if(get.damageEffect(leftx,player,player)<0) break;
|
||||||
else{
|
else{
|
||||||
|
@ -4436,7 +4436,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
'step 0'
|
'step 0'
|
||||||
var cards=lib.skill.dcshexue.getLast();
|
var cards=lib.skill.dcshexue.getLast();
|
||||||
cards=cards.filter(card=>player.hasUseTarget(card,false));
|
cards=cards.filter(card=>player.hasUseTarget(card,false));
|
||||||
player.chooseButton(['设学:是否将一张牌当作其中一张牌使用?',[cards,'vards']]);
|
player.chooseButton(['设学:是否将一张牌当作其中一张牌使用?',[cards,'vcard']]);
|
||||||
'step 1'
|
'step 1'
|
||||||
if(!result.bool) return;
|
if(!result.bool) return;
|
||||||
var card=result.links[0];
|
var card=result.links[0];
|
||||||
|
@ -6323,7 +6323,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
dcshouze:{
|
dcshouze:{
|
||||||
audio:2,
|
audio:true,
|
||||||
trigger:{player:'phaseJieshuBegin'},
|
trigger:{player:'phaseJieshuBegin'},
|
||||||
forced:true,
|
forced:true,
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
|
@ -13507,6 +13507,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
tianshangyi:'田尚衣,一作陈尚衣,魏文帝曹丕宫中著名宫人。能歌善舞,一时冠绝于世,私以为比之汉宫飞燕也不遑多让。',
|
tianshangyi:'田尚衣,一作陈尚衣,魏文帝曹丕宫中著名宫人。能歌善舞,一时冠绝于世,私以为比之汉宫飞燕也不遑多让。',
|
||||||
malingli:'马伶俐,游卡桌游原创角色,设定上为,马超之女,其身形虽娇小,却继承了马超英勇略带冲动的个性,活泼阳光,调皮伶俐,爱摆弄爆竹烟花一类的小器具,包包里经常放置用五色彩纸包装的小炸弹球。马伶俐从小跟随马超和马云騄学习战斗技巧,战斗力超强,坚强的意志和勇气也得到了提升,同时擅长马术,有一匹可爱的小白马伴随其身边。后马伶俐成年,嫁与刘备之子刘理,获封梁王妃。两人琴瑟相和,极为恩爱,常结伴出游,被人誉为天作之合。',
|
malingli:'马伶俐,游卡桌游原创角色,设定上为,马超之女,其身形虽娇小,却继承了马超英勇略带冲动的个性,活泼阳光,调皮伶俐,爱摆弄爆竹烟花一类的小器具,包包里经常放置用五色彩纸包装的小炸弹球。马伶俐从小跟随马超和马云騄学习战斗技巧,战斗力超强,坚强的意志和勇气也得到了提升,同时擅长马术,有一匹可爱的小白马伴随其身边。后马伶俐成年,嫁与刘备之子刘理,获封梁王妃。两人琴瑟相和,极为恩爱,常结伴出游,被人誉为天作之合。',
|
||||||
zhugeruoxue:'诸葛氏(“若雪”为网络小说虚构),诸葛亮的二姐,庞山民之妻。',
|
zhugeruoxue:'诸葛氏(“若雪”为网络小说虚构),诸葛亮的二姐,庞山民之妻。',
|
||||||
|
caoyi:'曹轶,游卡桌游旗下产品《三国杀》原创角色。设定上为曹纯所收养的孙女,从小受到曹纯的教导,在军营中长大,性情坚毅有担当,军事谋略丰富,战斗能力超强。曹轶喜欢美食,特别是甜食,并且擅长制作各种点心。她身边跟随的雪白小老虎是曹纯在她及笄时送的生辰礼物,希望她如小老虎一样,英勇无畏。曹轶与曹婴交好,两人以姐妹相称。曹轶成年后继承祖父衣钵,接手精锐部队“虎豹骑”,成为新的虎豹骑的统领者。',
|
||||||
},
|
},
|
||||||
characterTitle:{
|
characterTitle:{
|
||||||
// wulan:'#b对决限定武将',
|
// wulan:'#b对决限定武将',
|
||||||
|
@ -14118,7 +14119,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
dc_sb_lusu:'新杀谋鲁肃',
|
dc_sb_lusu:'新杀谋鲁肃',
|
||||||
dc_sb_lusu_prefix:'新杀谋',
|
dc_sb_lusu_prefix:'新杀谋',
|
||||||
dcsbmingshi:'明势',
|
dcsbmingshi:'明势',
|
||||||
dcsbmingshi_info:'摸牌阶段,你可以多摸两张牌,然后令展示三张牌并令一名其他角色选择获得其中的一张牌。',
|
dcsbmingshi_info:'摸牌阶段,你可以多摸两张牌,然后展示三张牌并令一名其他角色选择获得其中的一张牌。',
|
||||||
dcsbmengmou:'盟谋',
|
dcsbmengmou:'盟谋',
|
||||||
dcsbmengmou_info:'转换技,每回合每项各限一次,当你得到其他角色的牌后,或其他角色得到你的牌后:阴,你可以令该角色使用至多X张【杀】,且其每以此法造成1点伤害,其回复1点体力;阳,你可令该角色打出至多X张【杀】,然后其失去Y点体力。(X为你的体力值,Y为X-其打出【杀】数)',
|
dcsbmengmou_info:'转换技,每回合每项各限一次,当你得到其他角色的牌后,或其他角色得到你的牌后:阴,你可以令该角色使用至多X张【杀】,且其每以此法造成1点伤害,其回复1点体力;阳,你可令该角色打出至多X张【杀】,然后其失去Y点体力。(X为你的体力值,Y为X-其打出【杀】数)',
|
||||||
dc_sb_zhouyu:'新杀谋周瑜',
|
dc_sb_zhouyu:'新杀谋周瑜',
|
||||||
|
|
|
@ -1182,7 +1182,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
getv=(name,player)=>{
|
getv=(name,player)=>{
|
||||||
let v=trigger.getTempCache('sangu',player.id+name);
|
let v=trigger.getTempCache('sangu',player.id+name);
|
||||||
if(typeof v==='number') return v;
|
if(typeof v==='number') return v;
|
||||||
v=player.getUseValue({name:name,storage:{sangu:true}},arg);
|
v=player.getUseValue({name:name,storage:{sangu:true}});
|
||||||
trigger.putTempCache('sangu',player.id+name,v);
|
trigger.putTempCache('sangu',player.id+name,v);
|
||||||
return v;
|
return v;
|
||||||
};
|
};
|
||||||
|
@ -8094,7 +8094,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
const chooseToPutCard = async function(target){
|
const chooseToPutCard = async function(target){
|
||||||
await target.draw();
|
await target.draw();
|
||||||
if(target.countCards('he')){
|
if(target.countCards('he')){
|
||||||
const {result:{cards,bool}} =
|
const {result:{cards,bool}} =
|
||||||
await target.chooseCard('选择一张牌置于牌堆顶','he',true);
|
await target.chooseCard('选择一张牌置于牌堆顶','he',true);
|
||||||
if(bool){
|
if(bool){
|
||||||
await target.lose(cards,ui.cardPile,'insert');
|
await target.lose(cards,ui.cardPile,'insert');
|
||||||
|
|
|
@ -971,7 +971,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
charlotte:true,
|
charlotte:true,
|
||||||
forced:true,
|
forced:true,
|
||||||
popup:false,
|
popup:false,
|
||||||
trigger:{global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','loseAfter','gainAfter','addToExpansionAfter']},
|
trigger:{global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','loseAfter','addToExpansionAfter']},
|
||||||
usable:1,
|
usable:1,
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
var target=player.storage.qimei_draw;
|
var target=player.storage.qimei_draw;
|
||||||
|
@ -1623,7 +1623,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
var list,skills=[];
|
var list,skills=[];
|
||||||
if(get.mode()=='guozhan'){
|
if(get.mode()=='guozhan'){
|
||||||
list=[];
|
list=[];
|
||||||
for(var i in lib.characterPack.mode_guozhan) list.push(i);
|
for(var i in lib.characterPack.mode_guozhan){
|
||||||
|
if(lib.character[i])list.push(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(_status.connectMode) list=get.charactersOL();
|
else if(_status.connectMode) list=get.charactersOL();
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -1871,7 +1871,10 @@ export class Get extends Uninstantable {
|
||||||
if (card) return list[0];
|
if (card) return list[0];
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
static judge(card) { return card.viewAs ? lib.card[card.viewAs].judge : get.info(card).judge; }
|
static judge(card) {
|
||||||
|
const cardInfo = (card.viewAs ? lib.card[card.viewAs] : get.info(card));
|
||||||
|
return (cardInfo && cardInfo.judge) ? cardInfo.judge : ()=>0;
|
||||||
|
}
|
||||||
static judge2(card) { return card.viewAs ? lib.card[card.viewAs].judge2 : get.info(card).judge2; }
|
static judge2(card) { return card.viewAs ? lib.card[card.viewAs].judge2 : get.info(card).judge2; }
|
||||||
static distance(from, to, method) {
|
static distance(from, to, method) {
|
||||||
if (from == to) return 0;
|
if (from == to) return 0;
|
||||||
|
|
|
@ -34,7 +34,7 @@ export const importMode = generateImportFunction('mode', (name) => `../../mode/$
|
||||||
*/
|
*/
|
||||||
function generateImportFunction(type, pathParser) {
|
function generateImportFunction(type, pathParser) {
|
||||||
return async (name) => {
|
return async (name) => {
|
||||||
if(type == 'extension' && !game.hasExtension(name)){
|
if(type == 'extension' && !game.hasExtension(name) && !lib.config.all.stockextension.includes(name)){
|
||||||
await game.import(type,createEmptyExtension(name));
|
await game.import(type,createEmptyExtension(name));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3921,8 +3921,8 @@ export class Library extends Uninstantable {
|
||||||
item: {
|
item: {
|
||||||
'6': '6',
|
'6': '6',
|
||||||
'12': '12',
|
'12': '12',
|
||||||
'20': '24',
|
'20': '20',
|
||||||
'30': '36',
|
'30': '30',
|
||||||
},
|
},
|
||||||
unfrequent: true
|
unfrequent: true
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue