Merge pull request #1106 from mengxinzxz/PR-Branch
OL界王异;族王沦改晋势力;bugfix;还原部分无名杀彩蛋
This commit is contained in:
commit
e079a470c6
|
@ -20,7 +20,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
clan_wanghun:['male','jin',3,['clanfuxun','clanchenya','clanzhongliu'],['clan:太原王氏']],
|
||||
clan_zhonghui:['male','wei','3/4',['clanyuzhi','clanxieshu','clanbaozu'],['clan:颍川钟氏']],
|
||||
clan_zhongyu:['male','wei',3,['clanjiejian','clanhuanghan','clanbaozu'],['clan:颍川钟氏']],
|
||||
clan_wanglun:['male','wei',3,['clanqiuxin','clanjianyuan','clanzhongliu'],['clan:太原王氏']],
|
||||
clan_wanglun:['male','jin',3,['clanqiuxin','clanjianyuan','clanzhongliu'],['clan:太原王氏']],
|
||||
clan_xunyou:['male','wei',3,['clanbaichu','clandaojie'],['clan:颍川荀氏']],
|
||||
clan_wuqiao:['male','jin',4,['clanqiajue','clanmuyin'],['clan:陈留吴氏']],
|
||||
},
|
||||
|
|
298
character/ddd.js
298
character/ddd.js
|
@ -1630,185 +1630,147 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
dddzhengjun:{
|
||||
trigger:{
|
||||
global:['loseAfter','equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
|
||||
},
|
||||
trigger:{global:['damageEnd','loseHpEnd','recoverEnd','loseAfter','equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter']},
|
||||
filter(event,player){
|
||||
if(!player.isPhaseUsing()) return false;
|
||||
var boolh=!player.hasSkill('dddzhengjun_handcard',null,false,false),boole=(!player.hasSkill('dddzhengjun_equip')&&player.canMoveCard(null,true));
|
||||
var hs=player.countCards('h'),es=player.countCards('e');
|
||||
return game.hasPlayer(function(current){
|
||||
// if(player==current) return false;
|
||||
if(boolh&¤t.countCards('h')==hs){
|
||||
var num=event.getl(current).hs.length;
|
||||
if(event.getg) num-=event.getg(current).length;
|
||||
if(num!=0) return game.hasPlayer(current=>{
|
||||
if(player==current) return false;
|
||||
return current.countCards('h')==player.countCards('h');
|
||||
});
|
||||
if(event.name=='damage'||event.name=='loseHp'||event.name=='recover'){
|
||||
if(player.hasSkill('dddzhengjun_hp')) return false;
|
||||
return event.player.getHp()==player.getHp();
|
||||
}
|
||||
return game.hasPlayer(target=>{
|
||||
if(event.getg&&event.getg(target)&&event.getg(target).length){
|
||||
return !player.hasSkill('dddzhengjun_hs')&&target.countCards('h')==player.countCards('h');
|
||||
}
|
||||
if(boole&¤t.countCards('e')==es){
|
||||
var num=event.getl(current).es.length;
|
||||
if(event.name=='equip'&¤t==event.player) num--;
|
||||
if(num!=0) return game.hasPlayer(current=>{
|
||||
if(player==current) return false;
|
||||
return current.countCards('e')==player.countCards('e');
|
||||
});
|
||||
const evt=event.getl(target);
|
||||
if(evt){
|
||||
if(evt.hs&&evt.hs.length){
|
||||
return !player.hasSkill('dddzhengjun_hs')&&target.countCards('h')==player.countCards('h');
|
||||
}
|
||||
if(evt.es&&evt.es.length){
|
||||
return !player.hasSkill('dddzhengjun_es')&&target.countCards('e')==player.countCards('e')&&player.canMoveCard(null,true,target);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
},
|
||||
direct:true,
|
||||
*content(event,map){
|
||||
var player=map.player,trigger=map.trigger;
|
||||
var boolh=!player.hasSkill('dddzhengjun_handcard',null,false,false),hs=player.countCards('h');
|
||||
if(boolh&&game.hasPlayer(function(current){
|
||||
// if(player==current) return false;
|
||||
if(boolh&¤t.countCards('h')==hs){
|
||||
var num=trigger.getl(current).hs.length;
|
||||
if(trigger.getg) num-=trigger.getg(current).length;
|
||||
if(num!=0) return game.hasPlayer(current=>{
|
||||
if(player==current) return false;
|
||||
return current.countCards('h')==player.countCards('h');
|
||||
});
|
||||
}
|
||||
return false;
|
||||
})){
|
||||
var result=yield player.chooseTarget(get.prompt('dddzhengjun'),'令一名手牌数与你相等的其他角色摸或弃置一张牌',(card,player,target)=>{
|
||||
return player.countCards('h')==target.countCards('h')&&player!=target;
|
||||
}).set('ai',target=>{
|
||||
var player=get.player();
|
||||
return Math.max(get.effect(target,{name:'draw'},player,player),get.effect(target,{name:'guohe'},player,player)/2);
|
||||
async cost(event,trigger,player){
|
||||
if(trigger.name=='damage'||trigger.name=='loseHp'||trigger.name=='recover'){
|
||||
let list=['失去体力','cancel2'];
|
||||
if(trigger.player.isDamaged()) list.unshift('回复体力');
|
||||
const {result:{control}}=await player.chooseControl(list)
|
||||
.set('prompt',get.prompt('dddzhengjun',trigger.player))
|
||||
.set('prompt2','令'+get.translation(event.player)+'执行其中一项')
|
||||
.set('ai',()=>{
|
||||
const player=get.event('player'),target=get.event().getTrigger().player;
|
||||
if(get.event('controls').includes('回复体力')&&get.recoverEffect(target,player,player)>0) return '回复体力';
|
||||
return get.effect(target,{name:'losehp'},player,player)>0?'失去体力':'cancel2';
|
||||
});
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
var choices=['摸牌'];
|
||||
if(target.countCards('he')) choices.push('弃牌');
|
||||
result=yield player.chooseControl(choices).set('prompt',`整军:请选择一项`).set('prompt2',`令${get.translation(target)}摸一张牌或弃置一张牌`).set('ai',()=>{
|
||||
return get.event('choice');
|
||||
}).set('choice',get.attitude(player,target)>0||!choices.includes('弃牌')?0:1);
|
||||
player.logSkill('dddzhengjun',target);
|
||||
player.addTempSkill('dddzhengjun_handcard','phaseUseAfter');
|
||||
if(result.control=='摸牌') target.draw();
|
||||
else target.chooseToDiscard('he',true);
|
||||
}
|
||||
event.result={
|
||||
bool:control!='cancel2',
|
||||
targets:[trigger.player],
|
||||
cost_data:control,
|
||||
};
|
||||
}
|
||||
var boole=(!player.hasSkill('dddzhengjun_equip')&&player.canMoveCard(null,true)),es=player.countCards('h');
|
||||
if(boolh&&game.hasPlayer(function(current){
|
||||
// if(player==current) return false;
|
||||
if(boole&¤t.countCards('e')==es){
|
||||
var num=trigger.getl(current).es.length;
|
||||
if(trigger.name=='equip'&&trigger.player==current) num--;
|
||||
if(num!=0) return game.hasPlayer(current=>{
|
||||
if(player==current) return false;
|
||||
return current.countCards('e')==player.countCards('e');
|
||||
});
|
||||
}
|
||||
return false;
|
||||
})){
|
||||
var result=yield player.chooseBool(get.prompt('dddzhengjun'),'移动一名装备区牌数与你相等的其他角色装备区里的一张牌').set('ai',function(){
|
||||
var targets=game.filterPlayer(target=>player.countCards('e')==target.countCards('e')&&player!=target);
|
||||
return get.player().canMoveCard(true,true,targets);
|
||||
});
|
||||
if(result.bool){
|
||||
player.logSkill('dddzhengjun');
|
||||
player.addTempSkill('dddzhengjun_equip','phaseUseAfter');
|
||||
player.moveCard(true,true,game.filterPlayer(target=>player.countCards('e')==target.countCards('e')&&player!=target));
|
||||
}
|
||||
}
|
||||
},
|
||||
content_old(){
|
||||
'step 0'
|
||||
var boolh=!player.hasSkill('dddzhengjun_handcard',null,false,false),hs=player.countCards('h');
|
||||
if(boolh&&game.hasPlayer(function(current){
|
||||
if(player==current) return false;
|
||||
if(boolh&¤t.countCards('h')==hs){
|
||||
var num=trigger.getl(current).hs.length;
|
||||
if(trigger.getg) num-=trigger.getg(current).length;
|
||||
if(num!=0) return true;
|
||||
}
|
||||
return false;
|
||||
})){
|
||||
player.chooseTarget('整军:是否令一名角色摸一张牌?').set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.effect(target,{name:'draw'},player,player);
|
||||
});
|
||||
}
|
||||
else event.goto(2);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('dddzhengjun',target);
|
||||
player.addTempSkill('dddzhengjun_handcard','phaseUseAfter');
|
||||
target.draw();
|
||||
}
|
||||
'step 2'
|
||||
var boole=(!player.hasSkill('dddzhengjun_equip')&&player.canMoveCard(null,true)),es=player.countCards('h');
|
||||
if(boolh&&game.hasPlayer(function(current){
|
||||
if(player==current) return false;
|
||||
if(boole&¤t.countCards('e')==es){
|
||||
var num=trigger.getl(current).es.length;
|
||||
if(trigger.name=='equip'&&trigger.player==current) num--;
|
||||
if(num!=0) return true;
|
||||
}
|
||||
return false;
|
||||
})){
|
||||
player.chooseBool('整军:是否移动场上的一张装备牌?').set('ai',function(){
|
||||
return _status.event.player.canMoveCard(true,true);
|
||||
})
|
||||
}
|
||||
else event.finish();
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
player.logSkill('dddzhengjun');
|
||||
player.addTempSkill('dddzhengjun_equip','phaseUseAfter');
|
||||
player.moveCard(true).set('nojudge',true);
|
||||
}
|
||||
},
|
||||
group:'dddzhengjun_hp',
|
||||
subSkill:{
|
||||
equip:{charlotte:true},
|
||||
handcard:{charlotte:true},
|
||||
hp:{
|
||||
trigger:{global:['damageEnd','loseHpEnd','recoverEnd']},
|
||||
direct:true,
|
||||
filter(event,player){
|
||||
if(player.hp!=event.player.hp) return false;
|
||||
if(event.hujia&&event.hujia==event.num) return false;
|
||||
if(!game.hasPlayer(current=>current.getHp()==player.getHp()&¤t!=player)) return false;
|
||||
var evt=event.getParent('phaseUse');
|
||||
if(!evt||evt.player!=player) return false;
|
||||
return !player.hasHistory('useSkill',function(evt){
|
||||
if(evt.skill=='dddzhengjun_hp'){
|
||||
if(evt.event.getParent('phaseUse')==event) return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
},
|
||||
content(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('dddzhengjun'),'令一名体力值与你相等的其他角色回复或失去1点体力',function(card,player,target){
|
||||
return target.getHp()==player.getHp()&&player!=target;
|
||||
}).set('ai',target=>{
|
||||
var player=get.player();
|
||||
return Math.max(get.recoverEffect(target,player,player),get.effect(target,{name:'losehp'},player,player));
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
var choices=['失去体力'];
|
||||
if(target.isDamaged()) choices.push('回复体力');
|
||||
player.chooseControl(choices).set('prompt',`整军:请选择一项`).set('prompt2',`令${get.translation(target)}失去1点体力或回复1点体力`).set('ai',()=>{
|
||||
return get.event('choice');
|
||||
}).set('choice',get.recoverEffect(target,player,player)>0&&target.isDamaged()?1:0);
|
||||
else{
|
||||
let map={};
|
||||
const hs_targets=game.filterPlayer(target=>{
|
||||
if(trigger.getg&&trigger.getg(target)&&trigger.getg(target).length){
|
||||
return !player.hasSkill('dddzhengjun_hs')&&target.countCards('h')==player.countCards('h');
|
||||
}
|
||||
const evt=trigger.getl(target);
|
||||
if(evt){
|
||||
if(evt.es&&evt.es.length){
|
||||
return !player.hasSkill('dddzhengjun_es')&&target.countCards('e')==player.countCards('e')&&player.canMoveCard(null,true,target);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
const es_targets=game.filterPlayer(target=>{
|
||||
const evt=trigger.getl(target);
|
||||
if(evt){
|
||||
if(evt.es&&evt.es.length){
|
||||
return !player.hasSkill('dddzhengjun_es')&&target.countCards('e')==player.countCards('e')&&player.canMoveCard(null,true,target);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
if(hs_targets.length){
|
||||
let target;
|
||||
if(hs_targets.length==1) target=hs_targets[0];
|
||||
else{
|
||||
target=await player.chooseTarget(get.prompt('dddzhengjun'),'令其中一名角色摸一张牌或弃置一张牌',(card,player,target)=>{
|
||||
return get.event('targets').includes(target);
|
||||
}).set('ai',target=>{
|
||||
const player=get.event('player');
|
||||
return Math.max(get.effect(target,{name:'guohe_copy2'},target,player),get.effect(target,{name:'draw'},player,player));
|
||||
}).set('targets',hs_targets).forResultTargets()[0];
|
||||
}
|
||||
if(target){
|
||||
let list=['摸牌'];
|
||||
if(target.countCards('h')) list.push('弃牌');
|
||||
const {result:{control}}=await player.chooseControl(list,'cancel2')
|
||||
.set('prompt',get.prompt('dddzhengjun',target))
|
||||
.set('prompt2','令'+get.translation(target)+'执行其中一项')
|
||||
.set('ai',()=>{
|
||||
const player=get.event('player'),target=get.event().getTrigger().player;
|
||||
if(get.event('controls').includes('弃牌')&&get.effect(target,{name:'guohe_copy2'},player,player)>0) return '弃牌';
|
||||
return get.effect(target,{name:'draw'},player,player)>0?'摸牌':'cancel2';
|
||||
});
|
||||
if(control!='cancel2'){
|
||||
map.hs_target=[target,control];
|
||||
}
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
player.logSkill('dddzhengjun_hp',target);
|
||||
target[result.control=='失去体力'?'loseHp':'draw']();
|
||||
}
|
||||
},
|
||||
if(es_targets.length){
|
||||
let target;
|
||||
if(hs_targets.length==1){
|
||||
const {result:{bool}}=await player.chooseBool()
|
||||
.set('prompt',get.prompt('dddzhengjun',hs_targets[0]))
|
||||
.set('prompt2','移动'+get.translation(hs_targets[0])+'的一张装备牌')
|
||||
.set('choice',()=>player.canMoveCard(true,true,hs_targets[0]));
|
||||
if(bool) target=hs_targets[0];
|
||||
}
|
||||
else{
|
||||
target=await player.chooseTarget(get.prompt('dddzhengjun'),'移动其中一名角色的一张装备牌',(card,player,target)=>{
|
||||
return get.event('targets').includes(target);
|
||||
}).set('ai',target=>{
|
||||
const player=get.event('player');
|
||||
return player.canMoveCard(true,true,target)?(1+Math.random()):0;
|
||||
}).set('targets',es_targets).forResultTargets()[0];
|
||||
}
|
||||
if(target){
|
||||
map.es_target=target;
|
||||
}
|
||||
}
|
||||
event.result={
|
||||
bool:(map.hs_target||map.es_target),
|
||||
targets:[(map.hs_target||[])[0]].concat(map.es_target?[map.es_target]:[]),
|
||||
cost_data:map,
|
||||
};
|
||||
}
|
||||
},
|
||||
async content(event,trigger,player){
|
||||
const data=event.cost_data;
|
||||
if(trigger.name=='damage'||trigger.name=='loseHp'||trigger.name=='recover'){
|
||||
player.addTempSkill('dddzhengjun_hp','phaseUseAfter');
|
||||
await trigger.player[data=='回复体力'?'recover':'loseHp']();
|
||||
}
|
||||
else{
|
||||
if(data.hs_target){
|
||||
player.addTempSkill('dddzhengjun_hs','phaseUseAfter');
|
||||
if(data.hs_target[1]=='摸牌') await data.hs_target[0].draw();
|
||||
else await data.hs_target[0].chooseToDiscard('he',true);
|
||||
}
|
||||
if(data.es_target){
|
||||
player.addTempSkill('dddzhengjun_es','phaseUseAfter');
|
||||
await player.moveCard(true,data.es_target);
|
||||
}
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
hs:{charlotte:true},
|
||||
es:{charlotte:true},
|
||||
hp:{charlotte:true},
|
||||
},
|
||||
},
|
||||
dddxianxi:{
|
||||
|
|
|
@ -14,11 +14,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ol_sb_yuanshao:['male','qun',4,['olsbhetao','olsbshenli','olsbyufeng','olsbshishou'],['zhu']],
|
||||
ol_yufan:['male','wu',3,['olzongxuan','olzhiyan'],['tempname:re_yufan','die_audio:re_yufan']],
|
||||
ol_chengpu:['male','wu',4,['dclihuo','olchunlao'],['tempname:xin_chengpu','die_audio:xin_chengpu']],
|
||||
ol_wangyi:['female','wei',3,['olzhenlie','olmiji']],
|
||||
},
|
||||
characterSort:{
|
||||
onlyOL:{
|
||||
onlyOL_yijiang1:['ol_jianyong','ol_lingtong','ol_gaoshun'],
|
||||
onlyOL_yijiang2:['ol_caozhang','ol_chengpu'],
|
||||
onlyOL_yijiang2:['ol_caozhang','ol_chengpu','ol_wangyi'],
|
||||
onlyOL_yijiang3:['ol_yufan'],
|
||||
onlyOL_sb:['ol_sb_jiangwei','ol_sb_guanyu','ol_sb_taishici','ol_sb_yuanshao'],
|
||||
},
|
||||
|
@ -51,6 +52,100 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
//王异
|
||||
olzhenlie:{
|
||||
audio:2,
|
||||
inherit:'zhenlie',
|
||||
async content(event,trigger,player){
|
||||
const target=trigger.player;
|
||||
if(get.attitude(player,target)<0&&target.countDiscardableCards(player,'he')) player.addTempSkill('zhenlie_lose');
|
||||
await player.loseHp();
|
||||
player.removeSkill('zhenlie_lose');
|
||||
trigger.getParent().excluded.add(player);
|
||||
const goon=target.hasCard(card=>{
|
||||
if(get.position(card)=='h') return true;
|
||||
return lib.filter.canBeGained(card,player,target);
|
||||
},'he');
|
||||
if(goon||player.isDamaged()){
|
||||
let result;
|
||||
if(goon&&player.isDamaged()) result=await player.chooseControl().set('choiceList',[
|
||||
'获得'+get.translation(target)+'的一张牌',
|
||||
'发动一次〖秘计〗',
|
||||
]).set('ai',()=>{
|
||||
const player=get.event('player'),target=get.event().getTrigger().player;
|
||||
return get.effect(target,{name:'shunshou_copy2'},player,player)>get.effect(player,{name:'draw'},player,player)*player.getDamagedHp()?0:1
|
||||
}).forResult();
|
||||
else result={index:goon?0:1};
|
||||
if(result.index==0){
|
||||
await player.gainPlayerCard(target,'he',true);
|
||||
}
|
||||
else{
|
||||
await player.useSkill('olmiji');
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
olmiji:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
filter(event,player){
|
||||
return player.isDamaged();
|
||||
},
|
||||
async content(event,trigger,player){
|
||||
let num=player.getDamagedHp();
|
||||
await player.draw(num);
|
||||
if(player.countCards('he')&&game.hasPlayer(target=>target!=player)){
|
||||
if(_status.connectMode) game.broadcastAll(()=>_status.noclearcountdown=true);
|
||||
let given_map=[];
|
||||
while(num>0&&player.hasCard(card=>!card.hasGaintag('olsujian_given'),'he')){
|
||||
const {result:{bool,cards,targets}}=await player.chooseCardTarget({
|
||||
filterCard(card,player){
|
||||
return !card.hasGaintag('olsujian_given');
|
||||
},
|
||||
selectCard:[1,num],
|
||||
position:'he',
|
||||
filterTarget:lib.filter.notMe,
|
||||
prompt:'秘计:请选择要分配的卡牌和目标',
|
||||
prompt2:'(还可分配'+num+'张)',
|
||||
ai1(card){
|
||||
return (!ui.selected.cards.length&&card.name=='du')?1:0;
|
||||
},
|
||||
ai2(target){
|
||||
const player=get.event('player');
|
||||
const card=ui.selected.cards[0];
|
||||
if(card) return get.value(card,target)*get.attitude(player,target);
|
||||
return 0;
|
||||
},
|
||||
});
|
||||
if(bool){
|
||||
num-=cards.length;
|
||||
const target=targets[0];
|
||||
if(given_map.some(i=>i[0]==target)){
|
||||
given_map[given_map.indexOf(given_map.find(i=>i[0]==target))][1].addArray(cards);
|
||||
}
|
||||
else given_map.push([target,cards]);
|
||||
player.addGaintag(cards,'olsujian_given');
|
||||
}
|
||||
else break;
|
||||
}
|
||||
if(_status.connectMode){
|
||||
game.broadcastAll(()=>{
|
||||
delete _status.noclearcountdown;
|
||||
game.stopCountChoose();
|
||||
});
|
||||
}
|
||||
if(given_map.length){
|
||||
await game.loseAsync({
|
||||
gain_list:given_map,
|
||||
player:player,
|
||||
cards:given_map.slice().map(list=>list[1]),
|
||||
giver:player,
|
||||
animate:'giveAuto',
|
||||
}).setContent('gaincardMultiple');
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
//程普
|
||||
dclihuo:{
|
||||
audio:'relihuo',
|
||||
|
@ -907,11 +1002,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
const goon1=player.countCards('h',card=>get.name(card,player)=='sha')>=player.countCards('h',card=>get.name(card,player)!='sha');
|
||||
const goon2=player.countCards('h',card=>get.name(card,player)!='sha')>=player.countCards('h',card=>get.name(card,player)=='sha');
|
||||
if((goon1&&control=='【杀】更多')||(goon2&&control=='非【杀】更多')){
|
||||
target.popup('判断正确','wood');
|
||||
target.popup('洗具');
|
||||
game.log(target,'猜测','#g正确');
|
||||
}
|
||||
else{
|
||||
target.popup('判断错误','fire');
|
||||
target.popup('杯具');
|
||||
game.log(target,'猜测','#y错误');
|
||||
trigger.increase('num');
|
||||
}
|
||||
|
@ -1305,6 +1400,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dclihuo_info:'①你使用的非火【杀】可以改为火【杀】,若如此做,此牌结算完毕后,若此牌造成过伤害,则你弃置一张牌或失去1点体力。②你使用火【杀】可以额外指定一个目标。',
|
||||
olchunlao:'醇醪',
|
||||
olchunlao_info:'①当你的【杀】因弃置进入弃牌堆后,你将位于弃牌堆的这些牌称为“醇”置于武将牌上。②一名角色处于濒死状态时,你可以将一张“醇”置入弃牌堆,然后令其视为使用一张【酒】。',
|
||||
ol_wangyi:'OL界王异',
|
||||
ol_wangyi_prefix:'OL界',
|
||||
olzhenlie:'贞烈',
|
||||
olzhenlie_info:'当你成为其他角色使用【杀】或普通锦囊牌的目标后,你可以失去1点体力并令此牌对你无效,然后你选择一项:①获得使用者的一张牌;②发动一次〖秘计〗。',
|
||||
olmiji:'秘计',
|
||||
olmiji_info:'结束阶段,若你已受伤,则你可以摸X张牌,然后你可以将至多X张牌任意分配给其他角色(X为你已损失的体力值)。',
|
||||
|
||||
onlyOL_yijiang1:'OL专属·将1',
|
||||
onlyOL_yijiang2:'OL专属·将2',
|
||||
|
|
|
@ -1076,6 +1076,8 @@ window.noname_character_rank={
|
|||
'yangfeng',
|
||||
'sb_xiahoudun',
|
||||
'sb_gaoshun',
|
||||
're_wangyi',
|
||||
'ol_wangyi',
|
||||
],
|
||||
b:[
|
||||
'junk_guanyu',
|
||||
|
@ -2177,6 +2179,8 @@ window.noname_character_rank={
|
|||
'dc_sb_simayi',
|
||||
],
|
||||
rare:[
|
||||
're_wangyi',
|
||||
'ol_wangyi',
|
||||
'tw_yanliang',
|
||||
'tw_wenchou',
|
||||
'tw_yuantan',
|
||||
|
|
163
character/sb.js
163
character/sb.js
|
@ -742,11 +742,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sbxingshang:{
|
||||
audio:2,
|
||||
trigger:{global:['die','damageEnd']},
|
||||
filter(event,player){
|
||||
if(player.countMark('sbxingshang')>=get.info('sbxingshang').getLimit) return false;
|
||||
return event.name=='die'||!player.getHistory('custom',evt=>evt.sbxingshang).length;
|
||||
},
|
||||
usable:1,
|
||||
forced:true,
|
||||
locked:false,
|
||||
async content(event,trigger,player){
|
||||
player.addMark('sbxingshang',1);
|
||||
if(trigger.name=='damage') player.getHistory('custom').push({sbxingshang:true});
|
||||
},
|
||||
marktext:'颂',
|
||||
intro:{
|
||||
|
@ -754,14 +759,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:'mark',
|
||||
},
|
||||
ai:{threaten:2.5},
|
||||
getLimit:9,
|
||||
getNum(num){
|
||||
if(typeof num!='number'||Array.from({length:8}).map((_,i)=>i+1).includes(num)) return 0;
|
||||
return [1,2,3,4,2,2,3,3][num-1];
|
||||
if(typeof num!='number'||!Array.from({length:9}).map((_,i)=>i+1).includes(num)) return 0;
|
||||
return [1,2,3,4,1,2,2,3,3][num-1];
|
||||
},
|
||||
getEffect(player,num){
|
||||
if(!player||typeof num!='number') return 0;
|
||||
switch(num){
|
||||
//行殇四个选项
|
||||
//行殇选项
|
||||
case 1://-1,重置武将牌
|
||||
if(game.hasPlayer(target=>{
|
||||
return get.attitude(player,target)>0&&target.isTurnedOver();
|
||||
|
@ -773,13 +779,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(!game.hasPlayer(target=>{
|
||||
return get.attitude(player,target)>0&&target.maxHp<10;
|
||||
})) return 0;
|
||||
return 2+(game.hasPlayer(target=>{
|
||||
return 5+(game.hasPlayer(target=>{
|
||||
return get.attitude(player,target)>0&&target.hasDisabledSlot();
|
||||
})?1:0);
|
||||
case 4://-4,劝封/化萍
|
||||
return 0;
|
||||
//放逐四个选项
|
||||
case 5://-2,白板到结束
|
||||
//放逐选项
|
||||
case 5://-1,封印基本牌外的手牌
|
||||
if(game.hasPlayer(target=>{
|
||||
return get.attitude(player,target)<0;
|
||||
})) return 1;
|
||||
return 0;
|
||||
case 6://-2,白板到结束
|
||||
if(game.hasPlayer(target=>{
|
||||
if(target.hasSkill('sbfangzhu_ban')||target.hasSkill('fengyin')||target.hasSkill('baiban')) return false;
|
||||
return get.attitude(player,target)<0&&['name','name1','name2'].reduce((sum,name)=>{
|
||||
|
@ -790,14 +801,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},0)>5;
|
||||
})) return 6;
|
||||
return 0;
|
||||
case 6://-2,强命到结束
|
||||
case 7://-2,强命到结束
|
||||
return 0;
|
||||
case 7://-3,翻面
|
||||
case 8://-3,翻面
|
||||
if(game.hasPlayer(target=>{
|
||||
return get.attitude(player,target)<0&&!target.isTurnedOver();
|
||||
})) return 8;
|
||||
return 0;
|
||||
case 8://-3,定向鸡肋
|
||||
case 9://-3,封印装备牌外的手牌
|
||||
if(game.hasPlayer(target=>{
|
||||
return get.attitude(player,target)<0;
|
||||
})) return 2.5;
|
||||
return 0;
|
||||
default://其他
|
||||
return 0;
|
||||
|
@ -817,19 +831,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
usable:1,
|
||||
chooseButton:{
|
||||
dialog(){
|
||||
var dialog=ui.create.dialog(
|
||||
'行殇:请选择你要执行的一项',
|
||||
[[
|
||||
[1,' ⒈复原一名角色的武将牌 '],
|
||||
[2,' ⒉令一名角色摸'+Math.min(5,Math.max(1,game.dead.length))+'张牌 '],
|
||||
],'tdnodes'],
|
||||
[[
|
||||
[3,' ⒊令一名体力上限小于10的角色加1点体力上限并回复1点体力,然后随机恢复一个被废除的装备栏 '],
|
||||
],'tdnodes'],
|
||||
[[
|
||||
[4,' ⒋获得一名已阵亡角色的所有技能,然后失去武将牌上的所有技能 '],
|
||||
],'tdnodes']
|
||||
);
|
||||
var dialog=ui.create.dialog('行殇:请选择你要执行的一项','hidden');
|
||||
dialog.add([[
|
||||
[1,'移去1个“颂”标记,复原一名角色的武将牌'],
|
||||
[2,'移去2个“颂”标记,令一名角色摸'+get.cnNumber(Math.min(5,Math.max(1,game.dead.length)))+'张牌'],
|
||||
[3,'移去3个“颂”标记,令一名体力上限小于10的角色加1点体力上限并回复1点体力,然后随机恢复一个被废除的装备栏'],
|
||||
[4,'移去4个“颂”标记,获得一名已阵亡角色的所有技能,然后失去〖行殇〗〖放逐〗〖颂威〗'],
|
||||
],'textbutton']);
|
||||
return dialog;
|
||||
},
|
||||
filter(button,player){
|
||||
|
@ -856,6 +864,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return {
|
||||
num:links[0],
|
||||
audio:'sbxingshang',
|
||||
filterCard:()=>false,
|
||||
selectCard:-1,
|
||||
filterTarget(card,player,target){
|
||||
switch(lib.skill.sbxingshang_use_backup.num){
|
||||
case 1:
|
||||
|
@ -910,7 +920,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.line(target2);
|
||||
game.log(player,'选择了',target2);
|
||||
const skills=target2.getStockSkills(true,true);
|
||||
const skills2=player.getStockSkills(true,true);
|
||||
const skills2=['sbxingshang','sbfangzhu','sbsongwei'];
|
||||
player.changeSkills(skills,skills2);
|
||||
}
|
||||
}
|
||||
|
@ -954,7 +964,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
order(_,player){
|
||||
const info=get.info('sbxingshang');
|
||||
const goon=(player.hasSkill('sbfangzhu')&&!player.getStat('skill').sbfangzhu);
|
||||
let list=Array.from({length:goon?8:4}).map((_,i)=>i+1);
|
||||
let list=Array.from({length:goon?9:4}).map((_,i)=>i+1);
|
||||
list=list.filter(num=>player.countMark('sbxingshang')>=info.getNum(num));
|
||||
list.sort((a,b)=>info.getEffect(player,b)-info.getEffect(player,a));
|
||||
return (Array.from({length:4}).map((_,i)=>i+1).includes(list[0])&&info.getEffect(player,list[0])>0)?1:0;
|
||||
|
@ -969,28 +979,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
enable:'phaseUse',
|
||||
filter(event,player){
|
||||
return player.countMark('sbxingshang')>1;
|
||||
return player.hasMark('sbxingshang');
|
||||
},
|
||||
usable:1,
|
||||
chooseButton:{
|
||||
dialog(){
|
||||
var dialog=ui.create.dialog('放逐:请选择你要执行的一项','hidden');
|
||||
dialog.add([[
|
||||
[1,'移去2个“颂”标记,令一名其他角色的非Charlotte技能失效直到其回合结束'],
|
||||
[2,'移去2个“颂”标记,令一名其他角色不能响应除其外的角色使用的牌直到其回合结束'],
|
||||
[3,'移去3个“颂”标记,令一名其他角色将武将牌翻面'],
|
||||
[4,'移去3个“颂”标记,令一名其他角色只能使用你选择的一种类型的牌直到其回合结束']
|
||||
[1,'移去1个“颂”标记,令一名其他角色于手牌中只能使用装备牌直到其回合结束'],
|
||||
[2,'移去2个“颂”标记,令一名其他角色的非Charlotte技能失效直到其回合结束'],
|
||||
[3,'移去2个“颂”标记,令一名其他角色不能响应除其外的角色使用的牌直到其回合结束'],
|
||||
[4,'移去3个“颂”标记,令一名其他角色将武将牌翻面'],
|
||||
[5,'移去3个“颂”标记,令一名其他角色于手牌中只能使用装备牌直到其回合结束']
|
||||
],'textbutton']);
|
||||
return dialog;
|
||||
},
|
||||
filter(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;
|
||||
if(player.countMark('sbxingshang')<get.info('sbxingshang').getNum(button.link+4)) return false;
|
||||
return game.hasPlayer(target=>{
|
||||
if(target==player) return false;
|
||||
const num=button.link,storage=target.getStorage('sbfangzhu_ban');
|
||||
return !((num==1&&storage.includes('basic'))||(num==5&&storage.includes('equip')));
|
||||
});
|
||||
},
|
||||
check(button){
|
||||
const player=get.event('player'),info=get.info('sbxingshang');
|
||||
let list=Array.from({length:4}).map((_,i)=>i+1);
|
||||
let list=Array.from({length:5}).map((_,i)=>i+1);
|
||||
list=list.filter(num=>player.countMark('sbxingshang')>=info.getNum(num+4));
|
||||
const num=list.sort((a,b)=>info.getEffect(player,b+4)-info.getEffect(player,a+4))[0]-4;
|
||||
return (button.link==num)?10:0;
|
||||
|
@ -999,34 +1013,36 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return {
|
||||
num:links[0],
|
||||
audio:'sbfangzhu',
|
||||
filterCard:()=>false,
|
||||
selectCard:-1,
|
||||
filterTarget(card,player,target){
|
||||
if(target==player) return false;
|
||||
if(lib.skill.sbfangzhu_backup.num==4) return !target.hasSkill('sbfangzhu_ban');
|
||||
return true;
|
||||
const num=lib.skill.sbfangzhu_backup.num,storage=target.getStorage('sbfangzhu_ban');
|
||||
return !((num==1&&storage.includes('basic'))||(num==5&&storage.includes('equip')));
|
||||
},
|
||||
async content(event,trigger,player){
|
||||
const target=event.target;
|
||||
const num=lib.skill.sbfangzhu_backup.num;
|
||||
player.removeMark('sbxingshang',num>2?3:2);
|
||||
player.removeMark('sbxingshang',get.info('sbxingshang').getNum(num+4));
|
||||
switch(num){
|
||||
case 1:
|
||||
target.addTempSkill('sbfangzhu_ban',{player:'phaseEnd'});
|
||||
target.markAuto('sbfangzhu_ban',['basic']);
|
||||
break;
|
||||
case 2:
|
||||
target.removeSkill('baiban');
|
||||
target.addTempSkill('baiban',{player:'phaseEnd'});
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
target.addTempSkill('sbfangzhu_kill',{player:'phaseEnd'});
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
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]);
|
||||
}
|
||||
case 5:
|
||||
target.addTempSkill('sbfangzhu_ban',{player:'phaseEnd'});
|
||||
target.markAuto('sbfangzhu_ban',['equip']);
|
||||
break;
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
|
@ -1034,18 +1050,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target(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;
|
||||
return -target.countCards('h',card=>get.type(card)!='basic')-1;
|
||||
case 2:
|
||||
return 0;
|
||||
return -target.getSkills(null,null,false).reduce((sum,skill)=>{
|
||||
return sum+Math.max(get.skillRank(skill,'out'),get.skillRank(skill,'in'));
|
||||
},0);
|
||||
case 3:
|
||||
return 0;
|
||||
case 4:
|
||||
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;
|
||||
case 5:
|
||||
return -target.countCards('h',card=>get.type(card)!='equip')-3;
|
||||
}
|
||||
},
|
||||
},
|
||||
|
@ -1056,13 +1073,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
const str='###放逐###';
|
||||
switch(links[0]){
|
||||
case 1:
|
||||
return str+'移去2个“颂”标记,令一名其他角色的非Charlotte技能失效直到其回合结束';
|
||||
return str+'移去1个“颂”标记,令一名其他角色于手牌中只能使用基本牌直到其回合结束';
|
||||
case 2:
|
||||
return str+'移去2个“颂”标记,令一名其他角色不能响应除其外的角色使用的牌直到其回合结束';
|
||||
return str+'移去2个“颂”标记,令一名其他角色的非Charlotte技能失效直到其回合结束';
|
||||
case 3:
|
||||
return str+'移去3个“颂”标记,令一名其他角色将武将牌翻面';
|
||||
return str+'移去2个“颂”标记,令一名其他角色不能响应除其外的角色使用的牌直到其回合结束';
|
||||
case 4:
|
||||
return str+'移去3个“颂”标记,令一名其他角色只能使用你选择的一种类型的牌直到其回合结束';
|
||||
return str+'移去3个“颂”标记,令一名其他角色将武将牌翻面';
|
||||
case 5:
|
||||
return str+'移去3个“颂”标记,令一名其他角色于手牌中只能使用装备牌直到其回合结束';
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1070,10 +1089,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
order(_,player){
|
||||
const info=get.info('sbxingshang');
|
||||
const goon=(player.hasSkill('sbxingshang')&&!player.getStat('skill').sbxingshang_use);
|
||||
let list=Array.from({length:goon?8:4}).map((_,i)=>i+(goon?1:5));
|
||||
let list=Array.from({length:goon?9:5}).map((_,i)=>i+(goon?1:5));
|
||||
list=list.filter(num=>player.countMark('sbxingshang')>=info.getNum(num));
|
||||
list.sort((a,b)=>info.getEffect(player,b)-info.getEffect(player,a));
|
||||
return (Array.from({length:4}).map((_,i)=>i+5).includes(list[0])&&info.getEffect(player,list[0])>0)?1:0;
|
||||
return (Array.from({length:5}).map((_,i)=>i+5).includes(list[0])&&info.getEffect(player,list[0])>0)?1:0;
|
||||
},
|
||||
result:{player:1},
|
||||
},
|
||||
|
@ -1101,14 +1120,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
marktext:'禁',
|
||||
intro:{
|
||||
markcount:()=>0,
|
||||
content:'只能使用$牌',
|
||||
content(storage){
|
||||
if(storage.length>1) return '不能使用手牌';
|
||||
return '于手牌中只能使用'+get.translation(storage[0])+'牌';
|
||||
},
|
||||
},
|
||||
mod:{
|
||||
cardEnabled(card,player){
|
||||
if(!player.getStorage('sbfangzhu_ban').includes(get.type2(card))) return false;
|
||||
const storage=player.getStorage('sbfangzhu_ban');
|
||||
if(get.itemtype(card)=='card'&&get.position(card)!='h') return;
|
||||
if(storage.length>1||!storage.includes(get.type2(card))) return false;
|
||||
},
|
||||
cardSavable(card,player){
|
||||
if(!player.getStorage('sbfangzhu_ban').includes(get.type2(card))) return false;
|
||||
const storage=player.getStorage('sbfangzhu_ban');
|
||||
if(get.itemtype(card)=='card'&&get.position(card)!='h') return;
|
||||
if(storage.length>1||!storage.includes(get.type2(card))) return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -1116,24 +1142,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
sbsongwei:{
|
||||
audio:2,
|
||||
init:(player)=>{
|
||||
player.addSkill('sbsongwei_delete');
|
||||
},
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
filter(event,player){
|
||||
if(player.countMark('sbxingshang')>=get.info('sbxingshang').getLimit) return false;
|
||||
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));
|
||||
player.addMark('sbxingshang',Math.min(get.info('sbxingshang').getLimit-player.countMark('sbxingshang'),game.countPlayer(target=>target.group=='wei'&&target!=player)));
|
||||
},
|
||||
group:'sbsongwei_delete',
|
||||
subSkill:{
|
||||
delete:{
|
||||
audio:'sbsongwei',
|
||||
enable:'phaseUse',
|
||||
filter(event,player){
|
||||
if(player.storage.sbsongwei_delete) return false;
|
||||
return game.hasPlayer(target=>lib.skill.sbsongwei.subSkill.delete.filterTarget(null,player,target));
|
||||
},
|
||||
filterTarget(card,player,target){
|
||||
|
@ -1142,6 +1168,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
skillAnimation:true,
|
||||
animationColor:'thunder',
|
||||
async content(event,trigger,player){
|
||||
player.storage.sbsongwei_delete=true;
|
||||
player.awakenSkill('sbsongwei_delete');
|
||||
event.target.removeSkills(event.target.getStockSkills(false,true));
|
||||
},
|
||||
|
@ -7059,9 +7086,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sb_caopi:'谋曹丕',
|
||||
sb_caopi_prefix:'谋',
|
||||
sbxingshang:'行殇',
|
||||
sbxingshang_info:'①每回合限一次,当一名角色死亡时或受到伤害时,你获得1个“颂”标记。②出牌阶段限一次,你可以:1.移去1个“颂”标记,令一名角色复原武将牌;2.移去2个“颂”标记,令一名角色摸X张牌(X为场上阵亡角色数,且X至少为1,至多为5);3.移去3个“颂”标记,令一名体力上限小于10的角色加1点体力上限,回复1点体力,随机恢复一个已废除的装备栏;4.移去4个“颂”标记,获得一名阵亡角色武将牌上的所有技能,然后你失去武将牌上的所有技能。',
|
||||
sbxingshang_info:'①当一名角色受到伤害后(每回合限一次)或死亡时,你获得1个“颂”标记(你至多拥有9个“颂”标记)。②出牌阶段限一次,你可以:1.移去1个“颂”标记,令一名角色复原武将牌;2.移去2个“颂”标记,令一名角色摸X张牌(X为场上阵亡角色数,且X至少为1,至多为5);3.移去3个“颂”标记,令一名体力上限小于10的角色加1点体力上限,回复1点体力,随机恢复一个已废除的装备栏;4.移去4个“颂”标记,获得一名阵亡角色武将牌上的所有技能,然后你失去武将牌上的所有技能。',
|
||||
sbfangzhu:'放逐',
|
||||
sbfangzhu_info:'出牌阶段限一次,你可以:1.移去2个“颂”标记,令一名其他角色的非Charlotte技能失效直到其回合结束;2.移去2个“颂”标记,令一名其他角色不能响应除其以外的角色使用的牌直到其回合结束;3.移去3个“颂”标记,令一名其他角色将武将牌翻面;4.移去3个“颂”标记,令一名其他角色只能使用你选择的一种类型的牌直到其回合结束。',
|
||||
sbfangzhu_info:'出牌阶段限一次,你可以:1.移去1个“颂”标记,令一名其他角色于手牌中只能使用基本牌直到其回合结束;2.移去2个“颂”标记,令一名其他角色的非Charlotte技能失效直到其回合结束;3.移去2个“颂”标记,令一名其他角色不能响应除其以外的角色使用的牌直到其回合结束;4.移去3个“颂”标记,令一名其他角色将武将牌翻面;5.移去3个“颂”标记,令一名其他角色于手牌中只能使用装备牌直到其回合结束。',
|
||||
sbsongwei:'颂威',
|
||||
sbsongwei_info:'主公技。①出牌阶段开始时,你获得Y个“颂”标记(Y为场上其他魏势力角色数)。②每局游戏限一次,出牌阶段,你可以令一名其他魏势力角色失去所有武将牌的技能。',
|
||||
sb_xunyu:'谋荀彧',
|
||||
|
|
|
@ -1219,10 +1219,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(result2.bool){
|
||||
const card=result2.cards[0];
|
||||
if(get.name(card,target)==event.result.card.name){
|
||||
player.popup('诿解成功');
|
||||
player.popup('洗具');
|
||||
stop=true;
|
||||
}
|
||||
else player.popup('诿解失败');
|
||||
else player.popup('杯具');
|
||||
}
|
||||
}
|
||||
if(!stop){
|
||||
|
@ -16624,7 +16624,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return get.subtype(card)=='equip1';
|
||||
});
|
||||
if(!equip1){
|
||||
player.popup('连计失败');
|
||||
player.popup('杯具');
|
||||
game.log('牌堆中无装备');
|
||||
event.finish();
|
||||
return;
|
||||
|
|
|
@ -6599,16 +6599,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(!game.hasPlayer(function(current){
|
||||
return current.hasSkill('cixiao_yizi');
|
||||
return current.hasSkill('panshi');
|
||||
})) return true;
|
||||
return player.countCards('he')>=1&&game.hasPlayer(function(current){
|
||||
return current!=player&&!current.hasSkill('cixiao_yizi');
|
||||
return current!=player&&!current.hasSkill('panshi');
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(game.hasPlayer(function(current){
|
||||
return current.hasSkill('cixiao_yizi');
|
||||
return current.hasSkill('panshi');
|
||||
})) event.goto(2);
|
||||
else player.chooseTarget(lib.filter.notMe,get.prompt('cixiao'),'令一名其他角色获得「义子」标记').set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
|
@ -6619,19 +6619,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('cixiao',target);
|
||||
target.addSkills('cixiao_yizi');
|
||||
target.addSkills('panshi');
|
||||
}
|
||||
event.finish();
|
||||
'step 2'
|
||||
var list=game.filterPlayer(function(current){
|
||||
return current.hasSkill('cixiao_yizi');
|
||||
return current.hasSkill('panshi');
|
||||
});
|
||||
player.chooseCardTarget({
|
||||
prompt:get.prompt('cixiao'),
|
||||
prompt2:('弃置一张牌并将'+get.translation(list)+'的「义子」标记转移给其他角色'),
|
||||
position:'he',
|
||||
filterTarget:function(card,player,target){
|
||||
return player!=target&&!target.hasSkill('cixiao_yizi');
|
||||
return player!=target&&!target.hasSkill('panshi');
|
||||
},
|
||||
filterCard:lib.filter.cardDiscardable,
|
||||
ai1:function(card){
|
||||
|
@ -6654,12 +6654,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.logSkill('cixiao');
|
||||
player.discard(result.cards).delay=false;
|
||||
player.line2(game.filterPlayer(function(current){
|
||||
if(current.hasSkill('cixiao_yizi')){
|
||||
current.removeSkills('cixiao_yizi');
|
||||
if(current.hasSkill('panshi')){
|
||||
current.removeSkills('panshi');
|
||||
return true;
|
||||
}
|
||||
}).concat(result.targets),'green');
|
||||
target.addSkills('cixiao_yizi');
|
||||
target.addSkills('panshi');
|
||||
}
|
||||
else event.finish();
|
||||
'step 4'
|
||||
|
@ -6667,18 +6667,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
derivation:'panshi',
|
||||
ai:{threaten:8},
|
||||
subSkill: {
|
||||
yizi: {
|
||||
mark: true,
|
||||
charlotte: true,
|
||||
marktext: '子',
|
||||
intro: {
|
||||
name: '义子',
|
||||
content: '具有〖叛弑〗'
|
||||
},
|
||||
group: 'panshi'
|
||||
}
|
||||
}
|
||||
},
|
||||
panshi:{
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
|
@ -6714,6 +6702,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.give(result.cards,target);
|
||||
}
|
||||
},
|
||||
mark:true,
|
||||
marktext:'子',
|
||||
intro:{
|
||||
name:'义子',
|
||||
content:'我是儿子',
|
||||
},
|
||||
group:'panshi_damage',
|
||||
},
|
||||
panshi_damage:{
|
||||
|
|
|
@ -3129,7 +3129,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
if(target.hasMark('dcchangqu_warshipx')){
|
||||
var prompt2='是否交给'+get.translation(player)+get.cnNumber(num)+'张手牌?'+(nextPlayer?'若如此做,将“战舰”移动给'+get.translation(nextPlayer)+',':',')+'否则你下次受到的属性伤害值+'+num;
|
||||
target.chooseCard(get.translation(player)+'对你发动了【长驱】',prompt2).set('ai',card=>{
|
||||
target.chooseCard(get.translation(player)+'对你发动了【长驱】',prompt2,num).set('ai',card=>{
|
||||
if(_status.event.att>0) return 15-get.value(card);
|
||||
if(_status.event.take) return 0;
|
||||
return 8.2-0.8*Math.min(5,_status.event.target.hp+_status.event.target.hujia)-get.value(card);
|
||||
|
@ -14172,6 +14172,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
subtype:'equip1',
|
||||
distance:{attackFrom:-2},
|
||||
skills:['pyzhuren_heart'],
|
||||
onDestroy(card){
|
||||
if(_status.pyzhuren&&_status.pyzhuren[card.name]){
|
||||
delete _status.pyzhuren[card.name];
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
basic:{
|
||||
equipValue:4
|
||||
|
@ -14185,6 +14190,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
subtype:'equip1',
|
||||
distance:{attackFrom:-1},
|
||||
skills:['pyzhuren_diamond'],
|
||||
onDestroy(card){
|
||||
if(_status.pyzhuren&&_status.pyzhuren[card.name]){
|
||||
delete _status.pyzhuren[card.name];
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
basic:{
|
||||
equipValue:3
|
||||
|
@ -14198,6 +14208,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
subtype:'equip1',
|
||||
distance:{attackFrom:-1},
|
||||
skills:['pyzhuren_club'],
|
||||
onDestroy(card){
|
||||
if(_status.pyzhuren&&_status.pyzhuren[card.name]){
|
||||
delete _status.pyzhuren[card.name];
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
basic:{
|
||||
equipValue:5
|
||||
|
@ -14223,6 +14238,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
type:'equip',
|
||||
subtype:'equip1',
|
||||
skills:['pyzhuren_spade'],
|
||||
onDestroy(card){
|
||||
if(_status.pyzhuren&&_status.pyzhuren[card.name]){
|
||||
delete _status.pyzhuren[card.name];
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
basic:{
|
||||
equipValue:3
|
||||
|
@ -14236,6 +14256,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
subtype:'equip1',
|
||||
distance:{attackFrom:-3},
|
||||
skills:['pyzhuren_shandian'],
|
||||
onDestroy(card){
|
||||
if(_status.pyzhuren&&_status.pyzhuren[card.name]){
|
||||
delete _status.pyzhuren[card.name];
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
basic:{
|
||||
equipValue:3
|
||||
|
|
|
@ -498,14 +498,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var count=trigger.player.countCards('h',card=>get.type2(card)==type);
|
||||
var guessedNum=event.guessedNum;
|
||||
if(count==guessedNum){
|
||||
player.popup('猜测正确','wood');
|
||||
player.popup('洗具');
|
||||
game.log(player,'猜测','#g正确');
|
||||
if(player.countMark('zhenfeng')<5) player.addMark('zhenfeng',1,false);
|
||||
player.draw(player.countMark('zhenfeng'));
|
||||
if(player.canUse('sha',trigger.player,false)) player.useCard({name:'sha',isCard:true},trigger.player);
|
||||
}
|
||||
else{
|
||||
player.popup('猜测错误','fire');
|
||||
player.popup('杯具');
|
||||
game.log(player,'猜测','#y错误');
|
||||
player.clearMark('zhenfeng');
|
||||
if(Math.abs(count-guessedNum)>1&&trigger.player.canUse('sha',player,false)){
|
||||
|
@ -13931,7 +13931,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
lingtong:['lingtong','xin_lingtong','ol_lingtong','re_lingtong','old_lingtong'],
|
||||
gaoshun:['gaoshun','xin_gaoshun','ol_gaoshun','re_gaoshun','sb_gaoshun','old_gaoshun'],
|
||||
zhonghui:['zhonghui','xin_zhonghui','re_zhonghui','old_zhonghui','pe_zhonghui'],
|
||||
wangyi:['wangyi','re_wangyi','old_wangyi'],
|
||||
wangyi:['wangyi','ol_wangyi','re_wangyi','old_wangyi'],
|
||||
caozhang:['caozhang','ol_caozhang','re_caozhang','xin_caozhang'],
|
||||
guanzhang:['guanzhang','re_guanzhang','old_guanzhang'],
|
||||
madai:['old_madai','re_madai','tw_madai','madai'],
|
||||
|
|
|
@ -3339,14 +3339,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.addTempSkill('yanxi2');
|
||||
var card2=result.links[0];
|
||||
if(card2==card){
|
||||
player.popup('猜对了');
|
||||
player.popup('洗具');
|
||||
cards.remove(card2);
|
||||
player.$gain2(cards);
|
||||
player.gain(cards,'log').gaintag.add('yanxi');
|
||||
player.gain(card,target,'bySelf','give').gaintag.add('yanxi');
|
||||
}
|
||||
else{
|
||||
player.popup('猜错了');
|
||||
player.popup('杯具');
|
||||
player.gain(card2,'gain2').gaintag.add('yanxi');
|
||||
}
|
||||
},
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 44 KiB |
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
Loading…
Reference in New Issue