commit
20b6493300
Binary file not shown.
|
@ -914,7 +914,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
var cards=_status.event.list[0];
|
var cards=_status.event.list[0];
|
||||||
var targets=_status.event.list[1];
|
var targets=_status.event.list[1];
|
||||||
var player=_status.event.player;
|
var player=_status.event.player;
|
||||||
if(get.attitude(player,targets[cards.indexOf(button.link)])) return 0;
|
if(get.attitude(player,targets[cards.indexOf(button.link)])>0) return 0;
|
||||||
return get.value(button.link,player);
|
return get.value(button.link,player);
|
||||||
}).set('list',[cards,targets]);
|
}).set('list',[cards,targets]);
|
||||||
}
|
}
|
||||||
|
@ -1069,15 +1069,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
audio:2,
|
audio:2,
|
||||||
trigger:{global:'phaseJieshuBegin'},
|
trigger:{global:'phaseJieshuBegin'},
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
|
if(!game.hasPlayer(target=>target.countCards('e',card=>get.subtype(card)!='equip5')<3||target.isLinked()||target.isTurnedOver()||target.isDamaged())) return false;
|
||||||
return player.getHistory('damage').length;
|
return player.getHistory('damage').length;
|
||||||
},
|
},
|
||||||
direct:true,
|
direct:true,
|
||||||
content:function(){
|
content:function(){
|
||||||
'step 0'
|
'step 0'
|
||||||
player.chooseTarget(get.prompt2('mbquesong')).set('ai',target=>{
|
player.chooseTarget(get.prompt2('mbquesong'),(card,player,target)=>{
|
||||||
|
return target.countCards('e',card=>get.subtype(card)!='equip5')<3||target.isLinked()||target.isTurnedOver()||target.isDamaged();
|
||||||
|
}).set('ai',target=>{
|
||||||
var player=_status.event.player;
|
var player=_status.event.player;
|
||||||
if(get.attitude(player,target)<=0) return 0;
|
if(get.attitude(player,target)<=0) return 0;
|
||||||
var len=Math.max(1,[1,2,3,4].reduce((p,c)=>p+target.countEmptySlot(c),0)),hp=target.getHp();
|
var len=Math.max(1,3-target.countCards('e',card=>get.subtype(card)!='equip5')),hp=target.getHp();
|
||||||
return len+target.isTurnedOver()*2+1.5*Math.min(4,target.getDamagedHp())/(hp+1);
|
return len+target.isTurnedOver()*2+1.5*Math.min(4,target.getDamagedHp())/(hp+1);
|
||||||
});
|
});
|
||||||
'step 1'
|
'step 1'
|
||||||
|
@ -1085,29 +1088,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
var target=result.targets[0];
|
var target=result.targets[0];
|
||||||
event.target=target;
|
event.target=target;
|
||||||
player.logSkill('mbquesong',target);
|
player.logSkill('mbquesong',target);
|
||||||
var len=Math.max(1,[1,2,3,4].reduce((p,c)=>p+target.countEmptySlot(c),0)),hp=target.getHp();
|
var len=Math.max(1,3-target.countCards('e',card=>get.subtype(card)!='equip5'));
|
||||||
if(hp==0||target.countCards('h')<hp) event._result={bool:false};
|
if(target.isHealthy()) event._result={index:0};
|
||||||
else{
|
else{
|
||||||
var str=`是否弃置${get.cnNumber(hp)}张手牌并回复1点体力?或点击“取消”摸${get.cnNumber(len)}张牌并复原武将牌。`;
|
target.chooseControl().set('choiceList',[
|
||||||
target.chooseToDiscard(get.translation(player)+'对你发动了【雀颂】',str,'h',hp).set('ai',card=>{
|
'摸'+get.cnNumber(len)+'张牌并复原武将牌',
|
||||||
if(!get.event('goon')) return 0;
|
'回复1点体力',
|
||||||
return 6-get.value(card);
|
]).set('prompt','雀颂:请选择一项').set('ai',()=>{
|
||||||
}).set('goon',function(){
|
var player=_status.event.player;
|
||||||
var _hp=hp+target.isTurnedOver()*1.5;
|
var len=_status.event.len;
|
||||||
if(_hp+player.countCards('hs',card=>get.tag(card,'recover'))<=2-len/4) return true;
|
return get.effect(player,{name:'wuzhong'},player,player)*len/2>=get.recoverEffect(player,player,player)?0:1;
|
||||||
return len<=_hp;
|
}).set('len',len);
|
||||||
}());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else event.finish();
|
else event.finish();
|
||||||
'step 2'
|
'step 2'
|
||||||
if(result.bool){
|
if(result.index==1){
|
||||||
target.recover();
|
target.recover();
|
||||||
event.finish();
|
event.finish();
|
||||||
}
|
}
|
||||||
else{
|
else target.draw(Math.max(1,3-target.countCards('e',card=>get.subtype(card)!='equip5')));
|
||||||
target.draw(Math.max(1,[1,2,3,4].reduce((p,c)=>p+target.countEmptySlot(c),0)));
|
|
||||||
}
|
|
||||||
'step 3'
|
'step 3'
|
||||||
target.link(false);
|
target.link(false);
|
||||||
'step 4'
|
'step 4'
|
||||||
|
@ -15601,7 +15601,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
mbhuiyao:'慧夭',
|
mbhuiyao:'慧夭',
|
||||||
mbhuiyao_info:'出牌阶段限一次。你可以受到1点无来源伤害,然后你选择一名其他角色,令其视为对另一名角色造成过1点伤害。',
|
mbhuiyao_info:'出牌阶段限一次。你可以受到1点无来源伤害,然后你选择一名其他角色,令其视为对另一名角色造成过1点伤害。',
|
||||||
mbquesong:'雀颂',
|
mbquesong:'雀颂',
|
||||||
mbquesong_info:'一名角色的结束阶段,若你于本回合受到过伤害,你可以令一名角色选择一项:1.摸等同于其装备区中非宝物栏中空栏的数量的牌并复原武将牌(至少摸一张牌);2.弃置等同于其体力值的手牌并回复1点体力。',
|
mbquesong_info:'一名角色的结束阶段,若你于本回合受到过伤害,你可以令一名角色选择一项:1.摸X张牌并复原武将牌(X为3-其装备区非宝物牌牌数,且X至少为1);2.回复1点体力。',
|
||||||
xin_yuanshao:'手杀界袁绍',
|
xin_yuanshao:'手杀界袁绍',
|
||||||
xin_yuanshao_prefix:'手杀界',
|
xin_yuanshao_prefix:'手杀界',
|
||||||
re_baosanniang:'手杀鲍三娘',
|
re_baosanniang:'手杀鲍三娘',
|
||||||
|
|
|
@ -15521,6 +15521,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
olxuanfeng:'旋风',
|
olxuanfeng:'旋风',
|
||||||
olxuanfeng_info:'当你一次性失去至少两张牌后,或失去装备区的牌后,你可以依次弃置一至两名其他角色的共计两张牌。',
|
olxuanfeng_info:'当你一次性失去至少两张牌后,或失去装备区的牌后,你可以依次弃置一至两名其他角色的共计两张牌。',
|
||||||
re_lidian:'界李典',
|
re_lidian:'界李典',
|
||||||
|
gz_re_lidian:'李典',
|
||||||
re_lidian_prefix:'界',
|
re_lidian_prefix:'界',
|
||||||
re_xushu:'界徐庶',
|
re_xushu:'界徐庶',
|
||||||
re_xushu_prefix:'界',
|
re_xushu_prefix:'界',
|
||||||
|
|
|
@ -14,9 +14,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
character:{
|
character:{
|
||||||
liuba:['male','shu',3,['duanbi','tongduo']],
|
liuba:['male','shu',3,['duanbi','tongduo']],
|
||||||
sp_zhujun:['male','qun',4,['yangjie','zjjuxiang','houfeng']],
|
sp_zhujun:['male','qun',4,['xinyangjie','xinjuxiang','houfeng']],
|
||||||
sp_huangfusong:['male','qun',4,['spzhengjun','spshiji','sptaoluan']],
|
sp_huangfusong:['male','qun',4,['spzhengjun','spshiji','sptaoluan']],
|
||||||
sp_lvfan:['male','wu',3,['spdiaodu','spdiancai','spyanji']],
|
sp_lvfan:['male','wu',3,['mbdiaodu','mbdiancai','spyanji']],
|
||||||
sp_jiangqing:['male','wu',4,['spjianyi','spshangyi']],
|
sp_jiangqing:['male','wu',4,['spjianyi','spshangyi']],
|
||||||
sp_jiangwan:['male','shu',3,['spzhenting','spjincui']],
|
sp_jiangwan:['male','shu',3,['spzhenting','spjincui']],
|
||||||
sp_zhangchangpu:['female','wei',3,['spdifei','spyanjiao']],
|
sp_zhangchangpu:['female','wei',3,['spdifei','spyanjiao']],
|
||||||
|
@ -244,6 +244,68 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
ai:{expose:10},
|
ai:{expose:10},
|
||||||
},
|
},
|
||||||
|
xinyangjie: {
|
||||||
|
audio: 'yangjie',
|
||||||
|
enable: 'phaseUse',
|
||||||
|
filter: function (event, player) {
|
||||||
|
return game.hasPlayer(function (target) {
|
||||||
|
return player.canCompare(target);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
filterTarget: function (card, player, target) {
|
||||||
|
return player.canCompare(target);
|
||||||
|
},
|
||||||
|
usable: 1,
|
||||||
|
content: function () {
|
||||||
|
'step 0'
|
||||||
|
player.chooseToCompare(target).set('small', true);
|
||||||
|
'step 1'
|
||||||
|
if (!result.bool && game.hasPlayer(function (current) {
|
||||||
|
return current != player && current != target && current.canUse({ name: 'sha', nature: 'fire', isCard: true }, target, false);
|
||||||
|
})) {
|
||||||
|
player.chooseTarget('佯解:是否选择另一名其他角色?', '令其视为对' + get.translation(target) + '使用一张火【杀】', function (card, player, target) {
|
||||||
|
return target != player && target != _status.event.getParent().target;
|
||||||
|
}).set('ai', function (target) {
|
||||||
|
var player = _status.event.player, target2 = _status.event.getParent().target;
|
||||||
|
return get.effect(target2, { name: 'sha', nature: 'fire', isCard: true }, target, player);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else event.finish();
|
||||||
|
'step 2'
|
||||||
|
if (result.bool) {
|
||||||
|
var source = result.targets[0];
|
||||||
|
player.line(source);
|
||||||
|
game.log(player, '选择了', source);
|
||||||
|
var card = { name: 'sha', nature: 'fire', isCard: true };
|
||||||
|
if (target.isIn() && source.isIn() && source.canUse(card, target, false)) source.useCard(card, target, false, 'noai');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ai: {
|
||||||
|
order: 3,
|
||||||
|
result: {
|
||||||
|
target: function (player, target) {
|
||||||
|
var hs = player.getCards('h').sort(function (a, b) {
|
||||||
|
return a.number - b.number;
|
||||||
|
});
|
||||||
|
var ts = target.getCards('h').sort(function (a, b) {
|
||||||
|
return a.number - b.number;
|
||||||
|
});
|
||||||
|
if (!hs.length || !ts.length) return 0;
|
||||||
|
if (hs[0].number <= ts[0].number) return -3;
|
||||||
|
if (player.countCards('h') >= target.countCards('h')) return -10;
|
||||||
|
return -1;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
xinjuxiang: {
|
||||||
|
audio: 'zjjuxiang',
|
||||||
|
inherit: 'zjjuxiang',
|
||||||
|
content: function () {
|
||||||
|
player.awakenSkill('xinjuxiang');
|
||||||
|
trigger.player.damage();
|
||||||
|
},
|
||||||
|
},
|
||||||
houfeng:{
|
houfeng:{
|
||||||
audio:3,
|
audio:3,
|
||||||
group:'houfeng_zhengsu',
|
group:'houfeng_zhengsu',
|
||||||
|
@ -582,6 +644,109 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
game.delayx();
|
game.delayx();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
mbdiaodu: {
|
||||||
|
audio: 'spdiaodu',
|
||||||
|
trigger: { player: 'phaseZhunbeiBegin' },
|
||||||
|
filter: function (event, player) {
|
||||||
|
return game.hasPlayer(function (target) {
|
||||||
|
return target.countCards('e', function (card) {
|
||||||
|
return game.hasPlayer(function (current) {
|
||||||
|
return current != player && current != target && current.canEquip(card);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
direct: true,
|
||||||
|
content: function () {
|
||||||
|
'step 0'
|
||||||
|
player.chooseTarget(get.prompt2('mbdiaodu'), function (card, player, target) {
|
||||||
|
return target.countCards('e', function (card) {
|
||||||
|
return game.hasPlayer(function (current) {
|
||||||
|
return current != player && current != target && current.canEquip(card);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}).set('ai', function (target) {
|
||||||
|
var player = _status.event.player, att = get.attitude(player, target);
|
||||||
|
if (att > 0) {
|
||||||
|
if (target.hasCard(function (card) {
|
||||||
|
if (get.value(card, target) <= 0 && game.hasPlayer(function (current) {
|
||||||
|
return current != player && current != target && current.canEquip(card, false) && get.effect(current, card, player, player) > 0;
|
||||||
|
})) return true;
|
||||||
|
return false;
|
||||||
|
}, 'e')) return 2 * att;
|
||||||
|
}
|
||||||
|
else if (att < 0) {
|
||||||
|
if (target.hasCard(function (card) {
|
||||||
|
if (get.value(card, target) >= 4.5 && game.hasPlayer(function (current) {
|
||||||
|
return current != player && current != target && current.canEquip(card) && get.effect(current, card, player, player) > 0;
|
||||||
|
})) return true;
|
||||||
|
return false;
|
||||||
|
}, 'e')) return -att;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
})
|
||||||
|
'step 1'
|
||||||
|
if (result.bool) {
|
||||||
|
var target = result.targets[0];
|
||||||
|
event.target = target;
|
||||||
|
player.logSkill('mbdiaodu', target);
|
||||||
|
}
|
||||||
|
else event.finish();
|
||||||
|
'step 2'
|
||||||
|
var es = target.getCards('e', function (card) {
|
||||||
|
return game.hasPlayer(function (current) {
|
||||||
|
return current != target && current.canEquip(card);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
if (es.length == 1) event._result = { bool: true, links: es };
|
||||||
|
else player.chooseButton(['移动' + get.translation(target) + '的一张装备牌', es], true).set('ai', function (button) {
|
||||||
|
var player = _status.event.player, target = _status.event.getParent().target, card = button.link;
|
||||||
|
if (game.hasPlayer(function (current) {
|
||||||
|
return current != player && current != target && current.canEquip(card) && get.effect(current, card, player, player) > 0;
|
||||||
|
})) return -get.value(card, target) * get.attitude(player, target);
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
'step 3'
|
||||||
|
if (result.bool) {
|
||||||
|
event.card = result.links[0];
|
||||||
|
player.chooseTarget('请选择' + get.translation(event.card) + '的移动目标', true, function (card, player, target) {
|
||||||
|
return target != player && target.canEquip(_status.event.card);
|
||||||
|
}).set('card', event.card).set('ai', function (target) {
|
||||||
|
var evt = _status.event;
|
||||||
|
return get.effect(target, evt.getParent().card, evt.player, evt.player);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else event.finish();
|
||||||
|
'step 4'
|
||||||
|
if (result.bool) {
|
||||||
|
var target2 = result.targets[0];
|
||||||
|
target.line(target2);
|
||||||
|
target.$give(card, target2);
|
||||||
|
game.delay(0.5);
|
||||||
|
target2.equip(card);
|
||||||
|
}
|
||||||
|
else event.finish();
|
||||||
|
'step 5'
|
||||||
|
target.draw();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mbdiancai: {
|
||||||
|
audio: 'spdiancai',
|
||||||
|
trigger: { global: 'phaseUseEnd' },
|
||||||
|
filter: function (event, player) {
|
||||||
|
if (_status.currentPhase == player) return false;
|
||||||
|
var num = 0;
|
||||||
|
player.getHistory('lose', function (evt) {
|
||||||
|
if (evt.cards2 && evt.getParent('phaseUse') == event) num += evt.cards2.length;
|
||||||
|
});
|
||||||
|
return num >= player.hp && player.countCards('h') < player.maxHp;
|
||||||
|
},
|
||||||
|
frequent: true,
|
||||||
|
content: function () {
|
||||||
|
var num = player.maxHp - player.countCards('h');
|
||||||
|
if (num > 0) player.draw(num);
|
||||||
|
},
|
||||||
|
},
|
||||||
spyanji:{
|
spyanji:{
|
||||||
audio:3,
|
audio:3,
|
||||||
group:'spyanji_zhengsu',
|
group:'spyanji_zhengsu',
|
||||||
|
@ -6665,6 +6830,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
spdiaodu_info:'准备阶段,你可令一名角色摸一张牌,然后移动其装备区内的一张牌。',
|
spdiaodu_info:'准备阶段,你可令一名角色摸一张牌,然后移动其装备区内的一张牌。',
|
||||||
spdiancai:'典财',
|
spdiancai:'典财',
|
||||||
spdiancai_info:'其他角色的结束阶段开始时,你可以令至多X名角色各摸一张牌(X为你本回合失去的手牌数)。',
|
spdiancai_info:'其他角色的结束阶段开始时,你可以令至多X名角色各摸一张牌(X为你本回合失去的手牌数)。',
|
||||||
|
mbdiaodu:'调度',
|
||||||
|
mbdiaodu_info:'准备阶段,你可以移动一名角色装备区内的一张牌(不能移动给自己),然后其摸一张牌。',
|
||||||
|
mbdiancai:'典财',
|
||||||
|
mbdiancai_info:'其他角色的出牌阶段阶段结束后,若你本阶段失去的牌数不小于你的体力值,则你可将手牌数补至体力上限。',
|
||||||
spyanji:'严纪',
|
spyanji:'严纪',
|
||||||
spyanji_info:'出牌阶段开始时,你可以进行“整肃”。',
|
spyanji_info:'出牌阶段开始时,你可以进行“整肃”。',
|
||||||
sp_huangfusong:'手杀皇甫嵩',
|
sp_huangfusong:'手杀皇甫嵩',
|
||||||
|
@ -6679,6 +6848,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
yangjie_info:'出牌阶段限一次,你可以摸一张牌并和一名其他角色A拼点。当你以此法展示你的拼点牌时,你令此牌点数-X(X为你已损失的体力值)。若你没赢,则你可以令另一名其他角色B获得两张拼点牌,然后其视为对A使用一张火【杀】。',
|
yangjie_info:'出牌阶段限一次,你可以摸一张牌并和一名其他角色A拼点。当你以此法展示你的拼点牌时,你令此牌点数-X(X为你已损失的体力值)。若你没赢,则你可以令另一名其他角色B获得两张拼点牌,然后其视为对A使用一张火【杀】。',
|
||||||
zjjuxiang:'拒降',
|
zjjuxiang:'拒降',
|
||||||
zjjuxiang_info:'限定技。一名其他角色脱离濒死状态时,你可以对其造成1点伤害,然后摸X张牌(X为其体力上限且至多为5)。',
|
zjjuxiang_info:'限定技。一名其他角色脱离濒死状态时,你可以对其造成1点伤害,然后摸X张牌(X为其体力上限且至多为5)。',
|
||||||
|
xinyangjie:'佯解',
|
||||||
|
xinyangjie_info:'出牌阶段限一次,你可以与一名其他角色A拼点。若你没赢,则你可以令另一名其他角色B视为对A使用一张火【杀】。',
|
||||||
|
xinjuxiang:'拒降',
|
||||||
|
xinjuxiang_info:'限定技,一名其他角色脱离濒死状态时,你可以对其造成1点伤害。',
|
||||||
houfeng:'厚俸',
|
houfeng:'厚俸',
|
||||||
houfeng_info:'每轮限一次。一名其他角色的出牌阶段开始时,若其在你的攻击范围内,则你可以令其进行“整肃”。然后当其于本回合内因整肃而摸牌或回复体力后,你获得相同的整肃奖励。',
|
houfeng_info:'每轮限一次。一名其他角色的出牌阶段开始时,若其在你的攻击范围内,则你可以令其进行“整肃”。然后当其于本回合内因整肃而摸牌或回复体力后,你获得相同的整肃奖励。',
|
||||||
liuba:'手杀刘巴',
|
liuba:'手杀刘巴',
|
||||||
|
|
|
@ -1554,6 +1554,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
||||||
});
|
});
|
||||||
return !player.wontYe('wei')||!game.hasPlayer(current=>current.identity=='wei')
|
return !player.wontYe('wei')||!game.hasPlayer(current=>current.identity=='wei')
|
||||||
},
|
},
|
||||||
|
check:function(event,player,name){
|
||||||
|
return name!='damageBegin1';
|
||||||
|
},
|
||||||
content:function(){
|
content:function(){
|
||||||
trigger.num++;
|
trigger.num++;
|
||||||
},
|
},
|
||||||
|
@ -6258,7 +6261,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
return !player.getHistory('useCard').length||!player.getHistory('sourceDamage').length;
|
return !player.getHistory('useCard').length||!player.getHistory('sourceDamage').length;
|
||||||
},
|
},
|
||||||
check:()=>false,
|
check:function(event,player){
|
||||||
|
return !player.getHistory('useCard').length;
|
||||||
|
},
|
||||||
content:function(){
|
content:function(){
|
||||||
lib.skill.rekuangcai.change(player,player.getHistory('useCard').length?-1:1);
|
lib.skill.rekuangcai.change(player,player.getHistory('useCard').length?-1:1);
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue