Merge pull request #225 from mengxinzxz/PR-Branch

高望second
This commit is contained in:
Spmario233 2023-08-22 21:54:53 +08:00 committed by GitHub
commit bb02b1072b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 136 additions and 106 deletions

BIN
audio/skill/spxizhan3.mp3 Normal file

Binary file not shown.

BIN
audio/skill/spxizhan4.mp3 Normal file

Binary file not shown.

BIN
audio/skill/tspowei3.mp3 Normal file

Binary file not shown.

View File

@ -2935,22 +2935,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
tspowei:{ tspowei:{
audio:2, audio:3,
dutySkill:true, dutySkill:true,
forced:true, locked:true,
trigger:{global:'damageEnd'},
logTarget:'player',
filter:function(event,player){
return event.player&&event.player.isIn()&&event.player.hasMark('dulie');
},
content:function(){
trigger.player.removeMark('dulie',trigger.player.countMark('dulie'));
},
derivation:'shenzhu', derivation:'shenzhu',
group:['tspowei_init','tspowei_move','tspowei_achieve','tspowei_fail','tspowei_use'], group:['tspowei_init','tspowei_move','tspowei_achieve','tspowei_fail','tspowei_use','tspowei_remove'],
subSkill:{ subSkill:{
remove:{
audio:'tspowei3',
trigger:{global:'damageEnd'},
filter:function(event,player){
return event.player&&event.player.isIn()&&event.player.hasMark('dulie');
},
forced:true,
logTarget:'player',
content:function(){
trigger.player.removeMark('dulie',trigger.player.countMark('dulie'));
},
},
use:{ use:{
audio:'tspowei', audio:'tspowei3',
trigger:{global:'phaseBegin'}, trigger:{global:'phaseBegin'},
direct:true, direct:true,
filter:function(event,player){ filter:function(event,player){
@ -3004,7 +3008,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
init:{ init:{
audio:'tspowei', audio:'tspowei3',
trigger:{ trigger:{
global:'phaseBefore', global:'phaseBefore',
player:'enterGame', player:'enterGame',
@ -3022,7 +3026,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
move:{ move:{
audio:'tspowei', audio:'tspowei3',
trigger:{player:'phaseBegin'}, trigger:{player:'phaseBegin'},
forced:true, forced:true,
filter:function(event,player){ filter:function(event,player){
@ -3078,6 +3082,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
tspowei1:{audio:true}, tspowei1:{audio:true},
tspowei2:{audio:true}, tspowei2:{audio:true},
tspowei3:{audio:true},
shenzhu:{ shenzhu:{
audio:2, audio:2,
trigger:{player:'useCardAfter'}, trigger:{player:'useCardAfter'},

View File

@ -577,7 +577,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var next=game.createEvent('mbdanggu_clique'); var next=game.createEvent('mbdanggu_clique');
next.player=player; next.player=player;
next.setContent(lib.skill.mbdanggu.contentx); next.setContent(lib.skill.mbdanggu.contentx);
player.draw(2); player.draw();
} }
} }
} }
@ -1628,7 +1628,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return event.name=='respond'?0.5:false; return event.name=='respond'?0.5:false;
}, },
filter:function(event,player){ filter:function(event,player){
return ['shan','wuxie'].contains(event.card.name)&&evt.skill=='scsmiaoyu'&&event.cards&&event.cards.length==2&&_status.currentPhase&&_status.currentPhase!=player&&_status.currentPhase.countDiscardableCards(player,'he'); return ['shan','wuxie'].contains(event.card.name)&&event.skill=='scsmiaoyu'&&event.cards&&event.cards.length==2&&_status.currentPhase&&_status.currentPhase!=player&&_status.currentPhase.countDiscardableCards(player,'he');
}, },
forced:true, forced:true,
popup:false, popup:false,
@ -13775,7 +13775,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mbzhenfu_info:'结束阶段若你本回合因弃置失去过牌你可以令一名其他角色获得1点护甲。', mbzhenfu_info:'结束阶段若你本回合因弃置失去过牌你可以令一名其他角色获得1点护甲。',
shichangshi:'十常侍', shichangshi:'十常侍',
mbdanggu:'党锢', mbdanggu:'党锢',
mbdanggu_info:'锁定技。①游戏开始时,你获得十张“常侍”牌,然后你进行一次结党。②当你修整结束后,你进行一次结党并摸张牌。③若你有亮出的“常侍”牌,你视为拥有这些牌的技能。', mbdanggu_info:'锁定技。①游戏开始时,你获得十张“常侍”牌,然后你进行一次结党。②当你修整结束后,你进行一次结党并摸张牌。③若你有亮出的“常侍”牌,你视为拥有这些牌的技能。',
mbdanggu_faq:'关于结党', mbdanggu_faq:'关于结党',
mbdanggu_faq_info:'<br>系统随机选择一张未亮出过的“常侍”牌,然后选择四张未亮出过的“常侍”牌(若剩余“常侍”牌中有「高望」,则必定出现)。你观看前者,然后从后者中选择一名与前者互相认可的“常侍”牌(不认可的“常侍”牌为不可选状态),你选择这两张牌。然后若此时不为双将模式,你将这两张武将牌作为你的武将牌(不移除原有技能);否则你获得这两张武将牌上的技能。', mbdanggu_faq_info:'<br>系统随机选择一张未亮出过的“常侍”牌,然后选择四张未亮出过的“常侍”牌(若剩余“常侍”牌中有「高望」,则必定出现)。你观看前者,然后从后者中选择一名与前者互相认可的“常侍”牌(不认可的“常侍”牌为不可选状态),你选择这两张牌。然后若此时不为双将模式,你将这两张武将牌作为你的武将牌(不移除原有技能);否则你获得这两张武将牌上的技能。',
mbmowang:'殁亡', mbmowang:'殁亡',

View File

@ -1083,65 +1083,72 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
spxizhan:{ spxizhan:{
trigger:{global:'phaseBegin'}, audio:4,
forced:true, group:'spxizhan_effect',
locked:false, locked:true,
logTarget:'player',
filter:function(event,player){
return player!=event.player;
},
content:function(){
'step 0'
player.chooseToDiscard('he','嬉战弃置一张牌或失去1点体力','根据弃置的牌对'+get.translation(trigger.player)+'视为使用如下牌:<br>♠,其使用【酒】;♥,你使用【无中生有】<br>♣,对其使用【铁索连环】;♦:对其使用火【杀】').set('ai',function(card){
var player=_status.event.player,target=_status.event.getTrigger().player;
var suit=get.suit(card,player),list;
switch(suit){
case 'spade':list=[{name:'jiu'},target,target];break;
case 'heart':list=[{name:'wuzhong'},player,player];break;
case 'club':list=[{name:'tiesuo'},player,target];break;
case 'diamond':list=[{name:'sha',nature:'fire'},player,target];break;
}
list[0].isCard=true;
var eff=0;
if(list[1].canUse(list[0],list[2],false)) eff=get.effect(list[2],list[0],list[1],player);
if(eff>=0||suit=='club') eff=Math.max(eff,5);
return eff*1.5-get.value(card);
});
'step 1'
if(result.bool){
player.addTempSkill('spxizhan_spfangzong');
var target=trigger.player,card=result.cards[0],suit=get.suit(card,player);
if((!target||!target.isIn())&&suit!='heart') return;
switch(suit){
case 'spade':
target.chooseUseTarget('jiu',true);
break;
case 'heart':
player.chooseUseTarget('wuzhong',true);
break;
case 'club':
if(player.canUse('tiesuo',target)) player.useCard({
name:'tiesuo',
isCard:true,
},target);
break;
case 'diamond':
if(player.canUse({
name:'sha',
isCard:true,
nature:'fire',
},target,false)) player.useCard({
name:'sha',
isCard:true,
nature:'fire',
},target,false);
break;
}
}
else player.loseHp();
},
subSkill:{ subSkill:{
spfangzong:{charlotte:true}, spfangzong:{charlotte:true},
effect:{
trigger:{global:'phaseBegin'},
filter:function(event,player){
return player!=event.player;
},
forced:true,
logTarget:'player',
content:function(){
'step 0'
player.chooseToDiscard('he','嬉战弃置一张牌或失去1点体力','根据弃置的牌对'+get.translation(trigger.player)+'视为使用如下牌:<br>♠,其使用【酒】;♥,你使用【无中生有】<br>♣,对其使用【铁索连环】;♦:对其使用火【杀】').set('ai',function(card){
var player=_status.event.player,target=_status.event.getTrigger().player;
var suit=get.suit(card,player),list;
switch(suit){
case 'spade':list=[{name:'jiu'},target,target];break;
case 'heart':list=[{name:'wuzhong'},player,player];break;
case 'club':list=[{name:'tiesuo'},player,target];break;
case 'diamond':list=[{name:'sha',nature:'fire'},player,target];break;
}
list[0].isCard=true;
var eff=0;
if(list[1].canUse(list[0],list[2],false)) eff=get.effect(list[2],list[0],list[1],player);
if(eff>=0||suit=='club') eff=Math.max(eff,5);
return eff*1.5-get.value(card);
});
'step 1'
if(result.bool){
player.addTempSkill('spxizhan_spfangzong');
var target=trigger.player,card=result.cards[0],suit=get.suit(card,player);
if(!lib.suit.contains(suit)||(!target||!target.isIn())&&suit!='heart') return;
game.broadcastAll(function(suit){
if(lib.config.background_speak) game.playAudio('skill','spfangzong'+(4-lib.suit.indexOf(suit)));
},suit);
switch(suit){
case 'spade':
target.chooseUseTarget('jiu',true);
break;
case 'heart':
player.chooseUseTarget('wuzhong',true);
break;
case 'club':
if(player.canUse('tiesuo',target)) player.useCard({
name:'tiesuo',
isCard:true,
},target);
break;
case 'diamond':
if(player.canUse({
name:'sha',
isCard:true,
nature:'fire',
},target,false)) player.useCard({
name:'sha',
isCard:true,
nature:'fire',
},target,false);
break;
}
}
else player.loseHp();
},
},
}, },
}, },
//高览 //高览
@ -1906,28 +1913,31 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//周处 //周处
rechuhai:{ rechuhai:{
audio:'chuhai', audio:'chuhai',
inherit:'chuhai',
dutySkill:true, dutySkill:true,
locked:true, locked:true,
group:['rechuhai_add','rechuhai_achieve','rechuhai_fail'], group:['rechuhai_add','rechuhai_achieve','rechuhai_fail','rechuhai_chuhai'],
derivation:'zhangming', derivation:'zhangming',
prompt:'与一名其他角色进行拼点',
subSkill:{ subSkill:{
chuhai:{
audio:['chuhai',2],
inherit:'chuhai',
prompt:'与一名其他角色进行拼点',
},
add:{ add:{
trigger:{player:'compare'}, trigger:{player:'compare'},
forced:true, forced:true,
popup:false, popup:false,
filter:function(event,player){ filter:function(event,player){
return event.getParent().name=='rechuhai'&&event.num1<13&&player.countCards('e')<4; return event.getParent().name=='rechuhai_chuhai'&&event.num1<13&&player.countCards('e')<4;
}, },
content:function(){ content:function(){
var num=4-player.countCards('e'); var num=4-player.countCards('e');
game.log(player,'的拼点牌点数+',num); game.log(player,'的拼点牌点数+',num);
trigger.num1=Math.min(13,trigger.num1+num); trigger.num1=Math.min(13,trigger.num1+num);
} },
}, },
achieve:{ achieve:{
audio:'rechuhai', audio:['chuhai',2],
trigger:{player:'equipAfter'}, trigger:{player:'equipAfter'},
forced:true, forced:true,
skillAnimation:true, skillAnimation:true,
@ -1944,10 +1954,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
fail:{ fail:{
audio:'chuhai3',
trigger:{player:'chooseToCompareAfter'}, trigger:{player:'chooseToCompareAfter'},
forced:true, forced:true,
filter:function(event,player){ filter:function(event,player){
return event.getParent().name=='rechuhai'&&event.num1<7&&!event.result.bool; return event.getParent().name=='rechuhai_chuhai'&&event.num1<7&&!event.result.bool;
}, },
content:function(){ content:function(){
player.awakenSkill('rechuhai'); player.awakenSkill('rechuhai');
@ -1956,6 +1967,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
}, },
chuhai3:{audio:true},
zhangming:{ zhangming:{
audio:2, audio:2,
trigger:{player:'useCard'}, trigger:{player:'useCard'},
@ -2040,7 +2052,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
chuhai:{ chuhai:{
audio:2, audio:3,
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,
filter:function(event,player){ filter:function(event,player){
@ -2476,8 +2488,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'useCardAfter'}, trigger:{player:'useCardAfter'},
dutySkill:true, dutySkill:true,
forced:true, forced:true,
skillAnimation:true, direct:true,
animationColor:'water',
filter:function(event,player){ filter:function(event,player){
if(!player.storage.xingqi||!player.storage.xingqi.length) return false; if(!player.storage.xingqi||!player.storage.xingqi.length) return false;
var map={basic:0,trick:0,equip:0}; var map={basic:0,trick:0,equip:0};
@ -2492,6 +2503,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
content:function(){ content:function(){
'step 0' 'step 0'
player.logSkill('twmibei_achieve');
game.log(player,'成功完成使命'); game.log(player,'成功完成使命');
player.awakenSkill('mibei'); player.awakenSkill('mibei');
var list=['basic','equip','trick'],cards=[]; var list=['basic','equip','trick'],cards=[];
@ -2509,6 +2521,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
derivation:'xinmouli', derivation:'xinmouli',
subSkill:{ subSkill:{
silent:{ silent:{
charlotte:true,
trigger:{player:'phaseZhunbeiBegin'}, trigger:{player:'phaseZhunbeiBegin'},
silent:true, silent:true,
lastDo:true, lastDo:true,
@ -2518,15 +2531,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){ content:function(){
player.addTempSkill('mibei_mark'); player.addTempSkill('mibei_mark');
}, },
charlotte:true,
}, },
mark:{}, mark:{charlotte:true},
fail:{ fail:{
audio:'mibei2',
trigger:{player:'phaseJieshuBegin'}, trigger:{player:'phaseJieshuBegin'},
forced:true,
filter:function(event,player){ filter:function(event,player){
return !player.getStorage('xingqi').length&&player.hasSkill('mibei_mark'); return !player.getStorage('xingqi').length&&player.hasSkill('mibei_mark');
}, },
forced:true,
content:function(){ content:function(){
game.log(player,'使命失败'); game.log(player,'使命失败');
player.awakenSkill('mibei'); player.awakenSkill('mibei');
@ -2535,6 +2548,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
}, },
mibei1:{audio:true},
mibei2:{audio:true},
xinmouli:{ xinmouli:{
audio:'mouli', audio:'mouli',
enable:'phaseUse', enable:'phaseUse',
@ -2909,20 +2924,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){
qingyu:{ qingyu:{
audio:3, audio:3,
dutySkill:true, dutySkill:true,
trigger:{player:'damageBegin2'}, locked:true,
forced:true, group:['qingyu_achieve','qingyu_fail','qingyu_defend'],
filter:function(event,player){
return player.countCards('he',function(card){
return lib.filter.cardDiscardable(card,player,'qingyu');
})>1;
},
content:function(){
trigger.cancel();
player.chooseToDiscard(2,'he',true);
},
group:['qingyu_achieve','qingyu_fail'],
subSkill:{ subSkill:{
defend:{
audio:'qingyu1',
trigger:{player:'damageBegin2'},
filter:function(event,player){
return player.countCards('he',function(card){
return lib.filter.cardDiscardable(card,player,'qingyu_defend');
})>1;
},
forced:true,
content:function(){
trigger.cancel();
player.chooseToDiscard(2,'he',true);
},
},
achieve:{ achieve:{
audio:'qingyu3',
trigger:{player:'phaseZhunbeiBegin'}, trigger:{player:'phaseZhunbeiBegin'},
forced:true, forced:true,
skillAnimation:true, skillAnimation:true,
@ -2937,6 +2957,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
fail:{ fail:{
audio:'qingyu2',
trigger:{player:'dying'}, trigger:{player:'dying'},
forced:true, forced:true,
content:function(){ content:function(){
@ -2948,6 +2969,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
derivation:'xuancun', derivation:'xuancun',
}, },
qingyu1:{audio:true},
qingyu2:{audio:true},
qingyu3:{audio:true},
xuancun:{ xuancun:{
audio:2, audio:2,
trigger:{global:'phaseEnd'}, trigger:{global:'phaseEnd'},
@ -6502,9 +6526,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
spxiangzhen:'象阵', spxiangzhen:'象阵',
spxiangzhen_info:'锁定技。①【南蛮入侵】对你无效。②当有角色使用的【南蛮入侵】结算结束后,若有角色因此牌受到过伤害,则你和使用者各摸一张牌。', spxiangzhen_info:'锁定技。①【南蛮入侵】对你无效。②当有角色使用的【南蛮入侵】结算结束后,若有角色因此牌受到过伤害,则你和使用者各摸一张牌。',
spfangzong:'芳踪', spfangzong:'芳踪',
spfangzong_info:'锁定技。若你于当前回合内未发动过〖嬉战〗选择过选项二,则:①你不能于回合内使用具有伤害标签的牌指定攻击范围内的角色为目标。②攻击范围内包含你的角色不能使用具有伤害标签的牌指定你为目标。③结束阶段你将手牌摸至X张X为场上存活人数且至多为8', spfangzong_info:'锁定技。①你不能于回合内使用具有伤害标签的牌指定攻击范围内的角色为目标。②攻击范围内包含你的角色不能使用具有伤害标签的牌指定你为目标。③结束阶段你将手牌摸至X张X为场上存活人数且至多为8',
spxizhan:'嬉战', spxizhan:'嬉战',
spxizhan_info:'其他角色的回合开始时你须选择一项①失去1点体力。②弃置一张牌然后若此牌的花色为:♠,其视为使用一张【酒】;♥,你视为使用一张【无中生有】;♣,你视为对其使用【铁索连环】;♦:你视为对其使用火【杀】(无距离限制)。', spxizhan_info:'其他角色的回合开始时你须选择一项①失去1点体力。②弃置一张牌并令〖芳踪〗于本回合失效,然后若此牌的花色为:♠,其视为使用一张【酒】;♥,你视为使用一张【无中生有】;♣,你视为对其使用【铁索连环】;♦:你视为对其使用火【杀】(无距离限制)。',
sp_cuiyan:'手杀崔琰', sp_cuiyan:'手杀崔琰',
spyajun:'雅俊', spyajun:'雅俊',
spyajun_info:'①摸牌阶段,你令额定摸牌数+1。②出牌阶段开始时你可以用一张本回合获得的牌与其他角色拼点。若你赢则你可将其中一张拼点牌置于牌堆顶。若你没赢你本回合的手牌上限-1。', spyajun_info:'①摸牌阶段,你令额定摸牌数+1。②出牌阶段开始时你可以用一张本回合获得的牌与其他角色拼点。若你赢则你可将其中一张拼点牌置于牌堆顶。若你没赢你本回合的手牌上限-1。',

View File

@ -2409,7 +2409,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
intro:{content:'已使用牌名:$'}, intro:{content:'已使用牌名:$'},
subSkill:{ subSkill:{
achieve:{ achieve:{
audio:'mibei', audio:'mibei1',
skillAnimation:true, skillAnimation:true,
animationColor:'water', animationColor:'water',
}, },
@ -2427,7 +2427,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
fail:{ fail:{
audio:'mibei', audio:'mibei2',
trigger:{player:'phaseUseEnd'}, trigger:{player:'phaseUseEnd'},
forced:true, forced:true,
filter:function(event,player){ filter:function(event,player){
@ -11190,7 +11190,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
direct:true, direct:true,
filter:function(event,player){ filter:function(event,player){
return player.getHistory('lose',function(evt){ return player.getHistory('lose',function(evt){
return evt.getParent(2).name=='twgezhi'&&evt.getParent('phaseUse')==event; return evt.getParent(3).name=='twgezhi'&&evt.getParent('phaseUse')==event;
}).length>1; }).length>1;
}, },
content:function(){ content:function(){

View File

@ -1613,9 +1613,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
content:function(){ content:function(){
var target=trigger.player; var target=trigger.player;
target.addTempSkill('yifa2'); target.addTempSkill('yifa2',{player:'phaseEnd'});
target.addMark('yifa2',1,false); target.addMark('yifa2',1,false);
}, },
ai:{threaten:0.8},
}, },
yifa2:{ yifa2:{
charlotte:true, charlotte:true,
@ -3719,7 +3720,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
bolan_info:'①出牌阶段开始时你可从三个描述中带有“出牌阶段限一次”的技能中选择一个令当前回合角色获得直至此阶段结束。②其他角色出牌阶段限一次其可以失去1点体力令你发动一次〖博览①〗。', bolan_info:'①出牌阶段开始时你可从三个描述中带有“出牌阶段限一次”的技能中选择一个令当前回合角色获得直至此阶段结束。②其他角色出牌阶段限一次其可以失去1点体力令你发动一次〖博览①〗。',
yifa:'仪法', yifa:'仪法',
yifa2:'仪法', yifa2:'仪法',
yifa_info:'锁定技,其他角色使用【杀】或黑色普通锦囊牌指定你为目标后,其手牌上限-1直到回合结束。', yifa_info:'锁定技,其他角色使用【杀】或黑色普通锦囊牌指定你为目标后,其手牌上限-1直到回合结束。',
ol_huaxin:'OL华歆', ol_huaxin:'OL华歆',
caozhao:'草诏', caozhao:'草诏',
caozhao_backup:'草诏', caozhao_backup:'草诏',