v1.9.126
This commit is contained in:
Spmario233 2023-09-02 20:12:22 +08:00 committed by GitHub
commit 9d4b0f6a0b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
119 changed files with 8179 additions and 7068 deletions

BIN
audio/die/clan_wanghun.mp3 Normal file

Binary file not shown.

BIN
audio/die/clan_wukuang.mp3 Normal file

Binary file not shown.

BIN
audio/die/clan_zhongyan.mp3 Normal file

Binary file not shown.

BIN
audio/die/dongxie.mp3 Normal file

Binary file not shown.

BIN
audio/die/duanjiong.mp3 Normal file

Binary file not shown.

BIN
audio/die/ol_wenqin.mp3 Normal file

Binary file not shown.

BIN
audio/die/peiyuanshao.mp3 Normal file

Binary file not shown.

BIN
audio/die/sb_zhanghe.mp3 Normal file

Binary file not shown.

BIN
audio/die/xin_guozhao.mp3 Normal file

Binary file not shown.

BIN
audio/die/xin_zhangyi.mp3 Normal file

Binary file not shown.

BIN
audio/skill/chuhai3.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/clanchenya1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/clanchenya2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/clanfuxun1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/clanfuxun2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/clanguangu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/clanguangu2.mp3 Normal file

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.

BIN
audio/skill/dchumei1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dchumei2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjiaoxia1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjiaoxia2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcmoyu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcmoyu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olguangao1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olguangao2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olhuiqi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olhuiqi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olsaogu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olsaogu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olxieju1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olxieju2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sbqiaobian1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sbqiaobian2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/wufei1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/wufei2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xinwurong1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xinwurong2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xinwurong3.mp3 Normal file

Binary file not shown.

BIN
audio/skill/yichong1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/yichong2.mp3 Normal file

Binary file not shown.

View File

@ -281,7 +281,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
content:function(){
target.link();
},
chongzhu:true,
recastable:true,
ai:{
wuxie:function(target,card,player,viewer){
if(_status.event.getRand()<0.5) return 0;

View File

@ -397,7 +397,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
player.logSkill('taipingyaoshu');
player.draw(2);
'step 1'
if(player.hp>1) player.loseHp();
if(player.hp>1||get.mode()=='guozhan') player.loseHp();
}
},
yuxi:{
@ -455,28 +455,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return target!=player&&(get.mode()!='guozhan'||_status.mode=='yingbian'||_status.mode=='free'||target.countCards('e')>0);
},
enable:true,
yingbian_prompt:function(card){
var str='';
if(get.cardtag(card,'yingbian_all')){
str+='此牌的效果改为依次执行所有选项';
}
if(!str.length||get.cardtag(card,'yingbian_add')){
if(str.length) str+='';
str+='当你使用此牌选择目标后,你可为此牌增加一个目标';
}
return str;
},
yingbian:function(event){
var card=event.card,bool=false;
if(get.cardtag(card,'yingbian_all')){
bool=true;
card.yingbian_all=true;
game.log(card,'执行所有选项');
}
if(!bool||get.cardtag(card,'yingbian_add')){
event.yingbian_addTarget=true;
}
},
defaultYingbianEffect:'add',
content:function(){
'step 0'
if(event.card.yingbian_all){
@ -577,7 +556,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
mode:['guozhan','versus'],
filterTarget:true,
chongzhu:true,
recastable:true,
changeTarget:function(player,targets){
var target=targets[0];
game.filterPlayer(function(current){
@ -942,7 +921,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
fullskin:true,
type:'trick',
enable:true,
chongzhu:true,
recastable:true,
filterTarget:function(card,player,target){
if(player==target) return false;
return (target.countCards('h')||target.isUnseen(2));
@ -1496,7 +1475,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return current.isFriendOf(player);
});
}
return num+game.countGroup();
return num+game.countGroup()-1;
}
},
trigger:{player:'damageBegin4'},
@ -1687,34 +1666,23 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
g_diaohulishan:{},
diaohulishan:{
trigger:{player:['damageBegin3','loseHpBefore','recoverBefore']},
forced:true,
popup:false,
content:function(){
trigger.cancel();
},
mod:{
cardEnabled:function(){
return false;
},
cardSavable:function(){
return false;
},
targetEnabled:function(){
return false;
},
},
mark:true,
intro:{
content:'不计入距离的计算且不能使用牌且不是牌的合法目标且不能失去/回复体力和受到伤害'
},
charlotte:true,
group:'undist',
ai:{
effect:{
target:function (card,player,target){
if(get.tag(card,'recover')||get.tag(card,'damage')) return 'zeroplayertarget';
},
},
init:function(player){
if(player.isIn()){
game.broadcastAll(function(player){
player.classList.add('out');
},player);
game.log(player,'移出了游戏');
}
},
onremove:function(player){
if(player.isOut()){
game.broadcastAll(function(player){
player.classList.remove('out');
},player);
game.log(player,'移回了游戏');
}
},
},
huxinjing:{
@ -1815,8 +1783,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
feilongduofeng3:'飞龙夺凤',
feilongduofeng_info:'①当你使用【杀】指定目标后,你可令目标角色弃置一张牌。②当你因使用【杀】而令其他角色进入濒死状态时,你可以获得其一张手牌。',
taipingyaoshu:'太平要术',
taipingyaoshu_info:'锁定技。①当你即将到属性伤害时,取消之。②你的手牌上限+XX为势力数。③当你失去装备区里的【太平要术】时你摸两张牌然后若你的体力值大于1你失去1点体力。',
taipingyaoshu_info_guozhan:'锁定技。①当你即将到属性伤害时,取消之。②你的手牌上限+XX为与你势力相同的角色数。③当你失去装备区里的【太平要术】时你摸两张牌然后若你的体力值大于1你失去1点体力。',
taipingyaoshu_info:'锁定技。①当你即将到属性伤害时,取消之。②你的手牌上限+XX为场上势力数-1。③当你失去装备区里的【太平要术】时你摸两张牌然后若你的体力值大于1你失去1点体力。',
taipingyaoshu_info_guozhan:'锁定技。①当你即将到属性伤害时,取消之。②你的手牌上限+XX为与你势力相同的角色数。③当你失去装备区里的【太平要术】时你摸两张牌然后你失去1点体力。',
yuxi_skill:'玉玺',
yuxi_skill2:'玉玺',
yuxi:'玉玺',
@ -1836,7 +1804,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
chiling:'敕令',
chiling_info:'①出牌阶段对所有没有势力的角色使用。目标角色选择一项1、明置一张武将牌然后摸一张牌2、弃置一张装备牌3、失去1点体力。②当【敕令】因判定或弃置而置入弃牌堆时系统将之移出游戏并将【诏书】置于牌堆底然后系统于当前回合结束后视为对所有没有势力的角色使用【敕令】。',
diaohulishan:'调虎离山',
diaohulishan_info:'出牌阶段,对至多两名其他角色使用。目标角色于此回合结束之前不计入距离的计算且不能使用牌且不是牌的合法目标且不能失去或回复体力或受到伤害。',
diaohulishan_info:'出牌阶段,对至多两名其他角色使用。目标角色于此回合视为移出游戏。',
huoshaolianying:'火烧连营',
huoshaolianying_bg:'烧',
huoshaolianying_info_guozhan:'出牌阶段对你的下家及其队列中的所有角色使用。你对目标角色造成1点火属性伤害。',

View File

@ -447,7 +447,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
fullskin:true,
type:'trick',
enable:true,
// chongzhu:true,
// recastable:true,
filterTarget:function(card,player,target){
return target==player;
},

View File

@ -501,7 +501,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
if(cardsToGain.length) player.gain(cardsToGain,'draw');
if(cards.length-cardsToGain.length) player.draw(cards.length-cardsToGain.length).log=false;
return cardsToGain;
});
},
ai:{

View File

@ -259,7 +259,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
enable:function(){
return game.countPlayer()>2;
},
chongzhu:function(){
recastable:function(){
return game.countPlayer()<=2;
},
singleCard:true,

View File

@ -100,39 +100,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
if(lib.linked.contains(card.nature)) return '出牌阶段对你攻击范围内的一名角色使用。其须使用一张【闪】否则你对其造成1点'+get.translation(card.nature)+'属性伤害。';
return '出牌阶段对你攻击范围内的一名角色使用。其须使用一张【闪】否则你对其造成1点伤害。';
},
yingbian_prompt:function(card){
var str='';
if(get.cardtag(card,'yingbian_hit')){
str+='此牌不可被响应';
}
if(get.cardtag(card,'yingbian_damage')){
if(str.length) str+='';
str+='此牌的伤害值基数+1';
}
if(!str.length||get.cardtag(card,'yingbian_add')){
if(str.length) str+='';
str+='当你使用此牌选择目标后,你可为此牌增加一个目标';
}
return str;
},
yingbian:function(event){
var card=event.card,bool=false;
if(get.cardtag(card,'yingbian_hit')){
bool=true;
event.directHit.addArray(game.players);
game.log(card,'不可被响应');
}
if(get.cardtag(card,'yingbian_damage')){
bool=true;
if(typeof event.baseDamage!='number') event.baseDamage=1;
event.baseDamage++;
game.log(event.card,'的伤害值基数+1');
}
if(!bool||get.cardtag(card,'yingbian_add')){
event.yingbian_addTarget=true;
}
},
yingbian_tags:['hit','damage','add'],
defaultYingbianEffect:'add',
filterTarget:function(card,player,target){return player!=target},
content:function(){
"step 0"
@ -387,27 +355,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
cardcolor:'red',
notarget:true,
nodelay:true,
yingbian_prompt:function(card){
var str='';
if(get.cardtag(card,'yingbian_gain')){
str+='当你声明使用此牌时,你获得此牌响应的目标牌';
}
if(!str.length||get.cardtag(card,'yingbian_draw')){
if(str.length) str+='';
str+='当你声明使用此牌时,你摸一张牌';
}
return str;
},
yingbian_tags:['gain','draw'],
yingbian:function(event){
var bool=false;
if(get.cardtag(event.card,'yingbian_gain')){
bool=true;
var cardx=event.respondTo;
if(cardx&&cardx[1]&&cardx[1].cards&&cardx[1].cards.filterInD('od').length) event.player.gain(cardx[1].cards.filterInD('od'),'gain2','log');
}
if(!bool||get.cardtag(event.card,'yingbian_draw')) event.player.draw();
},
defaultYingbianEffect:'draw',
content:function(){
event.result='shaned';
event.getParent().delayx=false;
@ -889,11 +837,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
selectTarget:-1,
cardcolor:'red',
reverseOrder:true,
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌减少一个目标',
yingbian_tags:['remove'],
yingbian:function(event){
event.yingbian_removeTarget=true;
},
defaultYingbianEffect:'remove',
filterTarget:function(card,player,target){
//return target.hp<target.maxHp;
return true;
@ -929,11 +873,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
type:'trick',
enable:true,
selectTarget:-1,
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌减少一个目标',
yingbian_tags:['remove'],
yingbian:function(event){
event.yingbian_removeTarget=true;
},
defaultYingbianEffect:'remove',
filterTarget:function(card,player,target){
return target!=player;
},
@ -1006,11 +946,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
enable:true,
selectTarget:-1,
reverseOrder:true,
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌减少一个目标',
yingbian_tags:['remove'],
yingbian:function(event){
event.yingbian_removeTarget=true;
},
defaultYingbianEffect:'remove',
filterTarget:function(card,player,target){
return target!=player;
},
@ -1124,11 +1060,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
fullskin:true,
type:'trick',
enable:true,
yingbian_prompt:'你令此牌不可被响应',
yingbian_tags:['hit'],
yingbian:function(event){
event.directHit.addArray(game.players);
},
defaultYingbianEffect:'hit',
filterTarget:function(card,player,target){
return target!=player;
},
@ -1426,11 +1358,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
if(player==target) return false;
return target.countDiscardableCards(player,get.is.single()?'he':'hej');
},
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌增加一个目标',
yingbian_tags:['add'],
yingbian:function(event){
event.yingbian_addTarget=true;
},
defaultYingbianEffect:'add',
content:function(){
'step 0'
if(!get.is.single()&&target.countDiscardableCards(player,'hej')){
@ -1665,14 +1593,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
notarget:true,
finalDelay:false,
yingbian_tags:['gain','draw'],
yingbian_prompt:function(card){
if(!get.cardtag(card,'yingbian_gain')) return '当你声明使用此牌时,你摸一张牌';
return '当此牌生效后,你获得此牌响应的目标牌';
},
yingbian:function(event){
if(!get.cardtag(event.card,'yingbian_gain')||get.cardtag(event.card,'yingbian_draw')) event.player.draw();
},
defaultYingbianEffect:'draw',
contentBefore:function(){
'step 0'
if(get.mode()=='guozhan'&&get.cardtag(card,'guo')){
@ -1725,11 +1646,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
delete ui.tempnowuxie;
}
}
if(event.card.yingbian&&get.cardtag(event.card,'yingbian_gain')){
var cardx=event.getParent().respondTo;
if(cardx&&cardx[1]&&cardx[1].cards&&cardx[1].cards.filterInD('od').length) player.gain(cardx[1].cards.filterInD('od'),'gain2','log');
}
},
}
},
lebu:{
audio:true,

View File

@ -266,7 +266,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
fullskin:true,
type:'trick',
nodelay:true,
// chongzhu:true,
// recastable:true,
global:'g_shencaojie',
content:function(){
var evt=event.getParent('g_shencaojie')._trigger;

View File

@ -16,38 +16,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return target!=player&&target.countCards('hej')>0;
},
yingbian_tags:['all','hit','add'],
yingbian_prompt:function(card){
var str='';
if(get.cardtag(card,'yingbian_all')){
str+='此牌的效果改为依次执行所有选项';
}
if(get.cardtag(card,'yingbian_hit')){
if(str.length) str+='';
str+='此牌不可被响应';
}
if(!str.length||get.cardtag(card,'yingbian_add')){
if(str.length) str+='';
str+='当你使用此牌选择目标后,你可为此牌增加一个目标';
}
return str;
},
yingbian:function(event){
var card=event.card,bool=false;
if(get.cardtag(card,'yingbian_all')){
bool=true;
card.yingbian_all=true;
game.log(card,'执行所有选项');
}
if(get.cardtag(card,'yingbian_hit')){
bool=true;
event.directHit.addArray(game.players);
game.log(card,'不可被响应');
}
if(!bool||get.cardtag(card,'yingbian_add')){
event.yingbian_addTarget=true;
}
},
defaultYingbianEffect:'add',
content:function(){
var dist=get.distance(player,target);
if(dist>1||card.yingbian_all) player.discardPlayerCard(target,'hej',true);
@ -174,11 +143,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')>0;
},
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌增加一个目标',
yingbian_tags:['add'],
yingbian:function(event){
event.yingbian_addTarget=true;
},
defaultYingbianEffect:'add',
content:function(){
'step 0'
if(player.isDead()||!target.countCards('h')){
@ -274,30 +239,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
type:'equip',
subtype:'equip5',
loseDelay:false,
onEquip:function(){
if(player.countCards('he',function(cardx){
return cardx!=card;
})>0){
player.logSkill('tianjitu_skill');
player.chooseToDiscard(true,function(card){
return card!=_status.event.card;
},'he').set('card',card);
}
},
onLose:function(){
var next=game.createEvent('tianjitu_lose');
event.next.remove(next);
var evt=event.getParent();
if(evt.getlx===false) evt=evt.getParent();
evt.after.push(next);
next.player=player;
next.setContent(function(){
if(player.countCards('h')<5){
player.logSkill('tianjitu_skill');
player.drawTo(5);
}
});
},
global:'tianjitu_skill',
ai:{
value:function(card,player){
if(player.countCards('h')>3||get.position(card)!='e') return 0.5;
@ -422,23 +364,24 @@ game.import('card',function(lib,game,ui,get,ai,_status){
global:'heiguangkai_ai',
},
tongque_skill:{
trigger:{player:'useCard1'},
trigger:{player:'yingbian'},
equipSkill:true,
forced:true,
filter:function(event,player){
return !event.card.yingbian&&get.is.yingbian(event.card)&&player.getHistory('useCard',function(evt){
return get.is.yingbian(evt.card)
}).indexOf(event)==0;
},
content:function(){
trigger.card.yingbian=true;
var info=get.info(trigger.card);
if(info&&info.yingbian) info.yingbian(trigger);
player.addTempSkill('yingbian_changeTarget');
},
filter:(event,player)=>get.is.yingbianConditional(event.card)&&player.getHistory('useCard',evt=>get.is.yingbianConditional(evt.card)).length<2,
content:()=>{
trigger.forceYingbian=true;
}
},
tianjitu_skill:{
audio:true,
trigger:{player:['equipBegin','loseBegin']},
forced:true,
equipSkill:true,
filter:(event,player,name)=>name=='equipBegin'?event.card.name=='tianjitu'&&player.hasCard(card=>card!=event.card):event.cards.some(value=>get.position(value)=='e'&&value.name=='tianjitu')&&player.countCards('h')<5,
content:()=>{
if(event.triggername=='loseBegin') player.drawTo(5);
else player.chooseToDiscard(true,card=>card!=_status.event.getTrigger().card,'he');
}
},
taigongyinfu_skill:{
equipSkill:true,
@ -456,10 +399,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
player.logSkill('taigongyinfu_skill');
player.lose(result.cards,ui.discardPile,'visible');
player.$throw(result.cards,1000);
game.log(player,'将',result.cards,'置入了弃牌堆');
player.draw();
player.recast(result.cards);
}
},
},
@ -494,202 +434,69 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
},
_yingbian:{
trigger:{player:'useCard1'},
trigger:{player:'yingbian'},
forced:true,
popup:false,
firstDo:true,
ruleSkill:true,
forceLoad:true,
filter:function(event,player){
filter:(event,player)=>{
if(event.card.yingbian) return false;
var bool=player.hasSkillTag('forceYingbian');
var card=event.card;
if(get.cardtag(card,'yingbian_kongchao')&&(!player.countCards('h')||bool)) return true;
if(get.cardtag(card,'yingbian_canqu')&&(player.hp==1||bool)) return true;
if(get.cardtag(card,'yingbian_fujia')&&(player.isMaxHandcard()||bool)) return true;
if(get.cardtag(card,'yingbian_zhuzhan')) return true;
return false;
const temporaryYingbian=event.temporaryYingbian||[],card=event.card;
if(temporaryYingbian.includes('force')||get.cardtag(card,'yingbian_force')) return true;
const forceYingbian=event.forceYingbian||player.hasSkillTag('forceYingbian');
for(const entry of lib.yingbian.condition.simple){
const key=entry[0];
if((temporaryYingbian.includes(key)||get.cardtag(card,`yingbian_${key}`))&&(forceYingbian||entry[1](event))) return true;
}
const complexYingbianConditions=get.complexYingbianConditions();
return temporaryYingbian.some(value=>complexYingbianConditions.includes(value))||get.is.complexlyYingbianConditional(card);
},
content:function(){
content:()=>{
'step 0'
var card=trigger.card;
event.card=card;
var bool=false;
if(get.cardtag(card,'yingbian_kongchao')&&!player.countCards('h')){
player.popup('空巢','soil');
bool=true;
event.card=trigger.card;
event.temporaryYingbian=trigger.temporaryYingbian||[];
var yingbianConditionSatisfied=false;
lib.yingbian.condition.simple.forEach((value,key)=>{
if(!event.temporaryYingbian.includes(key)&&!get.cardtag(event.card,`yingbian_${key}`)||!value(trigger)) return;
player.popup(`yingbian_${key}_tag`,lib.yingbian.condition.color.get(key));
if(!yingbianConditionSatisfied) yingbianConditionSatisfied=true;
});
if(event.temporaryYingbian.includes('force')||get.cardtag(event.card,'yingbian_force')||trigger.forceYingbian||player.hasSkillTag('forceYingbian')){
player.popup('yingbian_force_tag',lib.yingbian.condition.color.get('force'));
if(!yingbianConditionSatisfied) yingbianConditionSatisfied=true;
}
else if(get.cardtag(card,'yingbian_canqu')&&player.hp==1){
player.popup('残躯','fire');
bool=true;
}
else if(get.cardtag(card,'yingbian_fujia')&&player.isMaxHandcard()){
player.popup('富甲','orange');
bool=true;
}
else if(player.hasSkillTag('forceYingbian')){
player.popup('应变','metal');
bool=true;
}
if(bool){
game.log(player,'触发了',card,'的应变条件');
event.goto(10);
if(yingbianConditionSatisfied){
game.log(player,'触发了',event.card,'的应变条件');
event.goto(4);
}
else if((event.num=0)>=(event.yingbianConditions=get.complexYingbianConditions()).length) event.finish();
'step 1'
event._global_waiting=true;
event.send=function(player,card,source,targets,id,id2,skillState){
if(skillState){
player.applySkills(skillState);
}
var type=get.type2(card);
var str=get.translation(source);
if(targets&&targets.length){
str+='对';
str+=get.translation(targets);
}
str+='使用了';
var next=player.chooseCard({
filterCard:function(card){
return get.type2(card)==type&&lib.filter.cardDiscardable.apply(this,arguments);
},
prompt:str+=(get.translation(card)+',是否弃置一张'+get.translation(type)+'为其助战?'),
position:'h',
_global_waiting:true,
id:id,
id2:id2,
ai:function(cardx){
var info=get.info(card);
if(info&&info.ai&&info.ai.yingbian){
var ai=info.ai.yingbian(card,source,targets,player);
if(!ai) return 0;
return ai-get.value(cardx);
}
else if(get.attitude(player,source)<=0) return 0;
return 5-get.value(cardx);
},
});
if(game.online){
_status.event._resultid=id;
game.resume();
}
};
var yingbianCondition=event.yingbianConditions[num];
if(event.temporaryYingbian.includes(yingbianCondition)||get.cardtag(card,`yingbian_${yingbianCondition}`)) lib.yingbian.condition.complex.get(yingbianCondition)(trigger);
else event.goto(3);
'step 2'
var type=get.type2(card);
var list=game.filterPlayer(function(current){
if(current==player) return false;
if(!current.countCards('h')) return false;
return _status.connectMode||current.countCards('h',function(cardx){
return get.type2(cardx)==type;
})
});
event.list=list;
event.id=get.id();
list.sort(function(a,b){
return get.distance(event.source,a,'absolute')-get.distance(event.source,b,'absolute');
});
if(result.bool) event.goto(4);
'step 3'
if(event.list.length==0){
event.finish();
return;
}
else if(_status.connectMode&&(event.list[0].isOnline()||event.list[0]==game.me)){
event.goto(5);
}
else{
event.current=event.list.shift();
event.send(event.current,event.card,player,trigger.targets,event.id,trigger.parent.id);
}
'step 4'
if(result.bool){
event.zhuzhanresult=event.current;
event.zhuzhanresult2=result;
if(event.current!=game.me) game.delayx();
event.goto(9);
}
else{
event.goto(3);
}
'step 5'
var id=event.id;
var sendback=function(result,player){
if(result&&result.id==id&&!event.zhuzhanresult&&result.bool){
event.zhuzhanresult=player;
event.zhuzhanresult2=result;
game.broadcast('cancel',id);
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused){
return (function(){
event.resultOL=_status.event.resultOL;
ui.click.cancel();
if(ui.confirm) ui.confirm.close();
});
}
}
else{
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused){
return (function(){
event.resultOL=_status.event.resultOL;
});
}
}
};
var withme=false;
var withol=false;
var list=event.list;
for(var i=0;i<list.length;i++){
if(list[i].isOnline()){
withol=true;
list[i].wait(sendback);
list[i].send(event.send,list[i],event.card,player,trigger.targets,event.id,trigger.parent.id,get.skillState(list[i]));
list.splice(i--,1);
}
else if(list[i]==game.me){
withme=true;
event.send(list[i],event.card,player,trigger.targets,event.id,trigger.parent.id);
list.splice(i--,1);
}
}
if(!withme){
event.goto(7);
}
if(_status.connectMode){
if(withme||withol){
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player) game.players[i].showTimer();
}
}
}
event.withol=withol;
'step 6'
if(result&&result.bool&&!event.zhuzhanresult){
game.broadcast('cancel',event.id);
event.zhuzhanresult=game.me;
event.zhuzhanresult2=result;
}
'step 7'
if(event.withol&&!event.resultOL){
game.pause();
}
'step 8'
for(var i=0;i<game.players.length;i++){
game.players[i].hideTimer();
}
'step 9'
if(event.zhuzhanresult){
var target=event.zhuzhanresult;
target.line(player,'green');
target.discard(event.zhuzhanresult2.cards).discarder=target;
target.popup('助战','wood');
game.log(target,'响应了',player,'发起的助战');
target.addExpose(0.2);
}
event.num++;
if(event.num<event.yingbianConditions.length) event.goto(1);
else event.finish();
'step 10'
'step 4'
trigger.card.yingbian=true;
var info=get.info(trigger.card);
if(info&&info.yingbian) info.yingbian(trigger);
player.addTempSkill('yingbian_changeTarget');
},
var yingbianEffectExecuted=false;
lib.yingbian.effect.forEach((value,key)=>{
if(!event.temporaryYingbian.includes(key)&&!get.cardtag(card,`yingbian_${key}`)) return;
game.yingbianEffect(trigger,value);
if(!yingbianEffectExecuted) yingbianEffectExecuted=true;
});
if(!yingbianEffectExecuted){
var defaultYingbianEffect=get.defaultYingbianEffect(card);
if(lib.yingbian.effect.has(defaultYingbianEffect)){
game.yingbianEffect(trigger,lib.yingbian.effect.get(defaultYingbianEffect));
if(!yingbianEffectExecuted) yingbianEffectExecuted=true;
}
}
if(yingbianEffectExecuted) player.addTempSkill('yingbian_changeTarget');
}
},
yingbian_changeTarget:{
trigger:{player:'useCard2'},
@ -820,7 +627,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
tongque_info:'锁定技,你于一回合内使用的第一张带有“应变”效果的牌无视条件直接生效。',
tianjitu:'天机图',
tianjitu_skill:'天机图',
tianjitu_info:'锁定技,当此牌进入你的装备区时,你弃置一张不为此【天机图】的牌。当此牌离开你的装备区,你将手牌摸至五张。',
tianjitu_info:'锁定技,当此牌进入你的装备区时,你弃置一张不为此【天机图】的牌。当此牌离开你的装备区,你将手牌摸至五张。',
taigongyinfu:'太公阴符',
taigongyinfu_info:'出牌阶段开始时,你可以横置或重置一名角色。出牌阶段结束时,你可以重铸一张手牌。',
taigongyinfu_skill:'太公阴符',
@ -829,15 +636,16 @@ game.import('card',function(lib,game,ui,get,ai,_status){
yingbian_kongchao_tag:'空巢',
yingbian_fujia_tag:'富甲',
yingbian_canqu_tag:'残躯',
yingbian_force_tag:'应变',
_yingbian:'应变',
yingbian_changeTarget:'应变',
yingbian_add_tag:'(目标+)',
yingbian_remove_tag:'(目标-)',
yingbian_draw_tag:'(摸牌)',
yingbian_all_tag:'(双项)',
yingbian_hit_tag:'(强命)',
yingbian_gain_tag:'(反甲)',
yingbian_damage_tag:'(伤害+)',
yingbian_draw_tag:'(摸牌)',
yingbian_gain_tag:'(反甲)',
yingbian_hit_tag:'(强命)',
yingbian_all_tag:'(双项)'
},
list:[
['spade',1,'juedou'],

View File

@ -76,7 +76,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
else event.finish();
'step 2'
if(result.index==0) player.gain(event.show_card,target,'give','bySelf');
if(result.index==0) target.give(event.show_card,player);
else target.damage();
},
ai:{
@ -157,8 +157,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
subtype:'equip1',
distance:{attackFrom:-1},
fullskin:true,
skills:['qixingbaodao'],
selectTarget:[-1,-2],
global:'qixingbaodao',
ai:{
order:9,
value:function(card,player){
@ -404,14 +403,15 @@ game.import('card',function(lib,game,ui,get,ai,_status){
audio:true,
equipSkill:true,
forced:true,
trigger:{target:'_yongjian_zengyuBegin'},
content:function(){
trigger._zengyu_denied=true;
game.log(player,'拒绝了',trigger.player,'发起的赠予');
trigger:{target:'gift'},
filter:(event,player)=>event.target!=player,
logTarget:'player',
content:()=>{
trigger.deniedGift.add(trigger.card);
},
ai:{
refuseGifts:true,
},
refuseGifts:true
}
},
xinge:{
audio:true,
@ -449,7 +449,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
},
qixingbaodao:{
trigger:{player:'equipAfter'},
trigger:{player:'equipBegin'},
forced:true,
equipSkill:true,
filter:function(event,player){
@ -595,6 +595,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){
map.push([source,event.given_map[i]]);
cards.addArray(event.given_map[i]);
}
player.showCards(cards,`${get.translation(player)}${(targets=>{
if(get.itemtype(targets)=='player') targets=[targets];
if(targets[0]!=player) return get.translation(targets);
const selfTargets=targets.slice();
selfTargets[0]='自己';
return get.translation(selfTargets);
})(logs)}发动了${get.skillTranslation(event.name,player)}`);
game.loseAsync({
gain_list:map,
player:player,
@ -606,82 +613,40 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
ai:{expose:0.1},
},
_yongjian_zengyu:{
_gifting:{
enable:'phaseUse',
forceLoad:true,
filter:function(event,player){
return player.hasCard((card)=>lib.skill._yongjian_zengyu.filterCard(card,player),'he');
},
filterCard:function(card,player){
var mod=game.checkMod(card,player,'unchanged','cardZengyuable',player);
if(mod!='unchanged') return mod;
return get.position(card)=='h'&&get.cardtag(card,'gifts');
},
filterTarget:function(card,player,target){
if(player==target) return false;
var card=ui.selected.cards[0];
if(get.type(card,false)=='equip'){
return target.canEquip(card,true);
}
return true;
},
filter:(event,player)=>player.hasCard(card=>lib.skill._gifting.filterCard(card,player),lib.skill._gifting.position),
filterCard:(card,player)=>game.hasPlayer(current=>player.canGift(card,current,true)),
filterTarget:(card,player,target)=>ui.selected.cards.every(value=>player.canGift(value,target,true)),
position:'he',
discard:false,
lose:false,
delay:false,
check:function(card){
var player=_status.event.player;
if(get.cardtag(card,'gifts')&&get.type(card,false)=='equip'&&game.hasPlayer(function(current){
return current!=player&&current.canEquip(card,true)&&!current.hasSkillTag('refuseGifts')&&get.effect(current,card,player,player)>0;
})) return 2;
check:card=>{
const player=_status.event.player;
if(game.hasPlayer(current=>player.canGift(card,current,true)&&!current.refuseGifts(card,player)&&get.effect(current,card,player,player)>0)) return 2;
if(!player.needsToDiscard()&&get.position(card)=='h') return 0;
return 1+Math.random();
},
content:function(){
'step 0'
if(event._zengyu_denied){
player.loseToDiscardpile(cards);
}
else{
if(get.type(cards[0],false)=='equip'){
player.$give(cards[0],target,false);
game.delay(0.5);
target.equip(cards[0]);
}
else{
target.gain(cards,player,'give');
event.finish();
}
}
'step 1'
game.delayx();
content:()=>{
player.gift(cards,target);
},
ai:{
order:function(item,player){
if(player.hasCard(function(card){
return get.cardtag(card,'gifts')&&get.type(card,false)=='equip'&&game.hasPlayer(function(current){
return current!=player&&current.canEquip(card,true)&&!current.hasSkillTag('refuseGifts')&&get.effect(current,card,player,player)>0;
});
},'h')) return 7;
return 0.51;
},
order:(item,player)=>player.hasCard(card=>game.hasPlayer(current=>player.canGift(card,current,true)&&!current.refuseGifts(card,player)&&get.effect(current,card,player,player)>0),'h')?7:0.51,
result:{
target:function(player,target){
var card=ui.selected.cards[0];
if(!card||target.hasSkillTag('refuseGifts')) return 0;
if(get.type(card,false)=='equip') return get.effect(target,card,target,target);
if(card.name=='du') return player.hp>target.hp?-1:0;
if(target.hasSkillTag('nogain')) return 0;
return Math.max(1,get.value(card,player)-get.value(card,target));
},
},
},
},
target:(player,target)=>{
const result=ui.selected.cards.map(value=>player.getGiftAIResultTarget(value,target));
return result.reduce((previousValue,currentValue)=>previousValue+currentValue,0)/result.length;
}
}
}
}
},
translate:{
gifts_tag:'赠',
du:'毒',
du_info:'①当此牌正面向上离开你的手牌区或作为你的拼点牌而亮出时你失去1点体力。②当你因摸牌或分发起始手牌而获得【毒】后你可将其分配给其他角色(正面朝上移动,且不触发〖毒①〗)。',
du_info:'①当此牌正面向上离开你的手牌区或作为你的拼点牌而亮出时你失去1点体力。②当你因摸牌或分发起始手牌而获得【毒】后你可展示之并交给其他角色不触发〖毒①〗。',
g_du:'毒',
g_du_give:'赠毒',
du_given:'已分配',
@ -694,7 +659,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
yitianjian:'倚天剑',
yitianjian_info:'当你因执行【杀】的效果而造成伤害后若你已受伤则你可弃置一张手牌然后回复1点体力。',
qixingbaodao:'七星宝刀',
qixingbaodao_info:'锁定技。当此牌进入你的装备区,你弃置装备区和判定区内的所有其他牌。',
qixingbaodao_info:'锁定技。当此牌进入你的装备区,你弃置装备区和判定区内的所有其他牌。',
duanjian:'断剑',
duanjian_info:'这是一把坏掉的武器…',
duanjian_append:'<span class="text" style="font-family: yuanli">不要因为手快而装给自己。</span>',
@ -707,13 +672,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){
yonglv_info:'锁定技。①你至其他角色的距离-1。②其他角色至你的距离视为1。',
yonglv_append:'<span class="text" style="font-family: yuanli">它旁边的就是王仲宣。</span>',
zhanxiang:'战象',
zhanxiang_info:'锁定技。①其他角色至你的距离+1。②当你成为〖赠予〗的目标后,你将此次赠予的效果改为“将赠予牌移动至弃牌堆”。',
zhanxiang_info:'锁定技。①其他角色至你的距离+1。②其他角色对你赠予的牌视为赠予失败。',
xinge:'信鸽',
xinge_info:'出牌阶段限一次。你可以将一张手牌交给一名其他角色。',
xinge_append:'<span class="text" style="font-family: yuanli">咕咕咕。</span>',
_yongjian_zengyu:'赠予',
_yongjian_zengyu_info:'出牌阶段,你可将一张拥有“赠”标签的手牌区装备牌置于一名其他角色的装备区内,或将一张拥有“赠”标签的手牌区非装备牌正面朝上交给一名其他角色。',
_gifting:'赠予',
_gifting_info:'出牌阶段,你可将一张拥有“赠”标签的手牌区装备牌置于一名其他角色的装备区内,或将一张拥有“赠”标签的手牌区非装备牌正面朝上交给一名其他角色。',
},
list:[
['spade',1,'guaguliaodu'],

View File

@ -276,7 +276,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
enable:function(){
return game.countPlayer()>2;
},
chongzhu:function(){
recastable:function(){
return game.countPlayer()<=2;
},
multicheck:function(card,player){

View File

@ -5,7 +5,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
card:{
pozhenjue:{
type:'zhenfa',
chongzhu:true,
recastable:true,
enable:true,
notarget:true,
content:function(){
@ -25,7 +25,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
changshezhen:{
type:'zhenfa',
chongzhu:true,
recastable:true,
enable:function(card,player){
if(player.inline()) return true;
if(player.identity=='unknown'||player.identity=='ye') return false;
@ -68,7 +68,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
tianfuzhen:{
type:'zhenfa',
chongzhu:true,
recastable:true,
enable:function(){
return game.hasPlayer(function(current){
return current.isMajor();
@ -94,7 +94,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
dizaizhen:{
type:'zhenfa',
chongzhu:true,
recastable:true,
enable:function(){
return game.hasPlayer(function(current){
return current.isNotMajor();
@ -121,7 +121,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
fengyangzhen:{
type:'zhenfa',
chongzhu:true,
recastable:true,
enable:true,
filterTarget:function(card,player,target){
return target.sieged();
@ -142,7 +142,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
yunchuizhen:{
type:'zhenfa',
chongzhu:true,
recastable:true,
enable:true,
filterTarget:function(card,player,target){
return target.siege();
@ -163,7 +163,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
qixingzhen:{
type:'zhenfa',
chongzhu:true,
recastable:true,
enable:function(card,player){
return player.siege()||player.sieged();
},
@ -202,7 +202,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
shepanzhen:{
type:'zhenfa',
chongzhu:true,
recastable:true,
enable:function(card,player){
if(player.identity=='unknown'||player.identity=='ye') return false;
if(get.population(player.identity)<=1) return false;
@ -231,7 +231,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
longfeizhen:{
type:'zhenfa',
chongzhu:true,
recastable:true,
enable:function(card,player){
return player.next.siege(player);
},
@ -261,7 +261,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
huyizhen:{
type:'zhenfa',
chongzhu:true,
recastable:true,
enable:function(card,player){
return player.siege(player.next)||player.siege(player.previous);
},
@ -309,7 +309,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
niaoxiangzhen:{
type:'zhenfa',
chongzhu:true,
recastable:true,
enable:true,
filterTarget:function(card,player,target){
if(player.identity==target.identity) return false;

View File

@ -43,6 +43,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
locked:true,
content:function(){
'step 0'
player.unmarkSkill('clanyuzhi');
var num1=0,num2=0,num3=0,bool=true;
var history=player.actionHistory;
for(var i=history.length-2;i>=0;i--){
@ -92,7 +93,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.clanyuzhi=lib.skill.dcweidang.getLength(result.cards[0]);
player.markSkill('clanyuzhi');
}
else player.unmarkSkill('clanyuzhi');
},
ai:{
threaten:3,
@ -285,6 +285,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var storage=player.storage.clanjiexuan;
return get.color(card)==((storage||0)%2?'black':'red');
},
prompt:function(){
if(_status.event.player.storage.clanjiexuan) return '将一张黑色牌当【过河拆桥】使用';
return '将一张红色牌当【顺手牵羊】使用';
},
skillAnimation:true,
animationColor:'thunder',
precontent:function(){
@ -829,16 +833,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
clanSkill:true,
filter:function(event,player){
if(!event.cards.length) return true;
var cards=[];
game.countPlayer(current=>{
if(!current.hasClan('太原王氏')) return false;
current.getHistory('lose',evt=>{
if(event!=evt.getParent()) return false;
cards.addArray(evt.getl(current).hs);
return !game.hasPlayer2(current=>{
if(!current.hasClan('太原王氏')&&current!=player) return false;
return current.hasHistory('lose',evt=>{
return evt.getParent()==event&&evt.hs.length>0;
});
})
if(event.cards.some(card=>!cards.contains(card))) return false;
return true;
});
},
content:function(){
'step 0'
@ -899,6 +899,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
global:'clanlianzhu_global',
subSkill:{
global:{
forceaudio:true,
audio:'clanlianzhu',
enable:'phaseUse',
filter:(event,player)=>game.hasPlayer(current=>lib.skill.clanlianzhu_global.filterTarget(null,player,current)),
filterCard:(card,player)=>game.hasPlayer(current=>current.hasSkill('clanlianzhu')&&!current.hasSkill('clanlianzhu_targeted')&&!current.storage.clanlianzhu)&&player.canRecast(card),
@ -1935,11 +1937,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.hasCard(card=>get.suit(card)==get.suit(event.card)&&player.canRecast(card),'h');
},
content:function(){
'step 0'
if(trigger.targets&&trigger.targets.length==1){
trigger.targets[0].link(true);
}
var cards=player.getCards('h',card=>get.suit(card)==get.suit(trigger.card)&&player.canRecast(card));
if(cards.length>0) player.recast(cards);
'step 1'
player.draw();
}
},
clanhuanyin:{
@ -2024,6 +2029,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 6-ui.selected.cards.length-get.value(card);
},
onuse:function(links,player){
lib.skill.chenliuwushi.change(player,-1);
player.addTempSkill('clanzhanding_effect');
},
ai:{
@ -2042,7 +2048,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return event.skill=='clanzhanding';
},
content:function(){
lib.skill.chenliuwushi.change(player,-1);
if(player.hasHistory('sourceDamage',function(evt){
return evt.card==trigger.card;
})){
@ -2269,6 +2274,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(player.storage.clanguangu) return '转换技,出牌阶段限一次。阴:你可以观看牌堆顶的至多四张牌;<span class="bluetext">阳:你可以观看一名角色的至多四张手牌。</span>然后你可以使用其中的一张牌。';
return '转换技,出牌阶段限一次。<span class="bluetext">阴:你可以观看牌堆顶的至多四张牌;</span>阳:你可以观看一名角色的至多四张手牌。然后你可以使用其中的一张牌。';
},
clanjiexuan:function(player){
if(player.storage.clanjiexuan) return '限定技,转换技。阴:你可以将一张红色牌当【顺手牵羊】使用;<span class="bluetext">阳:你可以将一张黑色牌当【过河拆桥】使用。</span>';
return '限定技,转换技。<span class="bluetext">阴:你可以将一张红色牌当【顺手牵羊】使用;</span>阳:你可以将一张黑色牌当【过河拆桥】使用。';
},
},
translate:{
clan_wuxian:'族吴苋',
@ -2281,7 +2290,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
chenliuwushi:'陈留·吴氏',
clan_wuban:'族吴班',
clanzhanding:'斩钉',
clanzhanding_info:'你可以将任意张牌当做【杀】使用。你以此法使用的【杀】结算结束后,你令你的手牌上限-1然后若你因此【杀】造成过伤害,则你将手牌摸至手牌上限(至多摸五张),否则你令此【杀】不计入次数限制。',
clanzhanding_info:'你可以将任意张牌当做【杀】使用并你令你的手牌上限-1。你以此法使用的【杀】结算结束后,若你因此【杀】造成过伤害,则你将手牌摸至手牌上限(至多摸五张),否则你令此【杀】不计入次数限制。',
clan_xunshu:'族荀淑',
clanshenjun:'神君',
clanshenjun_info:'当一名角色使用【杀】或普通锦囊牌时,若你手牌中有该牌名的牌,你展示之,且这些牌称为“神君”。然后本阶段结束时,你可以将等同于你“神君”数张牌当做一张“神君”牌使用。',

View File

@ -982,7 +982,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
if(trigger.name=='lose'){
trigger.cards.remove(player.getEquips('ruyijingubang'));
trigger.cards.removeArray(player.getEquips('ruyijingubang'));
}
else{
while(trigger.slots.contains('equip1')) trigger.slots.remove('equip1');

View File

@ -117,7 +117,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target.useCard(result.targets,card,event.links);
}
else{
target.recast(event.links,(player,cards)=>game.cardsDiscard(cards).cards);
target.recast(event.links,(player,cards)=>game.cardsDiscard(cards));
}
'step 4'
for(var card of cards){
@ -3864,17 +3864,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
discard:function(){
"step 0"
game.log(player,'进入了弃牌阶段');
event.num=(function(){
var num=0;
var hs=player.getCards('he');
num+=hs.length;
for(var i=0;i<hs.length;i++){
if(game.checkMod(hs[i],player,false,'ignoredHandcard',player)==true){
num--;
}
}
return Math.max(0,num-player.getHandcardLimit());
})();
event.num=Math.max(0,player.countCards('he',card=>!player.canIgnoreHandcard(card))-player.getHandcardLimit());
if(event.num<=0) event.finish();
else{
if(lib.config.show_phase_prompt){

View File

@ -1243,20 +1243,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lose:false,
delay:false,
promptfunc:()=>'出牌阶段你可以赠予一张“米券”然后执行一项本回合内未被选择过的效果⒈对其造成1点伤害⒉摸两张牌⒊弃置其的两张牌⒋亮出牌堆顶的一张牌然后你可以使用之。',
check:function(card){
var player=_status.event.player;
if(get.cardtag(card,'gifts')&&get.type(card,false)=='equip'&&game.hasPlayer(function(current){
return current!=player&&current.canEquip(card,true)&&!current.hasSkillTag('refuseGifts')&&get.effect(current,card,player,player)>0;
})) return 2;
return 1+Math.random();
check:card=>{
const player=_status.event.player;
return get.type(card,false)=='equip'&&game.hasPlayer(current=>player.canGift(card,current,true)&&!current.refuseGifts(card,player)&&get.effect(current,card,player,player)>0)?2:1+Math.random();
},
content:function(){
'step 0'
var next=game.createEvent('_yongjian_zengyu');
next.player=player;
next.target=target;
next.cards=cards;
next.setContent(lib.skill._yongjian_zengyu.content);
player.gift(cards,target);
'step 1'
var list=player.getStorage('minagi_peiquan_yukito');
if(list.length>=4) event.finish();
@ -1300,12 +1293,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
order:4,
result:{
player:function(player,target){
var baseEffect=Math.min(3,get.effect(target,'_yongjian_zengyu',player,player));
var choices=['damage','draw','discard','use'];
player:(player,target)=>{
const giftEffects=ui.selected.cards.map(value=>player.getGiftEffect(value,target));
const baseEffect=Math.min(3,giftEffects.reduce((previousValue,currentValue)=>previousValue+currentValue,0)/giftEffects.length);
const choices=['damage','draw','discard','use'];
choices.removeArray(player.getStorage('minagi_peiquan_yukito'));
if(choices.length<=0) return baseEffect;
var eff=Math.max.apply(Math,choices.map(function(choice){
return baseEffect+Math.max(...choices.map(choice=>{
switch(choice){
case 'damage':return get.damageEffect(target,player,player);
case 'draw':return get.effect(player,{name:'wuzhong'},player,player);
@ -1313,9 +1307,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
case 'use':return _status.event.getRand('minagi_peiquan')*4;
}
}));
return baseEffect+eff;
},
},
}
}
},
group:'minagi_peiquan_umareta',
subSkill:{
@ -4269,25 +4262,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
asara_yingwei:{
trigger:{player:'useCard1'},
trigger:{player:'yingbian'},
forced:true,
filter:function(event,player){
return player.getHistory('lose',function(evt){
if(evt.getParent()!=event) return false;
for(var i in evt.gaintag_map){
if(evt.gaintag_map[i].contains('asara_yingwei')) return true;
}
return false;
}).length>0;
},
content:function(){
if(!trigger.card.yingbian){
trigger.card.yingbian=true;
var info=get.info(trigger.card);
if(info&&info.yingbian) info.yingbian(trigger);
player.addTempSkill('yingbian_changeTarget');
}
},
filter:(event,player)=>event.card.isCard&&player.hasHistory('lose',evt=>evt.getParent()==event&&Object.values(evt.gaintag_map).some(value=>value.includes('asara_yingwei'))),
content:()=>{
trigger.forceYingbian=true;
}
},
yukito_kongwu:{
enable:'phaseUse',
@ -6265,16 +6245,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
phaseDiscardContent:function(){
"step 0"
var num=0;
var hs=player.getCards('he');
num+=hs.length;
for(var i=0;i<hs.length;i++){
if(game.checkMod(hs[i],player,false,'ignoredHandcard',player)==true){
num--;
}
}
num=Math.max(0,num-player.getHandcardLimit());
event.num=num;
event.num=Math.max(0,player.countCards('he',card=>!player.canIgnoreHandcard(card))-player.getHandcardLimit());
if(event.num<=0) event.finish();
else{
if(lib.config.show_phase_prompt){
@ -8523,7 +8494,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return true;
}
else if(event.name=='gain'){
if(event.giver||event.getParent().name=='_yongjian_zengyu') return false;
if(event.giver||event.getParent().name=='gift') return false;
var cards=event.getg(event.player);
if(!cards.length) return false;
return game.hasPlayer(function(current){

View File

@ -18,7 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
extra_mobilezhi:['shen_guojia','shen_xunyu'],
extra_mobilexin:['shen_taishici','shen_sunce'],
extra_tw:['tw_shen_guanyu','tw_shen_lvmeng'],
extra_offline:['shen_diaochan','boss_zhaoyun'],
extra_offline:['shen_diaochan','boss_zhaoyun','shen_dianwei'],
},
},
character:{
@ -1010,9 +1010,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
else if(lib.translate[name+'_info']){
str+=(''+lib.translate[name+'_info']+'|');
}
if(lib.card[name].yingbian_prompt&&get.is.yingbian(node)){
if(typeof lib.card[name].yingbian_prompt=='function') str+=('应变:'+lib.card[name].yingbian_prompt(node)+'|');
else str+=('应变:'+lib.card[name].yingbian_prompt+'|');
if(get.is.yingbianConditional(node)){
const yingbianEffects=get.yingbianEffects(node);
if(!yingbianEffects.length){
const defaultYingbianEffect=get.defaultYingbianEffect(node);
if(lib.yingbian.prompt.has(defaultYingbianEffect)) yingbianEffects.push(defaultYingbianEffect);
}
if(yingbianEffects.length) str+=`应变:${yingbianEffects.map(value=>lib.yingbian.prompt.get(value)).join('')}|`;
}
return str;
},
@ -2337,199 +2341,39 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:'hina_shenshi_yingbian',
},
hina_shenshi_yingbian:{
trigger:{player:'useCard1'},
trigger:{player:'yingbian'},
forced:true,
filter:function(event,player){
return event.cards.length==1&&!event.card.yingbian&&player.hasHistory('lose',function(evt){
if(evt.getParent()!=event) return false;
for(var i in evt.gaintag_map){
if(evt.gaintag_map[i].contains('hina_shenshi')) return true;
}
return false;
})&&Array.isArray(get.info(event.card).yingbian_tags);
},
content:function(){
if(!trigger.card.yingbian){
trigger.card.yingbian=true;
var info=get.info(trigger.card);
trigger.card.cardtags=info.yingbian_tags.map(function(i){
return 'yingbian_'+i;
});
if(info&&info.yingbian) info.yingbian(trigger);
player.addTempSkill('yingbian_changeTarget');
}
},
filter:(event,player)=>event.card.isCard&&player.hasHistory('lose',evt=>evt.getParent()==event&&Object.values(evt.gaintag_map).some(value=>value.includes('hina_shenshi'))),
content:()=>{
if(!Array.isArray(trigger.temporaryYingbian)) trigger.temporaryYingbian=[];
trigger.temporaryYingbian.add('force');
trigger.temporaryYingbian.addArray(get.yingbianEffects());
}
},
hina_xingzhi:{
groupSkill:true,
trigger:{player:'useCard1'},
trigger:{player:'yingbian'},
usable:1,
filter:function(event,player){
return player.group=='key'&&!event.card.yingbian&&Array.isArray(get.info(event.card).yingbian_tags);
},
content:function(){
filter:(event,player)=>player.group=='key'&&!event.card.yingbian&&lib.yingbian.condition.complex.has('zhuzhan'),
content:()=>{
'step 0'
var info=get.info(trigger.card);
trigger.card.cardtags=info.yingbian_tags.map(function(i){
return 'yingbian_'+i;
});
event.card=trigger.card;
event._global_waiting=true;
event.send=function(player,card,source,targets,id,id2,skillState){
if(skillState){
player.applySkills(skillState);
}
var type=get.type2(card);
var str=get.translation(source);
if(targets&&targets.length){
str+='对';
str+=get.translation(targets);
}
str+='使用了';
var next=player.chooseCard({
filterCard:function(card){
return get.type2(card)==type&&lib.filter.cardDiscardable.apply(this,arguments);
},
prompt:str+=(get.translation(card)+',是否弃置一张'+get.translation(type)+'为其助战?'),
position:'h',
_global_waiting:true,
id:id,
id2:id2,
ai:function(cardx){
var info=get.info(card),num=0;
if(info&&info.ai&&info.ai.yingbian){
var ai=info.ai.yingbian(card,source,targets,player);
if(ai) num=ai;
}
if(get.attitude(player,source)<=0) return 0;
return Math.max(ai,6)-get.value(cardx);
},
});
if(game.online){
_status.event._resultid=id;
game.resume();
trigger.yingbianZhuzhanAI=(player,card,source,targets)=>cardx=>{
if(get.attitude(player,source)<=0) return 0;
var info=get.info(card),num=0;
if(info&&info.ai&&info.ai.yingbian){
var ai=info.ai.yingbian(card,source,targets,player);
if(ai) num=ai;
}
return Math.max(num,6)-get.value(cardx);
};
trigger.afterYingbianZhuzhan=event=>event.zhuzhanresult.draw(2);
lib.yingbian.condition.complex.get('zhuzhan')(trigger);
'step 1'
var type=get.type2(card);
var list=game.filterPlayer(function(current){
if(current==player) return false;
if(!current.countCards('h')) return false;
return _status.connectMode||current.countCards('h',function(cardx){
return get.type2(cardx)==type;
})
});
event.list=list;
event.id=get.id();
list.sort(function(a,b){
return get.distance(event.source,a,'absolute')-get.distance(event.source,b,'absolute');
});
'step 2'
if(event.list.length==0){
event.finish();
return;
}
else if(_status.connectMode&&(event.list[0].isOnline()||event.list[0]==game.me)){
event.goto(4);
}
else{
event.current=event.list.shift();
event.send(event.current,event.card,player,trigger.targets,event.id,trigger.parent.id);
}
'step 3'
if(result.bool){
event.zhuzhanresult=event.current;
event.zhuzhanresult2=result;
if(event.current!=game.me) game.delayx();
event.goto(8);
}
else{
event.goto(2);
}
'step 4'
var id=event.id;
var sendback=function(result,player){
if(result&&result.id==id&&!event.zhuzhanresult&&result.bool){
event.zhuzhanresult=player;
event.zhuzhanresult2=result;
game.broadcast('cancel',id);
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused){
return (function(){
event.resultOL=_status.event.resultOL;
ui.click.cancel();
if(ui.confirm) ui.confirm.close();
});
}
}
else{
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused){
return (function(){
event.resultOL=_status.event.resultOL;
});
}
}
};
var withme=false;
var withol=false;
var list=event.list;
for(var i=0;i<list.length;i++){
if(list[i].isOnline()){
withol=true;
list[i].wait(sendback);
list[i].send(event.send,list[i],event.card,player,trigger.targets,event.id,trigger.parent.id,get.skillState(list[i]));
list.splice(i--,1);
}
else if(list[i]==game.me){
withme=true;
event.send(list[i],event.card,player,trigger.targets,event.id,trigger.parent.id);
list.splice(i--,1);
}
}
if(!withme){
event.goto(6);
}
if(_status.connectMode){
if(withme||withol){
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player) game.players[i].showTimer();
}
}
}
event.withol=withol;
'step 5'
if(result&&result.bool&&!event.zhuzhanresult){
game.broadcast('cancel',event.id);
event.zhuzhanresult=game.me;
event.zhuzhanresult2=result;
}
'step 6'
if(event.withol&&!event.resultOL){
game.pause();
}
'step 7'
for(var i=0;i<game.players.length;i++){
game.players[i].hideTimer();
}
'step 8'
if(event.zhuzhanresult){
var target=event.zhuzhanresult;
target.line(player,'green');
target.discard(event.zhuzhanresult2.cards).discarder=target;
target.draw(2);
target.popup('助战','wood');
game.log(target,'响应了',player,'发起的助战');
target.addExpose(0.2);
}
else event.finish();
'step 9'
if(!trigger.card.yingbian){
trigger.card.yingbian=true;
var info=get.info(trigger.card);
if(info&&info.yingbian) info.yingbian(trigger);
player.addTempSkill('yingbian_changeTarget');
}
},
if(!result.bool) return;
trigger.card.yingbian=true;
lib.yingbian.effect.forEach(value=>game.yingbianEffect(trigger,value));
player.addTempSkill('yingbian_changeTarget');
}
},
yingba:{
audio:2,
@ -2985,7 +2829,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.control!='cancel2'){
if(result.control=='选项二'){
player.logSkill('tspowei',target);
player.logSkill('tspowei_use',target);
player.gainPlayerCard(target,'h',true);
event.goto(3);
}
@ -5964,6 +5808,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
evt.cards&&evt.cards.length==2&&_status.currentPhase&&_status.currentPhase!=player&&_status.currentPhase.countDiscardableCards(player,'he');
},
content:function(){
//game.log(trigger.card)
//game.log(trigger.cards)
player.line(_status.currentPhase,'green');
player.discardPlayerCard(_status.currentPhase,'he',true);
}

View File

@ -8470,22 +8470,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool&&result.cards.length){
target.recast(result.cards,null,(player,cards)=>{
var type=get.type(result.cards[0],'trick');
var name=result.cards[0].name;
var card2=get.cardPile(function(card){
return get.type(card,'trick')==type&&card.name!=name;
});
if(!card2){
card2=get.cardPile(function(card){
return get.type(card,'trick')==type;
});
}
if(card2){
target.gain(card2,'draw');
}
else{
target.draw().log=false;
}
var type=get.type(cards[0],'trick'),name=cards[0].name,card2=get.cardPile(card=>get.type(card,'trick')==type&&card.name!=name);
if(!card2) card2=get.cardPile(card=>get.type(card,'trick')==type);
if(card2) player.gain(card2,'draw');
else player.draw().log=false;
});
var clone=game.createCard(card);
player.gain(clone,'gain2');

View File

@ -11,9 +11,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhangkai:['male','qun',4,['dcxiangshu']],
gaoxiang:['male','shu',4,['dcchiying'],['unseen']],
yuanyin:['male','qun',3,['dcmoshou','dcyunjiu'],['unseen']],
dongwan:['female','qun',3,['dcshengdu','dcjieling'],['unseen']],
dongwan:['female','qun',3,['dcshengdu','dcjieling']],
zhangchu:['female','qun',3,['dcjizhong','dcrihui','dcguangshi']],
peiyuanshao:['male','qun',4,['dcmoyu'],['unseen']],
peiyuanshao:['male','qun',4,['dcmoyu']],
mengjie:['male','qun',3,['dcyinlu','dcyouqi']],
dc_huojun:['male','shu',4,['dcgue','dcsigong']],
dc_sunhanhua:['female','wu',3,['dchuiling','dcchongxu']],
@ -613,38 +613,39 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return game.hasPlayer(current=>{
if(current==player||current==event.player) return false;
return current.hasHistory('lose',function(evt){
return evt.cards.length>0;
return evt.cards2.length>0;
});
})&&(_status.connectMode||player.hasCard({type:'basic'},'h'));
},
direct:true,
content:function(){
'step 0'
var map={};
game.countPlayer(function(current){
if(current==player||current==trigger.player) return false;
if(current.hasHistory('lose',function(evt){
return evt.cards2.length>0;
})) map[current.playerid]=Math.min(5,current.getHistory('lose').reduce(function(num,evt){
return num=evt.cards2.length;
},0))+1;
});
player.chooseCardTarget({
prompt:get.prompt('dcporui'),
//prompt2:'弃置一张基本牌并选择一名本回合失去过牌的非当前回合的其他角色,你视为对其依次使用'+get.cnNumber(Math.max(0,player.hp)+1)+'张【杀】',
prompt2:get.skillInfoTranslation('dcporui',player),
filterCard:lib.filter.cardDiscardable,
selectCard:1,
filterCard:function(card,player){
return get.type2(card)=='basic'&&lib.filter.cardDiscardable(card,player,'dcporui');
},
position:'he',
list:game.filterPlayer(current=>{
if(current==player||current==trigger.player) return false;
return current.hasHistory('lose',function(evt){
return evt.cards.length>0;
});
}),
filterTarget:function(card,player,target){
return _status.event.list.map(i=>i[0]).contains(target);
return Object.keys(_status.event.map).contains(target.playerid);
},
ai1:function(card){
return 7-get.value(card);
},
ai2:function(target){
return get.effect(target,{name:'sha'},_status.event.player,_status.event.player)*_status.event.list.find(i=>{
return i[0]==target;
})[1];
return get.effect(target,{name:'sha'},_status.event.player,_status.event.player)*_status.event.map[target.playerid];
}
});
}).set('map',map);
'step 1'
if(result.bool){
var target=result.targets[0],cards=result.cards;
@ -884,12 +885,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target.chooseToUse(function(card,player,event){
if(get.name(card)!='sha') return false;
return lib.filter.filterCard.apply(this,arguments);
},'是否对'+get.translation(player)+'使用一张【杀】(伤害基数为'+num+'').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
},'是否对'+get.translation(player)+'使用一张无距离限制的【杀】(伤害基数为'+num+'').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
return lib.filter.filterTarget.apply(this,arguments);
return lib.filter.targetEnabled.apply(this,arguments);
}).set('sourcex',player).set('num',num).set('oncard',card=>{
var evt=_status.event;
evt.baseDamage=evt.num;
_status.event.baseDamage=_status.event.getParent().num;
});
'step 2'
if(result.bool){
@ -903,7 +903,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
charlotte:true,
onremove:true,
},
ban:{charlotte:true},
ban:{
charlotte:true,
mark:true,
marktext:'欲',
intro:{content:'偷马贼被反打了!'},
},
ai:{
ai:{
effect:{
@ -936,7 +941,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target:player,
card:{name:'sha'},
},true)) return eff;
if(player.getStorage('dcmoyu_clear').length||player.hp+player.countCards('hs','tao')<=1) return 0;
if(target.hasSha()&&player.hp+player.countCards('h',function(card){
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,player,'unchanged','cardSavable',player);
if(mod!='unchanged') return mod;
var savable=get.info(card).savable;
if(typeof savable=='function') savable=savable(card,player,player);
return savable;
})<=player.getStorage('dcmoyu_clear').length+1) return 0;
return eff;
}
}
@ -1147,16 +1160,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
targetInRange:function(card){
if(card.storage&&card.storage.dcjieling) return true;
},
cardUsable:function(card,player,num){
if(card.storage&&card.storage.dcjieling) return Infinity;
},
},
subSkill:{
after:{
trigger:{global:'useCardAfter'},
forced:true,
direct:true,
charlotte:true,
audio:'dcjieling',
trigger:{global:'useCardAfter'},
filter:function(event,player){
return event.card.name=='sha'&&event.card.storage&&event.card.storage.dcjieling;
},
direct:true,
content:function(){
'step 0'
var damaged=game.hasPlayer2(current=>{
@ -6459,10 +6475,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
mod:{
targetInRange:function(card,player,target){
for(var i=1;i<=5;i++){
if(!player.hasDisabledSlot(i)) return false;
}
return true;
if(!player.hasEnabledSlot()) return true;
},
},
marktext:'萍',
@ -10196,7 +10209,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcsigong_info:'其他角色的回合结束时若其于本回合内使用牌被响应过你可以将手牌摸至或弃置至1视为对其使用一张需使用X张【闪】抵消的【杀】且此【杀】的伤害基数+1X为你以此法弃置的牌数且至少为1。当你以此法造成伤害后该技能于本轮失效。',
peiyuanshao:'裴元绍',
dcmoyu:'没欲',
dcmoyu_info:'出牌阶段每名角色限一次。你可以获得一名其他角色区域里的一张牌,然后其可以对你使用一张【杀】且此【杀】伤害基数为XX为你于本回合发动此技能的次数。若此【杀】对你造成了伤害你令此技能于本回合失效。',
dcmoyu_info:'出牌阶段每名角色限一次。你可以获得一名其他角色区域里的一张牌,然后其可以对你使用一张无距离限制的【杀】且此【杀】伤害基数为XX为你于本回合发动此技能的次数。若此【杀】对你造成了伤害你令此技能于本回合失效。',
zhangchu:'张楚',
dcjizhong:'集众',
dcjizhong_info:'出牌阶段限一次。你可以令一名其他角色摸两张牌然后其选择一项1.若其没有“信众”标记其获得“信众”标记2.弃置三张手牌。',

View File

@ -29,13 +29,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//承
jsrg_sunce:['male','wu',4,['jsrgduxing','jsrgzhiheng','jsrgzhasi','jsrgbashi'],['zhu']],
jsrg_xuyou:['male','wei',3,['jsrglipan','jsrgqingxi','jsrgjinmie'],['doublegroup:wei:qun']],
jsrg_lvbu:['male','qun',5,['jsrgwuchang','jsrgqingjiao','jsrgchengxu'],['doublegroup:qun:shu']],
jsrg_zhanghe:['male','wei',4,['jsrgqiongtu','jsrgxianzhu'],['doublegroup:qun:wei']],
jsrg_lvbu:['male','qun',5,['jsrgwuchang','jsrgqingjiao','jsrgchengxu'],['doublegroup:shu:qun']],
jsrg_zhanghe:['male','wei',4,['jsrgqiongtu','jsrgxianzhu'],['doublegroup:wei:qun']],
jsrg_zoushi:['female','qun',3,['jsrgguyin','jsrgzhangdeng']],
jsrg_guanyu:['male','shu',5,['jsrgguanjue','jsrgnianen']],
jsrg_guanyu:['male','shu',5,['jsrgguanjue','jsrgnianen'],['border:wei']],
jsrg_chendeng:['male','qun',3,['jsrglunshi','jsrgguitu']],
jsrg_zhenji:['female','qun',3,['jsrgjixiang','jsrgchengxian']],
jsrg_zhangliao:['male','qun',4,['jsrgzhengbing','jsrgtuwei'],['doublegroup:qun:wei']],
jsrg_zhangliao:['male','qun',4,['jsrgzhengbing','jsrgtuwei'],['doublegroup:wei:qun']],
jsrg_xugong:['male','wu',3,['jsrgbiaozhao','jsrgyechou']],
jsrg_chunyuqiong:['male','qun',4,['jsrgcangchu','jsrgshishou']],
},
@ -84,7 +84,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
order:5,
result:{
target:function(player,target){
player:function(player,target){
var eff=Math.sign(get.effect(target,{name:'juedou'},player,player));
if(player.hasSkillTag('directHit_ai',true,{
target:target,
@ -92,10 +92,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},true)||ui.selected.targets.concat(target).reduce((p,c)=>{
return p+c.countCards('h');
},0)<player.countCards('h','sha')){
return -eff;
return 0;
}
return eff;
}
return -114514;
},
target:-1.5,
}
},
subSkill:{
@ -168,9 +169,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.addSkillLog('rezhiheng');
player.addSkill('jsrgzhasi_undist');
},
derivation:'rezhiheng',
subSkill:{
undist:{
inherit:'undist',
group:'undist',
charlotte:true,
trigger:{
player:['useCardAfter','damageEnd'],
@ -301,7 +303,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).set('choice',maxGroup);
'step 1'
var group=result.control;
if(group=='cancel2')
if(group=='cancel2') return;
player.logSkill('jsrglipan');
player.popup(group+'2',get.groupnature(group,'raw'));
player.changeGroup(group);
@ -575,6 +577,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.useCard({name:name},target,cards);
player.addTempSkill('jsrgqingjiao_'+name,'phaseUseAfter');
},
ai:{
order:7,
result:{
player:function(player,target){
var name=(target.countCards('h')>player.countCards('h')?'tuixinzhifu':'chenghuodajie');
var list=[];
if(ui.selected.cards.length) list.addArray(ui.selected.cards);
var card=get.autoViewAs({name:name},list);
return get.effect(target,card,player,player);
},
},
},
subSkill:{
tuixinzhifu:{
charlotte:true,
@ -1240,7 +1254,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.asked=true;
player.chooseButton([
'###'+get.prompt('jsrgjixiang',trigger.player)+'###<div class="text center">'+str+'</div>',
[listx,'vcard']
[listx,'vcard'],
]).set('ai',()=>Math.random()+1);
}
'step 1'
@ -1248,6 +1262,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var name=result.links[0][2],nature=result.links[0][3];
var card={name:name,nature:nature,isCard:true};
event.card=card;
var evt=trigger.getParent();
var reason=(trigger.name=='chooseToUse'?'使用':'打出');
var prompt=event.asked?
'济乡:是否弃置一张牌'+(trigger.filterTarget?'并选择目标角色':'')+'':
@ -1467,8 +1482,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return player.group=='qun';
},
filterCard:lib.filter.cardRecastable,
check:function(card,player){
var val=5+['shan','tao'].contains(get.name(card))*1.5;
check:function(card){
var player=_status.event.player,val=5+['shan','tao'].contains(get.name(card))*1.5;
if(player.needsToDiscard()>2&&get.name(card)=='sha'&&player.countCards('hs','sha')>1) val+=0.5;
return val-get.value(card);
},
@ -1526,13 +1541,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
'step 0'
player.chooseTarget(get.prompt('jsrgtuwei'),'获得攻击范围内任意名角色的各一张牌。然后回合结束时这些角色中未受过伤害的角色依次获得你的一张牌。',(card,player,target)=>{
return player.inRange(current)&&target.countGainableCards(player,'he')>0;
return player.inRange(target)&&target.countGainableCards(player,'he')>0;
},[1,Infinity]).set('ai',target=>{
var player=_status.event.player;
return get.effect(target,{name:'shunshou'},player,player);
}).set('damage',player.hasCard(card=>{
return player.hasValueTarget(card)&&get.tag(card,'damage');
},'hs'));
return get.effect(target,{name:'shunshou_copy2'},player,player);
});
'step 1'
if(result.bool){
var targets=result.targets.slice();
@ -1831,7 +1844,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
//江山如故·起
sbyingmen:{
forbid:['guozhan'],
trigger:{
global:'phaseBefore',
player:'enterGame',
@ -1880,8 +1892,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
addVisitors:function(characters,player){
player.addSkillBlocker('sbyingmen');
game.log(player,'将','#y'+get.translation(characters),'加入了','#g“访客”')
lib.skill.rehuashen.drawCharacter(player,characters);
game.log(player,'将','#y'+get.translation(characters),'加入了','#g“访客”');
game.broadcastAll(function(player,characters){
player.$draw(characters.map(function(name){
var cardname='huashen_card_'+name;
lib.card[cardname]={
fullimage:true,
image:'character:'+name
};
lib.translate[cardname]=get.rawName2(name);
return game.createCard(cardname,' ',' ');
}),'nobroadcast');
},player,characters);
player.markAuto('sbyingmen',characters)
var storage=player.getStorage('sbyingmen');
var skills=lib.skill.sbyingmen.getSkills(storage,player);
@ -2807,7 +2829,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
forced:true,
locked:false,
getNum:function(target,player){
return target.countCards(card=>{
return target.countCards('e',card=>{
var subtype=get.subtypes(card);
for(var i of subtype){
if(player.hasDisabledSlot(i)) return true;
@ -2883,6 +2905,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
});
}
else{
event.finish();
return;
}
'step 2'
if(result.bool){event.finish();return;}
var targets=game.filterPlayer(current=>{

View File

@ -6,23 +6,31 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
characterSort:{
mobile:{
mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang","qianzhao","old_wanglang",'shichangshi'],
mobile_default:['xin_guozhao',"miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang","qianzhao","old_wanglang",'shichangshi'],
mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning",'yj_huangzhong','yj_weiyan'],
mobile_sunben:["re_sunben"],
mobile_standard:["xin_xiahoudun","xin_zhangfei"],
mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong","re_caiwenji","re_xunyu","re_dianwei","xin_zhoutai","re_yanwen",'re_zhangzhang'],
mobile_shenhua_feng:['re_xiaoqiao',"xin_zhoutai"],
mobile_shenhua_huo:["re_pangtong","re_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","xin_yuanshao"],
mobile_shenhua_lin:["re_dongzhuo","re_sunjian","re_zhurong"],
mobile_shenhua_shan:["re_liushan","re_dengai","re_jiangwei","re_caiwenji",'re_zhangzhang',"re_sunben"],
mobile_shenhua_yin:['xin_sunliang'],
mobile_shenhua_lei:["re_guanqiujian"],
mobile_yijiang1:["re_xusheng","re_lingtong","ol_yujin","re_wuguotai","re_gaoshun",'re_caozhi'],
mobile_yijiang2:["xin_liaohua","xin_caozhang","re_liubiao","re_handang","xin_chengpu","xin_gongsunzan","re_zhonghui","re_bulianshi"],
mobile_yijiang3:["re_liru","xin_jianyong","xin_zhuran","xin_guohuai","xin_panzhangmazhong","xin_fuhuanghou","re_yufan"],
mobile_yijiang4:["xin_zhoucang","xin_caifuren","xin_guyong","xin_sunluban","xin_caozhen","xin_jushou","xin_wuyi","xin_zhuhuan","re_chenqun"],
mobile_yijiang5:['xin_sunxiu','xin_quancong','xin_zhuzhi','xin_caoxiu'],
mobile_yijiang5:['xin_zhangyi','xin_sunxiu','xin_quancong','xin_zhuzhi','xin_caoxiu'],
mobile_yijiang67:["re_jikang"],
mobile_changshi:['scs_zhangrang','scs_zhaozhong','scs_sunzhang','scs_bilan','scs_xiayun','scs_hankui','scs_lisong','scs_duangui','scs_guosheng','scs_gaowang'],
mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","liuzan","xin_hansui"],
},
},
character:{
shichangshi:['male','qun',1,['mbdanggu','mbmowang']],
xin_guozhao:['female','wei',3,['yichong','wufei'],['unseen']],
xin_zhangyi:['male','shu',4,['xinwurong','shizhi'],['unseen']],
xin_sunliang:['male','wu',3,['xinzhizheng','xinkuizhu','xinlijun'],['zhu']],
re_xiaoqiao:['female','wu',3,['retianxiang','xinhongyan']],
shichangshi:['male','qun',1,['mbdanggu','mbmowang']],
re_zhangzhang:['male','wu',3,['rezhijian','guzheng']],
qianzhao:['male','wei',4,['mbshihe','mbzhenfu']],
old_wanglang:['male','wei',3,['gushe','jici']],
@ -386,6 +394,377 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//郭照
yichong:{
init:function(player){
if(!lib.skill['yichong_'+player.playerid]){
lib.skill['yichong_'+player.playerid]={
onremove:true,
mark:true,
marktext:'雀',
intro:{
markcount:function(storage){
return (storage||0).toString();
},
content:function(storage){
return '已被掠夺'+(storage||0)+'张牌';
},
},
};
lib.translate['yichong_'+player.playerid]='易宠';
lib.translate['yichong_'+player.playerid+'_bg']='雀';
}
},
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt('meihun'),'选择一名其他角色并选择一个花色,获得其此花色的所有牌并令其获得“雀”标记',lib.filter.notMe).set('ai',function(target){
var player=_status.event.player;
var att=get.attitude(player,target);
if(att>0) return 0;
var getNum=function(player){
var list=[];
for(var i of lib.suit) list.push((player.countCards('he',{suit:i})+3));
return list.sort((a,b)=>b-a)[0];
};
return getNum(target)+target.countCards('h')/10;
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('yichong',target);
event.target=target;
player.chooseControl(lib.suit.slice(0).reverse()).set('prompt','请声明一个花色').set('ai',function(){
var target=_status.event.target,cards=target.getCards('he');
var suits=lib.suit.slice(0);
suits.sort(function(a,b){
var num=function(suit){
return cards.filter(function(card){
return get.suit(card)==suit;
}).length;
};
return num(b)-num(a);
});
return suits[0];
}).set('target',target);
}
else event.finish();
'step 2'
var suit=result.control;
player.chat(get.translation(suit+2));
game.log(player,'选择了','#y'+get.translation(suit+2));
player.storage.yichong=suit;
player.markSkill('yichong');
game.broadcastAll(function(player,suit){
if(player.marks.yichong) player.marks.yichong.firstChild.innerHTML=get.translation(suit);
},player,suit)
if(target.countCards('he',{suit:suit})) player.gain(target.getCards('he',{suit:suit}),target,'giveAuto');
game.countPlayer(function(current){
current.removeSkill('yichong_'+player.playerid);
if(current==target) target.addSkill('yichong_'+player.playerid);
});
player.addTempSkill('yichong_clear',{player:'phaseBegin'});
},
onremove:true,
intro:{content:'拥有“雀”标记的角色获得$牌后,你获得之'},
group:'yichong_gain',
subSkill:{
gain:{
audio:'yichong',
trigger:{global:['gainAfter','loseAsyncAfter']},
filter:function(event,player){
if(!player.storage.yichong) return false;
return game.hasPlayer(function(current){
if(!event.getg(current).length||!current.hasSkill('yichong_'+player.playerid)) return false;
if(current.countMark('yichong_'+player.playerid)>=5) return false;
return event.getg(current).some(card=>get.suit(card,current)==player.storage.yichong&&lib.filter.canBeGained(card,current,player));
});
},
forced:true,
content:function(){
'step 0'
var target=game.findPlayer(function(current){
if(!trigger.getg(current).length||!current.hasSkill('yichong_'+player.playerid)) return false;
if(current.countMark('yichong_'+player.playerid)>=5) return false;
return trigger.getg(current).some(card=>get.suit(card,current)==player.storage.yichong&&lib.filter.canBeGained(card,current,player));
});
event.target=target;
var cards=trigger.getg(target).filter(card=>get.suit(card,target)==player.storage.yichong&&lib.filter.canBeGained(card,target,player));
if(cards.length<=5-target.countMark('yichong_'+player.playerid)) event._result={bool:true,links:cards};
else{
var num=(5-target.countMark('yichong_'+player.playerid));
player.chooseButton(['易宠:获得其中的'+get.cnNumber(num)+'张牌',cards],num,true).set('ai',function(button){
return get.value(button.link);
});
}
'step 1'
if(result.bool){
player.gain(result.links,target,'give');
target.addMark('yichong_'+player.playerid,result.links.length,false);
}
},
},
clear:{
charlotte:true,
onremove:function(player){
game.countPlayer(function(current){
current.removeSkill('yichong_'+player.playerid);
});
},
},
},
},
wufei:{
audio:2,
trigger:{player:['useCardToPlayered','damageEnd']},
filter:function(event,player){
var target=game.findPlayer(current=>current.hasSkill('yichong_'+player.playerid));
if(!target) return false;
if(event.name=='damage') return target.hp>Math.max(1,player.hp);
return event.isFirstTarget&&(event.card.name=='sha'||(get.type(event.card)=='trick'&&get.tag(event.card,'damage')));
},
direct:true,
content:function(){
'step 0'
var target=game.findPlayer(current=>current.hasSkill('yichong_'+player.playerid));
event.target=target;
if(trigger.name=='damage'){
player.chooseBool(get.prompt('wufei',target),'对'+get.translation(target)+'造成1点伤害').set('choice',get.damageEffect(target,player,player)>0);
}
else{
player.logSkill('wufei',target);
player.addTempSkill('wufei_effect');
player.markAuto('wufei_effect',[trigger.card]);
game.log(target,'成为了',trigger.card,'的伤害来源');
event.finish();
}
'step 1'
if(result.bool){
player.logSkill('wufei',target);
target.damage();
}
},
subSkill:{
effect:{
charlotte:true,
trigger:{source:'damageBefore'},
filter:function(event,player){
if(!event.card) return false;
return player.getStorage('wufei_effect').contains(event.card);
},
forced:true,
popup:false,
firstDo:true,
content:function(){
var target=game.findPlayer(current=>current.hasSkill('yichong_'+player.playerid));
if(!target) delete trigger.source;
else trigger.source=target;
},
},
},
},
//张嶷
xinwurong:{
audio:3,
enable:'phaseUse',
usable:1,
filterTarget:lib.filter.notMe,
content:function(){
'step 0'
player.chooseToDuiben(target).set('title','谋弈').set('namelist',[
'反抗','归顺','镇压','安抚'
]).set('ai',button=>1+Math.random());
'step 1'
if(result.bool){
if(result.player=='db_def1'){
target.damage();
player.draw();
event.finish();
}
else{
var cards=target.getCards('he');
if(cards.length<2){
target.skip('phaseDraw');
target.addTempSkill('xinwurong_skip',{player:'phaseDrawSkipped'});
event.finish();
}
else if(cards.length==2) event._result={bool:true,cards:cards};
else target.chooseCard('怃戎:交给'+get.translation(player)+'两张牌',2,true,'he');
}
}
else{
if(result.player=='db_def1'){
player.gainPlayerCard(target,'he',true);
event.goto(3);
}
else{
player.damage();
player.draw(2);
event.finish();
}
}
'step 2'
if(result.bool) player.gain(result.cards,target,'giveAuto');
event.finish();
'step 3'
var cards=player.getCards('he');
if(!cards.length) event.finish();
else if(cards.length<=2) event._result={bool:true,cards:cards};
else player.chooseCard('怃戎:交给'+get.translation(target)+'两张牌',2,true,'he');
'step 4'
if(result.bool) target.gain(result.cards,player,'giveAuto');
},
ai:{
order:7,
result:{
player:1,
target:-1,
},
},
subSkill:{
skip:{
charlotte:true,
mark:true,
intro:{content:'跳过下个摸牌阶段'},
},
},
},
//孙亮
xinkuizhu:{
audio:'nzry_kuizhu',
trigger:{player:'phaseDiscardAfter'},
filter:function(event,player){
return player.getHistory('lose',function(evt){
return evt.type=='discard'&&evt.getParent('phaseDiscard')==event;
}).length;
},
direct:true,
content:function(){
'step 0'
var cards=[];
player.getHistory('lose',function(evt){
if(evt.type=='discard'&&evt.getParent('phaseDiscard')==trigger) cards.addArray(evt.cards2);
});
event.num=cards.length;
event.str1='令至多'+event.num+'名角色摸一张牌';
event.str2='对任意名体力值之和为'+event.num+'的角色造成1点伤害';
player.chooseControl('cancel2').set('ai',function(){
if(game.countPlayer(function(current){return get.attitude(player,current)<0&&current.hp==event.num})>0&&event.num<=3) return 1;
return 0;
}).set('choiceList',[event.str1,event.str2]).set('prompt','是否发动【溃诛】?');
'step 1'
if(result.control=='cancel2') event.finish();
event.control=[event.str1,event.str2][result.index];
'step 2'
var str='请选择〖溃诛〗的目标';
if(event.bool==false) str='<br>所选目标体力之和不足'+event.num+',请重选';
if(event.control==event.str2){
player.chooseTarget(str,function(card,player,target){
var targets=ui.selected.targets;
var num=0;
for(var i=0;i<targets.length;i++) num+=targets[i].hp;
return num+target.hp<=_status.event.num;
}).set('ai',function(target){
if(ui.selected.targets[0]!=undefined) return -1;
return get.attitude(player,target)<0;
}).set('promptbar','none').set('num',event.num).set('selectTarget',function(){
var targets=ui.selected.targets;
var num=0;
for(var i=0;i<targets.length;i++) num+=targets[i].hp;
if(num==_status.event.num) return ui.selected.targets.length;
return ui.selected.targets.length+1;
});
}
else{
player.chooseTarget('请选择〖溃诛〗的目标','令至多'+get.cnNumber(event.num)+'名角色各摸一张牌',[1,event.num]).set('ai',function(target){
return get.attitude(_status.event.player,target);
});
}
'step 3'
if(result.bool){
var targets=result.targets.sortBySeat();
if(event.control==event.str1){
player.logSkill('xinkuizhu',targets);
game.asyncDraw(targets);
}
else{
var num=0;
for(var i=0;i<targets.length;i++) num+=targets[i].hp;
if(num<event.num){
event.bool=false;
event.goto(2);
}
else{
player.logSkill('xinkuizhu',targets);
for(var i of targets) i.damage();
if(targets.length>=2) player.loseHp();
}
}
}
},
},
xinzhizheng:{
audio:'nzry_zhizheng',
mod:{
playerEnabled:function(card,player,target){
var info=get.info(card);
if(target!=player&&(!info||!info.singleCard||!ui.selected.targets.length)&&player.isPhaseUsing()&&!target.inRange(player)) return false;
},
},
trigger:{player:'phaseUseEnd'},
filter:function(event,player){
return player.getHistory('useCard',function(evt){
return evt.getParent('phaseUse')==event;
}).length<game.countPlayer(function(current){
return current!=player&&!current.inRange(player);
})&&game.hasPlayer(function(target){
return target!=player&&!target.inRange(player)&&target.countDiscardableCards(player,'he');
});
},
forced:true,
content:function(){
'step 0'
player.chooseTarget('请选择〖掣政〗的目标','弃置一名攻击范围内不包含你的角色的一张牌',true,function(card,player,target){
return target!=player&&!target.inRange(player)&&target.countDiscardableCards(player,'he');
}).set('ai',function(target){
var player=_status.event.player;
return get.effect(target,{name:'guohe_copy2'},player,player);
});
'step 1'
if(result.bool){
player.line(result.targets);
player.discardPlayerCard(result.targets[0],'he',true);
}
},
},
xinlijun:{
unique:true,
audio:'nzry_lijun1',
trigger:{global:'useCardAfter'},
filter:function(event,player){
if(event.card.name!='sha') return false;
if(_status.currentPhase!=event.player||event.player.group!='wu') return false;
if(!player.hasZhuSkill('xinlijun',event.player)||player==event.player) return false;
return event.cards.filterInD().length;
},
zhuSkill:true,
direct:true,
content:function(){
'step 0'
trigger.player.chooseBool(get.prompt('xinlijun'),'将'+get.translation(trigger.cards)+'交给'+get.translation(player)).set('choice',get.attitude(trigger.player,player)>0);
'step 1'
if(result.bool){
player.logSkill('xinlijun',trigger.player);
player.gain(trigger.cards.filterInD(),'gain2');
player.chooseBool().set('prompt','是否令'+get.translation(trigger.player)+'摸一张牌?').set('choice',get.attitude(player,trigger.player)>0);
}
else event.finish();
'step 2'
if(result.bool) trigger.player.draw();
},
},
//十常侍
mbdanggu:{
audio:2,
@ -3007,7 +3386,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var cards=player.getExpansions(skill);
if(cards.length) player.loseToDiscardpile(cards);
},
marktext:'',
marktext:'',
intro:{
name:'六经',
markcount:'expansion',
@ -3026,11 +3405,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:'chengye_gain',
subSkill:{
gain:{
audio:'chengye',
trigger:{player:'phaseUseBegin'},
forced:true,
filter:function(event,player){
return player.getExpansions('chengye').length>=6;
},
forced:true,
content:function(){
player.gain(player.getExpansions('chengye'),'gain2');
},
@ -6487,21 +6867,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
tianshu:{
audio:2,
enable:'phaseUse',
usable:1,
trigger:{player:'phaseUseBegin'},
filter:function(event,player){
return player.countCards('he')>0&&!game.hasPlayer(function(current){
return player.countCards('he')&&!game.hasPlayer(function(current){
return current.countCards('ej','taipingyaoshu');
});
},
position:'he',
filterCard:true,
filterTarget:true,
check:function(card){
return 6-get.value(card);
},
direct:true,
content:function(){
'step 0'
player.chooseCardTarget({
prompt:get.prompt2('tianshu'),
filterCard:true,
position:'he',
ai1:function(card){
return 5-get.value(card);
},
ai2:function(target){
var player=_status.event.player;
if(get.attitude(player,target)>0&&!target.hasEmptySlot(2)) return 0;
return get.attitude(player,target);
},
});
'step 1'
if(!result.bool){event.finish();return;}
var target=result.targets[0];
event.target=target;
player.logSkill('tianshu',target);
player.discard(result.cards);
if(!lib.inpile.contains('taipingyaoshu')){
lib.inpile.push('taipingyaoshu');
event.card=game.createCard2('taipingyaoshu','heart',3);
@ -6513,20 +6906,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
if(!event.card) event.finish();
else target.gain(event.card,'gain2');
'step 1'
'step 2'
if(target.getCards('h').contains(card)&&get.name(card,target)=='taipingyaoshu') target.chooseUseTarget(card,'nopopup',true);
},
ai:{
order:3,
result:{
target:function(player,target){
if(lib.inpile.contains('taipingyaoshu')&&!get.cardPile(function(card){
return card.name=='taipingyaoshu';
})) return 0;
return target.getUseValue({name:'taipingyaoshu'});
},
},
},
},
//界伏寿
xinzhuikong:{
@ -6652,9 +7034,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var source=event.source;
if(!source) return false;
var cards=source.getEquips(1);
return cards.length&&cards.some(card=>lib.filter.canBeGained(card,player,source));
return cards.some(card=>lib.filter.canBeGained(card,player,source));
},
prompt2:function(event){
prompt2:function(event,player){
var source=event.source;
var cards=source.getEquips(1).filter(card=>lib.filter.canBeGained(card,player,source));
return '获得其装备区中的'+get.translation(cards);
@ -7538,6 +7920,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:3,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.hasPlayer(function(target){
return lib.skill.beizhu.filterTarget(null,player,target);
});
},
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')>0;
},
@ -7551,12 +7938,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.cards=cards;
event.goto(5);
}
else player.discardPlayerCard('he',target,true);
else player.discardPlayerCard('he',target,'visible',true);
'step 2'
player.chooseBool('是否令'+get.translation(target)+'获得一张【杀】?').set('ai',function(){
var evt=_status.event.getParent();
return get.attitude(evt.player,evt.target)>0;
});
player.chooseBool('是否令'+get.translation(target)+'获得一张【杀】?').set('choice',get.attitude(player,target)>0);
'step 3'
if(result.bool){
var card=get.cardPile2(function(card){
@ -7583,6 +7967,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.redo();
}
},
ai:{
order:7,
threaten:1.14+5.14,
result:{
player:function(player,target){
var eff=get.effect(target,{name:'guohe_copy2'},player,player);
var cards=target.getCards('h',{name:'sha'});
if(!cards.length) return eff;
return eff/(cards.length+3);
},
},
},
},
beizhu_draw:{
trigger:{player:'damageEnd'},
@ -13371,8 +13767,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//伊吹 风子
qiaosi_c6:'<img src="'+lib.assetURL+'image/card/qiaosi_card6.png" width="60" height="60"> ',
//仲村 由理
mobile_sunben:'那个男人',
//孙笨
yangbiao:'手杀杨彪',
zhaohan:'昭汉',
@ -13559,7 +13953,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yufeng2:'御风',
yufeng_info:'出牌阶段限一次你可以表演“御风飞行”。若表演失败则你摸X张牌。若表演成功则你可以选择至多X名其他角色获得“御风”效果然后摸X-Y张牌准备阶段开始时你进行判定。若结果为红色你跳过摸牌阶段黑色你跳过出牌阶段和弃牌阶段。X为你的得分。Y为你选择的角色数。',
tianshu:'天书',
tianshu_info:'出牌阶段限一次,若场上没有【太平要术】,则你可以弃置一张牌并选择一名角色。该角色获得并使用【太平要术】。',
tianshu_info:'出牌阶段开始时,若场上没有【太平要术】,则你可以弃置一张牌并选择一名角色。该角色获得并使用【太平要术】。',
re_jiangwei:'手杀姜维',
retiaoxin:'挑衅',
retiaoxin_info:'出牌阶段限一次,你可以指定一名有牌的其他角色,该角色需对你使用一张【杀】,否则你弃置其一张牌。',
@ -13816,10 +14210,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){
scsanruo_info:'你可以将一张♥牌当【桃】、♦牌当火【杀】、♣牌当【闪】、♠牌当【无懈可击】使用。当你以此法使用或打出【杀】或【闪】时,你可以获得对方的一张牌;当你以此法使用【桃】时,你可以获得一名其他角色的一张牌;当你以此法使用【无懈可击】时,你可以获得此牌响应的普通锦囊牌的使用者的一张牌。',
scsmiaoyu:'妙语',
scsmiaoyu_info:'你可以将至多两张相同花色的牌按照以下规则使用或打出:♦牌当作火【杀】,♥牌当作【桃】,♣牌当作【闪】,♠牌当作【无懈可击】。若你以此法使用了两张红色牌,则此牌回复值或伤害值+1。若你以此法使用了两张黑色牌则你弃置当前回合角色一张牌。',
re_xiaoqiao:'手杀小乔',
xin_sunliang:'手杀孙亮',
xinkuizhu:'溃诛',
xinkuizhu_info:'弃牌阶段结束后你可以选择一项1.令至多X名角色各摸一张牌。2.对任意名体力值之和为X的角色造成1点伤害若你以此法选择的角色数不小于2你失去1点体力。X为你此阶段弃置的牌数',
xinzhizheng:'掣政',
xinzhizheng_info:'锁定技,你的出牌阶段内,攻击范围内不包含你的其他角色不能成为你使用牌的目标。出牌阶段结束时,若你本阶段内使用的牌数小于这些角色的数量,则你弃置其中一名角色的一张牌。',
xinlijun:'立军',
xinlijun_info:'主公技,其他吴势力角色于其回合内使用【杀】结算完毕后,其可以将此【杀】对应的实体牌交给你,然后你可以令其摸一张牌。',
xin_zhangyi:'手杀张嶷',
xinwurong:'怃戎',
xinwurong_info:'出牌阶段限一次,你可以与一名其他角色进行谋弈:<br><li>若你选择“镇压”且其选择“反抗”你对其造成1点伤害然后你摸一张牌。<br><li>若你选择“安抚”且其选择“归顺”,其须交给你两张牌(若其手牌数不足两张,则改为令其跳过其下个摸牌阶段)。<br><li>若你选择“镇压”且其选择“归顺”,你获得其一张牌,然后你交给其两张牌。<br><li>若你选择“安抚”且其选择“反抗”你受到1点伤害然后你摸两张牌。',
xin_guozhao:'手杀郭照',
yichong:'易宠',
yichong_info:'①准备阶段,你可以选择一名其他角色并选择一个花色,然后你获得其所有此花色的牌,移除场上的所有“雀”标记,令其获得“雀”标记直到你的下个回合开始。②拥有“雀”标记的角色获得你最后一次发动〖易宠①〗选择的花色的牌后,你获得这些牌(你至多通过每个“雀”获得五张牌)。',
wufei:'诬诽',
wufei_info:'若场上存在拥有“雀”标记的角色A①当你使用【杀】或伤害类锦囊牌指定第一个目标后你令A成为此牌伤害来源。②当你受到伤害后若A的体力值大于1且A的体力值大于你则你可以对A造成1点伤害。',
mobile_standard:'手杀异构·标准包',
mobile_shenhua:'手杀异构·神话再临',
mobile_shenhua_feng:'手杀异构·其疾如风',
mobile_shenhua_huo:'手杀异构·侵掠如火',
mobile_shenhua_lin:'手杀异构·其徐如林',
mobile_shenhua_shan:'手杀异构·不动如山',
mobile_shenhua_yin:'手杀异构·难知如阴',
mobile_shenhua_lei:'手杀异构·动如雷霆',
mobile_yijiang1:'手杀异构·将1',
mobile_yijiang2:'手杀异构·将2',
mobile_yijiang3:'手杀异构·将3',

View File

@ -3647,12 +3647,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
result:{player:1},
effect:{
target:function(card,player,target){
if(card&&get.type(card)=='equip'&&_status.event.skill=='_yongjian_zengyu') return 0;
if(card&&get.type(card)=='equip'&&_status.event.skill=='_gifting') return 0;
},
},
},
mod:{
cardZengyuable:function(card,player){
cardGiftable:function(card,player){
return get.type(card)=='equip';
}
}
@ -3786,19 +3786,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
//群曹操
yjxiandao:{
trigger:{player:'_yongjian_zengyuEnd'},
trigger:{player:'giftAccepted'},
usable:1,
forced:true,
locked:false,
filter:function(event,player){
return !event._zengyu_denied&&event.target.isIn();
},
filter:(event,player)=>event.target!=player&&event.target.isIn(),
logTarget:'target',
content:function(){
'step 0'
event.target=trigger.target;
event.card=trigger.cards[0];
event.target.markAuto('yjxiandao',[get.suit(event.card,false)])
event.card=trigger.card;
event.target.markAuto('yjxiandao_block',[get.suit(event.card,false)]);
event.target.addTempSkill('yjxiandao_block');
'step 1'
var type=get.type(card,false);
@ -3859,14 +3857,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
});
'step 2'
if(result.bool){
player.line(result.targets[0],'green');
var next=game.createEvent('_yongjian_zengyu');
next.player=player;
next.target=result.targets[0];
next.cards=result.cards;
next.setContent(lib.skill._yongjian_zengyu.content);
var target=result.targets[0];
player.line(target,'green');
player.gift(result.cards,target);
}
},
}
},
yjyibing:{
trigger:{
@ -3875,7 +3870,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
direct:true,
filter:function(event,player){
if(event.getParent().name=='_yongjian_zengyu') return false;
if(event.getParent().name=='gift') return false;
if(event.getParent('yjyibing').player==player) return false;
var evt=event.getParent('phaseDraw'),hs=player.getCards('h'),cards=event.getg(player);
return cards.length>0&&(!evt||evt.player!=player)&&cards.filter(function(card){
@ -6403,11 +6398,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//用间
yj_caocao:'SP曹操',
yjxiandao:'献刀',
yjxiandao_info:'每回合限一次。当你对其他角色发动〖赠予〗你令其不能使用或打出与本次赠予移动的牌A花色相同的牌直到回合结束。然后若牌A为锦囊牌你摸两张牌。为装备牌你获得其一张不为A的牌。为武器牌你对其造成1点伤害。',
yjxiandao_info:'每回合限一次。当你赠予其他角色一张牌你令其不能使用或打出与本次赠予移动的牌A花色相同的牌直到回合结束。然后若牌A为锦囊牌你摸两张牌。为装备牌你获得其一张不为A的牌。为武器牌你对其造成1点伤害。',
yjsancai:'散财',
yjsancai_info:'出牌阶段限一次,你可以展示所有手牌。若这些牌的类别均相同,则你可以发动一次〖赠予〗(可以选择任意手牌)。',
yjsancai_info:'出牌阶段限一次,你可以展示所有手牌。若这些牌的类别均相同,则你可以赠予一名其他角色一张手牌。',
yjyibing:'义兵',
yjyibing_info:'当你不因赠予且不因〖义兵〗的嵌套结算而于摸牌阶段外获得牌时,你可以将此次获得的所有牌当做【杀】使用(无距离限制且不计入使用次数)。',
yjyibing_info:'当你不因赠予且不因〖义兵〗的嵌套结算而于摸牌阶段外获得牌时,你可以将此次获得的所有牌当做【杀】使用(无距离限制且不计入使用次数)。',
yj_caohong:'用间曹洪',
yj_caohong_ab:'曹洪',
yjlifeng:'厉锋',

View File

@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
characterSort:{
old:{
old_standard:['ol_yuanshu'],
old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","xiaoqiao","pangde","xuhuang",'junk_sunquan',"huangzhong","new_caoren",'old_chendao'],
old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","old_xiaoqiao","pangde","xuhuang",'junk_sunquan',"huangzhong","new_caoren",'old_chendao'],
old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong",'old_re_lidian'],
old_yijiang1:["masu","xushu","xin_yujin","old_xusheng","old_lingtong","fazheng",'old_gaoshun'],
old_yijiang2:["old_zhonghui","madai",'old_handang','old_liubiao','oldre_liubiao','old_guanzhang'],
@ -45,7 +45,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
pangde:['male','qun',4,['mashu','mengjin']],
ol_huaxiong:["male","qun",6,["new_reyaowu"]],
old_wangyun:['male','qun',4,['wylianji','moucheng'],['clan:太原王氏']],
xiaoqiao:['female','wu',3,['tianxiang','hongyan']],
old_xiaoqiao:['female','wu',3,['tianxiang','hongyan']],
weiyan:['male','shu',4,['kuanggu']],
xiahouyuan:['male','wei',4,['shensu']],
old_huangfusong:['male','qun',4,['fenyue']],
@ -61,7 +61,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jsp_caoren:['male','wei',4,['kuiwei','yanzheng']],
old_caochun:['male','wei',4,['shanjia']],
masu:['male','shu',3,['xinzhan','huilei']],
xushu:['male','shu',3,['xswuyan','jujian']],
xushu:['male','shu',3,['xswuyan','jujian'],['border:wei']],
liru:['male','qun',3,['juece','mieji','fencheng']],
xin_yujin:['male','wei',4,['jieyue']],
//lusu:['male','wu',3,['haoshi','dimeng']],
@ -971,6 +971,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_zhaoyun:'新杀赵云',
old_zhaoyun_ab:'赵云',
ol_huaxiong:'旧华雄',
old_xiaoqiao:'旧小乔',
old_guhuo:"蛊惑",
old_guhuo_info:"你可以扣置一张手牌当做一张基本牌或普通锦囊牌使用或打出体力值不为0的其他角色依次选择是否质疑。然后若有质疑的角色你展示此牌若为假此牌作废这些角色摸一张牌若为真这些角色失去1点体力且若此牌不为♥此牌作废。",

View File

@ -5,13 +5,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sb',
connect:true,
character:{
sb_zhanghe:['male','wei',4,['sbqiaobian'],['unseen']],
sb_yujin:['male','wei',4,['sbxiayuan','sbjieyue']],
sb_huaxiong:['male','qun','3/4/1',['new_reyaowu','sbyangwei']],
liucheng:['female','qun',3,['splveying','spyingwu']],
sp_yangwan:['female','qun',3,['spmingxuan','spxianchou']],
sb_huangzhong:['male','shu',4,['sbliegong']],
sb_lvmeng:['male','wu',4,['sbkeji','sbdujiang']],
sb_sunshangxiang:['female','shu',4,['sbjieyin','sbliangzhu','sbxiaoji']],
sb_sunshangxiang:['female','shu',4,['sbjieyin','sbliangzhu','sbxiaoji'],['border:wu']],
sb_sunquan:['male','wu',4,['sbzhiheng','sbtongye','sbjiuyuan'],['zhu']],
sb_huanggai:['male','wu',4,['sbkurou','sbzhaxiang']],
sb_zhouyu:['male','wu',3,['sbyingzi','sbfanjian']],
@ -48,6 +49,103 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
skill:{
//张郃
sbqiaobian:{
audio:2,
trigger:{player:['phaseJudgeBefore','phaseDrawBefore','phaseUseBefore']},
filter:function(event,player){
if(event.name=='phaseJudge') return player.countCards('j');
return event.name!='phaseUse'||player.countCards('h')>6;
},
usable:1,
direct:true,
content:function(){
'step 0'
switch(trigger.name){
case 'phaseJudge':
player.chooseTarget(get.prompt('sbqiaobian'),'失去1点体力并跳过判定阶段将判定区里的牌移动给一名其他角色',lib.filter.notMe).set('ai',function(target){
var player=_status.event.player;
if(player.hp+player.countCards('h',function(card){
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,player,'unchanged','cardSavable',player);
if(mod!='unchanged') return mod;
var savable=get.info(card).savable;
if(typeof savable=='function') savable=savable(card,player,player);
return savable;
})<=1) return 0;
var eff=0;
for(var card of player.getCards('j')){
var cardx;
if(card.viewAs) cardx=get.autoViewAs({name:card.viewAs},[card]);
else cardx=card;
if(target.canAddJudge(cardx)) eff+=get.effect(target,cardx,player,player);
else eff-=get.attitude(player,target)/114514;
}
return eff;
}).setHiddenSkill('sbqiaobian');
break;
case 'phaseDraw':
player.chooseBool(get.prompt('sbqiaobian'),'跳过摸牌阶段于下个准备阶段摸两张牌并回复1点体力').setHiddenSkill('sbqiaobian');
break;
case 'phaseUse':
var num=(player.countCards('h')-6);
player.chooseToDiscard(get.prompt('sbqiaobian'),num,'弃置'+get.cnNumber(num)+'张手牌并跳过出牌阶段和弃牌阶段,然后移动场上的一张牌').set('ai',function(card){
var player=_status.event.player;
if(!player.canMoveCard(true)||player.countCards('hs',card=>player.hasValueTarget(card))>=9) return 0;
return 7-get.value(card);
}).setHiddenSkill('sbqiaobian').logSkill='sbqiaobian';
break;
}
'step 1'
if(result.bool){
trigger.cancel();
switch(trigger.name){
case 'phaseJudge':
var target=result.targets[0];
player.logSkill('sbqiaobian',target);
player.loseHp();
game.log(player,'跳过了判定阶段');
for(var card of player.getCards('j')){
if(target.canAddJudge(card)){
player.$give(card,target,false);
if(card.viewAs) target.addJudge({name:card.viewAs},[card]);
else target.addJudge(card);
}
else player.discard(card);
}
break;
case 'phaseDraw':
player.logSkill('sbqiaobian');
game.log(player,'跳过了摸牌阶段');
player.addSkill('sbqiaobian_draw');
break;
case 'phaseUse':
player.skip('phaseDiscard');
game.log(player,'跳过了出牌阶段');
game.log(player,'跳过了弃牌阶段');
player.moveCard();
break;
}
}
else player.storage.counttrigger.sbqiaobian--;
},
subSkill:{
draw:{
charlotte:true,
mark:true,
intro:{content:'准备阶段摸两张牌并回复1点体力'},
audio:'sbqiaobian',
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
content:function(){
player.removeSkill('sbqiaobian_draw');
player.draw(2);
player.recover();
},
},
},
},
//萌货
sbhuoshou:{
audio:2,
@ -467,6 +565,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
sbzhiba:{
init:function(player){
if(player.hasZhuSkill('sbzhiba')) player.markSkill('sbzhiba');
},
audio:2,
trigger:{player:'dying'},
filter:function(event,player){
@ -475,6 +576,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
zhuSkill:true,
limited:true,
mark:false,
skillAnimation:true,
animationColor:'wood',
content:function(){
@ -1603,7 +1705,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lose:false,
delay:false,
filter:function(event,player){
return player.countMark('sbrende')<2||player.hasSkill('sbrende_used');
if(player.countMark('sbrende')<2||player.hasSkill('sbrende_used')) return true;
for(var name of lib.inpile){
if(get.type(name)!='basic') continue;
var card={name:name,isCard:true};
if(event.filterCard(card,player,event)) return false;
if(name=='sha'){
for(var nature of lib.inpile_nature){
card.nature=nature;
if(event.filterCard(card,player,event)) return false;
}
}
}
return true;
},
filterTarget:function(card,player,target){
if(player.getStorage('sbrende_given').contains(target)) return false;
@ -3496,7 +3610,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
onremove:true,
content:function(){
'step 0'
player.chooseControl('变化','不变').set('prompt','统业:猜测场上装备数是否于你下回合准备阶段前发生变化').set('ai',()=>(game.countPlayer()<=4?Math.random():1)<0.4);
player.chooseControl('变化','不变').set('prompt','统业:猜测场上装备数是否于你下回合准备阶段前发生变化').set('ai',()=>Number((game.countPlayer()<=4?Math.random():1)<0.4));
'step 1'
if(result.control=='变化'){
player.addSkill('sbtongye_change',1);
@ -4643,6 +4757,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sbhuoshou_info:'锁定技。①【南蛮入侵】对你无效。②当其他角色使用【南蛮入侵】指定第一个目标后,你代替其成为此牌的伤害来源。③出牌阶段开始时,你随机获得弃牌堆中的一张【南蛮入侵】。④出牌阶段,若你于此阶段使用过【南蛮入侵】,你不能使用【南蛮入侵】。',
sbzaiqi:'再起',
sbzaiqi_info:'蓄力技1/7。①弃牌阶段结束时你可以消耗任意点蓄力值并选择等量名角色然后令这些角色选择一项1.令你摸一张牌2.弃置一张牌然后你回复1点体力。②每回合限一次。当你造成伤害后你获得1点蓄力值。',
sb_zhanghe:'谋张郃',
sbqiaobian:'巧变',
sbqiaobian_info:'每回合限一次。①你可以失去1点体力并跳过判定阶段将判定区的所有牌移动给一名其他角色无法置入其判定区的牌改为弃置之。②你可以跳过摸牌阶段于下个准备阶段摸两张牌并回复1点体力。③你可以将手牌数弃置至六张并跳过出牌阶段和弃牌阶段然后移动场上的一张牌。',
sb_zhi:'谋攻篇·知',
sb_shi:'谋攻篇·识',

View File

@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
characterSort:{
shenhua:{
shenhua_feng:["sp_zhangjiao","re_yuji","old_zhoutai","old_caoren","re_xiahouyuan","re_xiaoqiao","re_huangzhong","re_weiyan"],
shenhua_feng:["sp_zhangjiao","re_yuji","old_zhoutai","old_caoren","re_xiahouyuan","xiaoqiao","re_huangzhong","re_weiyan"],
shenhua_huo:['dianwei','xunyu','pangtong','sp_zhugeliang','taishici','yanwen','re_yuanshao','re_pangde'],
shenhua_lin:['caopi','re_xuhuang','menghuo','zhurong','re_lusu','sunjian','dongzhuo','jiaxu'],
shenhua_shan:['dengai','zhanghe','liushan','jiangwei','zhangzhang','sunce','caiwenji','zuoci'],
@ -21,7 +21,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_pangde:['male','qun',4,['mashu','jianchu']],
re_xiahouyuan:['male','wei',4,['xinshensu']],
re_weiyan:['male','shu',4,['xinkuanggu','qimou']],
re_xiaoqiao:['female','wu',3,['retianxiang','xinhongyan']],
xiaoqiao:['female','wu',3,['retianxiang','hongyan']],
sp_zhangjiao:['male','qun',3,['releiji','guidao','huangtian'],['zhu']],
re_yuji:["male","qun",3,["xinfu_guhuo"]],
// yuji:['male','qun',3,['guhuo']],
@ -1014,19 +1014,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
})>1) return 'equip5';
});
'step 1'
if(result.control=='equip1'){
player.addTempSkill('drlt_jueyan1',{player:'phaseAfter'});
};
if(result.control=='equip2'){
player.draw(3);
player.addTempSkill('drlt_jueyan3',{player:'phaseAfter'});
};
if(result.control=='equip6'){
player.addTempSkill('drlt_jueyan2',{player:'phaseAfter'});
};
if(result.control=='equip5'){
player.addTempSkill('rejizhi',{player:'phaseAfter'});
};
switch(result.control){
case 'equip1':
player.addTempSkill('drlt_jueyan1',{player:'phaseAfter'});
break;
case 'equip2':
player.draw(3);
player.addTempSkill('drlt_jueyan3',{player:'phaseAfter'});
break;
case 'equip3_4':
player.addTempSkill('drlt_jueyan2',{player:'phaseAfter'});
break;
case 'equip5':
player.addTempSkill('rejizhi',{player:'phaseAfter'});
break;
}
},
ai:{
order:13,
@ -7023,7 +7025,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return true;
}
else if(event.name=='gain'){
if(event.giver||event.getParent().name=='_yongjian_zengyu') return false;
if(event.giver||event.getParent().name=='gift') return false;
var cards=event.getg(event.player);
if(!cards.length) return false;
return game.hasPlayer(function(current){
@ -7700,6 +7702,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ol_lusu:['ol_lusu','re_lusu'],
zhanghe:['re_zhanghe','zhanghe'],
yl_luzhi:['yl_luzhi','tw_yl_luzhi'],
sunliang:['sunliang','xin_sunliang'],
},
translate:{
re_yuanshao:'袁绍',
@ -8005,12 +8008,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_xiahouyuan:'夏侯渊',
re_huangzhong:'黄忠',
re_weiyan:'魏延',
re_xiaoqiao:'小乔',
gz_xiahouyuan:'夏侯渊',
gz_huangzhong:'黄忠',
gz_weiyan:'魏延',
gz_xiaoqiao:'小乔',
gz_xuhuang:'徐晃',
gz_pangde:'庞德',
gz_caoren:'曹仁',
@ -8025,7 +8026,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
huangzhong:'旧黄忠',
sp_zhangjiao:'张角',
weiyan:'旧魏延',
xiaoqiao:'小乔',
xiaoqiao:'小乔',
zhoutai:'界周泰',
zhangjiao:'旧张角',
//yuji:'于吉',

View File

@ -1118,7 +1118,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
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)));
if(lib.config.background_speak) game.playAudio('skill','spxizhan'+(4-lib.suit.indexOf(suit)));
},suit);
switch(suit){
case 'spade':
@ -4058,22 +4058,38 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
'step 0'
var list=get.zhinangs();
player.chooseButton(['是否发动【生息】获得一张智囊?',[list,'vcard']]).set('ai',function(card){
return (Math.random()+0.5)*get.value({name:card.link[2]},_status.event.player)
player.chooseButton([
'###'+get.prompt('mjshengxi')+'###获得一张智囊或摸一张牌',
[list,'vcard'],
[['摸一张牌','取消'],'tdnodes'],
],true).set('ai',function(card){
if(card.link[2]){
if(!get.cardPile2(function(cardx){
return cardx.name==card.link[2];
})) return 0;
return (Math.random()+1.5)*get.value({name:card.link[2]},_status.event.player);
}
if(card.link=='摸一张牌') return 1;
return 0;
});
'step 1'
if(result.bool){
if(result.bool&&result.links[0]!='取消'){
player.logSkill('mjshengxi');
var card=get.cardPile2(function(card){
return card.name==result.links[0][2];
});
if(card) player.gain(card,'gain2');
if(result.links[0]=='摸一张牌') player.draw();
else{
var card=get.cardPile2(function(card){
return card.name==result.links[0][2];
});
if(card) player.gain(card,'gain2');
}
}
},
group:'mjshengxi_zhunbei',
subfrequent:['zhunbei'],
subSkill:{
zhunbei:{
audio:'shengxi',
audioname:['feiyi'],
trigger:{player:'phaseZhunbeiBegin'},
frequent:true,
prompt2:'从游戏外或牌堆中获得一张【调剂盐梅】',
@ -4118,7 +4134,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
});
'step 1'
if(result.bool){
event.card=result.links[0];
var card=result.links[0];
event.card=card;
player.chooseTarget('将'+get.translation(card)+'交给一名其他角色并摸一张牌',lib.filter.notMe,true).set('ai',function(target){
var evt=_status.event.getParent();
return get.attitude(evt.player,target)*get.value(evt.card,target)*(target.hasSkillTag('nogain')?0.1:1);
@ -5382,20 +5399,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
fyjianyu:{
init:function(player){
if(!lib.skill['fyjianyu_'+player.playerid]){
lib.skill['fyjianyu_'+player.playerid]={
marktext:'喻',
intro:{
markcount:()=>1,
content:'指定另一名有“喻”的角色为目标时,其摸一张牌',
},
};
lib.translate['fyjianyu_'+player.playerid]='谏喻';
lib.translate['fyjianyu_'+player.playerid+'_bg']='喻';
}
},
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return !player.hasSkill('fyjianyu2')&&game.countPlayer(function(current){
return !current.hasMark('fyjianyux');
return game.countPlayer(function(current){
return !current.hasMark('fyjianyu_'+player.playerid);
})>1;
},
round:1,
filterTarget:function(card,player,target){
return !target.hasMark('fyjianyux');
return !target.hasMark('fyjianyu_'+player.playerid);
},
selectTarget:2,
content:function(){
player.addTempSkill('fyjianyux',{player:'phaseBegin'});
target.addMark('fyjianyux',1);
player.addTempSkill('fyjianyu_draw',{player:'phaseBegin'});
target.addMark('fyjianyu_'+player.playerid,1);
},
ai:{
order:0.1,
@ -5411,30 +5442,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
},
},
fyjianyux:{
trigger:{global:'useCardToPlayer'},
forced:true,
charlotte:true,
filter:function(event,player){
return event.player!=event.target&&event.player.hasMark('fyjianyux')&&
event.target.hasMark('fyjianyux')&&event.target.isIn();
},
logTarget:'target',
content:function(){
trigger.target.draw();
},
onremove:function(){
game.countPlayer(function(current){
var num=current.countMark('fyjianyux');
if(num) current.removeMark('fyjianyux');
});
},
intro:{
content:'mark',
subSkill:{
draw:{
charlotte:true,
trigger:{global:'useCardToPlayer'},
filter:function(event,player){
return event.player!=event.target&&event.player.hasMark('fyjianyu_'+player.playerid)&&event.target.hasMark('fyjianyu_'+player.playerid)&&event.target.isIn();
},
forced:true,
logTarget:'target',
content:function(){
trigger.target.draw();
},
onremove:function(player){
game.countPlayer(function(current){
var num=current.countMark('fyjianyu_'+player.playerid);
if(num) current.removeMark('fyjianyu_'+player.playerid);
});
},
},
},
},
fyjianyu2:{},
spwanwei:{
audio:2,
enable:'chooseToUse',
@ -6120,7 +6148,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
return true;
},
chongzhu:true,
recastable:true,
selectTarget:2,
postAi:()=>true,
contentBefore:function(){
@ -6339,9 +6367,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
reshengxi_info:'结束阶段,若你于本回合内未造成过伤害,则你可摸两张牌。',
fyjianyu:'谏喻',
fyjianyu_info:'每轮限一次。出牌阶段你可选择两名角色令这些角色获得“喻”直到你的下回合开始。当一名有“喻”的角色A使用牌指定另一名有“喻”的角色B为目标时你令B摸一张牌。',
fyjianyux:'谏喻',
mjshengxi:'生息',
mjshengxi_info:'准备阶段,你可以获得一张【调剂盐梅】;结束阶段,若你本回合使用过牌且未造成伤害,则你可以获得一张智囊。',
mjshengxi_info:'准备阶段,你可以获得一张【调剂盐梅】;结束阶段,若你本回合使用过牌且未造成伤害,则你可以获得一张智囊或摸一张牌。',
mjkuanji:'宽济',
mjkuanji_info:'每回合限一次。当你因弃置而失去牌后,你可令一名其他角色获得其中的一张牌,然后你摸一张牌。',
tiaojiyanmei:'调剂盐梅',
@ -6522,7 +6549,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
spjungong_info:'出牌阶段你可失去X+1点体力或弃置X+1张牌视为对一名其他角色使用【杀】不计入次数和距离限制X为你本回合内发动过〖峻攻〗的次数。若你因此【杀】造成了伤害则你令此技能失效直到回合结束。',
spdengli:'等力',
spdengli_info:'当你使用【杀】指定目标后,或成为【杀】的目标后,若使用者和目标的体力值相等,则你摸一张牌。',
sp_huaman:'手杀花',
sp_huaman:'手杀花',
spxiangzhen:'象阵',
spxiangzhen_info:'锁定技。①【南蛮入侵】对你无效。②当有角色使用的【南蛮入侵】结算结束后,若有角色因此牌受到过伤害,则你和使用者各摸一张牌。',
spfangzong:'芳踪',

View File

@ -7,15 +7,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp:{
sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ganfuren","ol_bianfuren","qinghegongzhu","tengfanglan","ruiji",'caoxiancaohua'],
sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao','ol_chendeng','jin_yanghu','wangyan','xiahouxuan','quhuang','zhanghua','wangguan','sunhong'],
sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda","ahuinan","dongtuna"],
sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda","ahuinan","dongtuna",'ol_wenqin'],
sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu','ol_xinxianying',"daxiaoqiao","jin_guohuai"],
sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','zhangzhi','lushi'],
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong','macheng','ol_zhangyì','ol_zhujun','maxiumatie','luoxian','ol_wenqin'],
sp_huben:['duanjiong','ol_mengda',"caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong','macheng','ol_zhangyì','ol_zhujun','maxiumatie','luoxian','ol_huban','haopu'],
sp_liesi:['mizhu','weizi','ol_liuba','zhangshiping'],
sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo','ol_puyuan','ol_wenqin'],
sp_waitforsort:['ol_huban','ol_mengda','haopu'],
sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo'],
sp_waitforsort:[],
sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
sp_wanglang:['ol_wanglang'],
sp_wanglang:['ol_wanglang','ol_puyuan','ol_zhouqun'],
sp_zhongdan:["cuiyan","huangfusong"],
sp_guozhan2:["sp_dongzhuo","liqueguosi","zhangren"],
//sp_single:["niujin"],
@ -28,6 +28,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
duanjiong:['male','qun',4,['olsaogu']],
ol_zhouqun:['male','shu',4,['oltianhou','olchenshuo']],
ol_wenqin:['male','wei',4,['olguangao','olhuiqi']],
haopu:['male','shu',4,['olzhenying']],
@ -191,6 +192,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//kaisa:["male","western",4,["zhengfu"]],
},
characterIntro:{
duanjiong:'段颎179年字纪明武威姑臧今甘肃省武威市人。东汉名将西域都护段会宗从曾孙与皇甫规字威明、张奂字然明并称“凉州三明”。段颎少时学习骑射有文武智略最初被举为孝廉为宪陵园丞、阳陵令有治理之才。汉桓帝时入军旅先破鲜卑后讨平东郭窦、公孙举起事以功封列侯。延熹二年159年起戍边征战十余年百战羌人至永康元年167年平定西羌建宁二年169年平定东羌前后斩东西羌六万余级。累功封新丰县侯。建宁三年170年段颎被征入朝历任侍中、执金吾、河南尹、司隶校尉等职他党附宦官、捕杀太学生因而得保富贵两度出任太尉。光和二年179年权宦王甫罪行被揭发段颎受牵连下狱其后在狱中饮鸩而死。',
haopu:'郝普字子太义阳治所在今湖北枣阳东南人。刘备入川后郝普为零陵太守。建安二十年215年吴将吕蒙进攻荆州三郡唯有郝普坚守待援。但援兵久久不至其挚友邓玄之又被吕蒙所骗郝普也因此上当投降吴国。湘水划界后郝普回归刘备。建安二十四年219年吕蒙再次袭击荆州击败关羽郝普再次投降最终归顺吴国并官至廷尉。郝普与隐蕃亲善隐蕃蓄谋叛变事情败露他受到牵连因此自杀。在刘备集团的5个荆州郡守中郝普是唯一一个抵抗过东吴的荆州郡守。',
ol_zhanghe:'字儁乂河间鄚人。三国时期魏国名将。官渡之战时本为袁绍部将的张郃投降了曹操并在曹操帐下多立功勋于曹魏建立后加封为征西车骑将军。诸葛亮六出祁山之间张郃多次抵御蜀军的进攻于公元231年在木门道被诸葛亮设伏射死。后谥曰壮侯。为曹魏“五子良将”之一。',
zhangshiping:'张世平是东汉末期的中山商人,曾与苏双同路,资助刘备组织武装、建立政权。于《三国演义》第一回出场,刘关张桃园三结义时资助刘备良马五十匹,金银五百两,镔铁一千斤。刘备所使用的“双股剑”、关羽所使用的“青龙偃月刀(又名‘冷艳锯’)”、张飞所使用的“丈八点钢矛(又名‘丈八蛇矛’)”皆由这一千斤上好镔铁打造而成。',
@ -688,6 +690,235 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//段颎
olsaogu:{
audio:2,
zhuanhuanji:true,
mark:true,
marktext:'☯',
intro:{
content:function(storage){
if(storage) return '转换技。①出牌阶段,你可以摸一张牌。②结束阶段,你可以弃置一张牌,令一名其他角色摸一张牌。';
return '转换技。①出牌阶段,你可以弃置两张牌(不能包含你本阶段弃置过的花色),然后使用其中的【杀】。②结束阶段,你可以弃置一张牌,令一名其他角色弃置两张牌,然后其使用弃置的【杀】。';
},
},
onChooseToUse:function(event){
if(!game.online&&!event.olsaogu){
var list=[],player=event.player;
var evtx=event.getParent('phaseUse');
player.getHistory('lose',evt=>{
if(evt.type=='discard'&&evt.getParent('phaseUse')==evtx) list.addArray(evt.cards2);
});
event.set('olsaogu',list);
}
},
enable:'phaseUse',
filter:function(event,player){
var storage=player.storage.olsaogu;
if(storage) return true;
return player.getDiscardableCards(player,'he').filter(card=>{
if(event.olsaogu&&event.olsaogu.some(cardx=>get.suit(cardx,false)==get.suit(card,player))) return false;
return true;
}).length>1;
},
filterCard:function(card,player){
if(player.storage.olsaogu) return false;
if(_status.event.olsaogu&&_status.event.olsaogu.some(cardx=>get.suit(cardx,false)==get.suit(card,player))) return false;
return true;
},
selectCard:function(){
var player=_status.event.player;
return player.storage.olsaogu?-1:2;
},
position:'he',
check:function(card){
var player=_status.event.player;
if(card.name=='sha') return player.hasValueTarget(card)?10:0.001;
return 6-get.value(card);
},
prompt:function(){
var player=_status.event.player;
var storage=player.storage.olsaogu;
if(storage) return '摸一张牌';
var list=_status.event.olsaogu,str='';
if(list&&list.length){
var text='',suits=list.reduce(function(list,card){
return list.add(get.suit(card,false)),list;
},[]).sort((a,b)=>lib.suit.indexOf(b)-lib.suit.indexOf(a));
for(var i=0;i<suits.length;i++) text+=get.translation(suits[i]);
str+='(不能弃置'+text+'花色的牌)';
}
return '弃置两张牌'+str+',然后使用其中的【杀】';
},
content:function(){
player.changeZhuanhuanji('olsaogu');
if(!cards.length) player.draw();
else{
var cardx=cards.filter(card=>card.name=='sha');
if(cardx.length){
var next=game.createEvent('olsaogu_chooseToUseSha');
next.player=player;
next.cards=cardx;
next.setContent(lib.skill.olsaogu.chooseToUseSha);
}
}
},
ai:{
order:function(item,player){
return get.order({name:'sha'},player)-0.2;
},
result:{
player:function(player){
var storage=player.storage.olsaogu;
if(storage) return 1;
if(player.getDiscardableCards(player,'he').filter(card=>{
if(card.name!='sha') return false;
if(_status.event.olsaogu&&_status.event.olsaogu.some(cardx=>get.suit(cardx,false)==get.suit(card,player))) return false;
return true;
}).length) return 1;
return 0;
},
},
},
group:'olsaogu_effect',
subSkill:{
effect:{
trigger:{player:'phaseJieshuBegin'},
filter:function(event,player){
if(_status.connectMode) return player.countCards('he');
return player.countDiscardableCards(player,'he');
},
direct:true,
content:function(){
'step 0'
var list=[];
player.getHistory('lose',evt=>{
if(evt.type=='discard'&&evt.getParent('phaseJieshu').name=='phaseJieshu') list.addArray(evt.cards2);
});
event.list=list;
var str,storage=player.storage.olsaogu;
if(storage) str='弃置一张牌,令一名其他角色摸一张牌。';
else{
str='弃置一张牌,令一名其他角色弃置两张牌(不能包含你本阶段弃置过的花色),然后其使用弃置的【杀】。';
if(list.length){
var text='',suits=list.reduce(function(list,card){
return list.add(get.suit(card,false)),list;
},[]).sort((a,b)=>lib.suit.indexOf(b)-lib.suit.indexOf(a));
for(var i=0;i<suits.length;i++) text+=get.translation(suits[i]);
str+='<br>本阶段已弃置过'+text+'花色的牌。';
}
}
player.chooseCardTarget({
prompt:get.prompt('olsaogu'),
prompt2:str,
filterTarget:function(card,player,target){
return player!=target&&target.countCards('he')>1;
},
filterCard:lib.filter.cardDiscardable,
position:'he',
complexCard:true,
complexSelect:true,
ai1:function(card){
var player=_status.event.player;
if(!player.storage.olsaogu&&_status.event.list.some(cardx=>get.suit(cardx,false)==get.suit(card,player))) return 7-get.value(card);
return 5-get.value(card);
},
ai2:function(target){
var player=_status.event.player;
var att=get.attitude(player,target);
if(player.storage.olsaogu) return att;
var list=_status.event.list.slice();
if(ui.selected.cards.length) list.addArray(ui.selected.cards);
var cards=target.getCards('he',card=>{
if(card.name!='sha'||list.some(cardx=>get.suit(cardx,false)==get.suit(card,target))) return false;
return lib.filter.cardDiscardable(card,target)&&game.hasPlayer(function(current){
if(!current.canUse(card,target,false)) return false;
return get.effect(current,card,target,target)>0&&get.effect(current,card,target,player)>0;
});
});
if(cards.length&&att>0) return Math.sqrt(Math.min(2,cards.length))*cards.reduce(function(num,card){
var players=game.filterPlayer(current=>target.canUse(card,current,false));
players.sort((a,b)=>get.effect(b,card,target,target)*get.effect(b,card,target,player)-get.effect(a,card,target,target)*get.effect(a,card,target,player));
return num=(get.effect(players[0],card,target,target)*get.effect(players[0],card,target,player));
},0);
return get.effect(target,{name:'guohe_copy2'},player,player)*Math.sqrt(Math.min(2,target.getDiscardableCards(player,'he').filter(card=>{
return !list.some(cardx=>get.suit(cardx,false)==get.suit(card,target));
}).length));
},
}).set('list',list);
'step 1'
if(result.bool){
var cards=result.cards,target=result.targets[0];
player.logSkill('olsaogu',target);
player.discard(cards);
if(player.storage.olsaogu){
target.draw();
event.finish();
}
else{
event.target=target;
var list=result.cards.slice();
player.getHistory('lose',evt=>{
if(evt.type=='discard'&&evt.getParent('phaseJieshu').name=='phaseJieshu') list.addArray(evt.cards2);
});
var cards=target.getCards('he',card=>{
return lib.filter.cardDiscardable(card,target)&&!list.some(cardx=>get.suit(cardx,false)==get.suit(card,target));
});
if(cards.length){
var text='',suits=list.reduce(function(list,card){
return list.add(get.suit(card,false)),list;
},[]).sort((a,b)=>lib.suit.indexOf(b)-lib.suit.indexOf(a));
for(var i=0;i<suits.length;i++) text+=get.translation(suits[i]);
target.chooseToDiscard('he','扫谷:弃置两张牌(不能弃置'+text+'花色的牌),然后使用其中的【杀】',function(card,player){
var list=_status.event.list;
return !list.some(cardx=>get.suit(cardx,false)==get.suit(card,player));
},Math.min(cards.length,2),true).set('ai',function(card){
var player=_status.event.player;
if(card.name=='sha'&&player.hasValueTarget(card)) return 10;
return -get.value(card);
}).set('list',list);
}
else event.finish();
}
}
else event.finish();
'step 2'
if(result.bool){
var cards=result.cards.filter(card=>card.name=='sha');
if(cards.length){
var next=game.createEvent('olsaogu_chooseToUseSha');
next.player=target;
next.cards=cards;
next.setContent(lib.skill.olsaogu.chooseToUseSha);
}
}
},
},
},
chooseToUseSha:function(){
'step 0'
event.cards2=cards.filter(i=>get.position(i,true)=='d'&&player.hasUseTarget(i));
if(!event.cards2.length) event.finish();
'step 1'
if(event.cards2.length==1) event._result={bool:true,links:event.cards2};
else player.chooseButton(['扫谷:请使用其中的【杀】',event.cards2],true).set('filterButton',button=>{
return _status.event.player.hasUseTarget(button.link,false);
}).set('ai',button=>{
return _status.event.player.getUseValue(button.link);
});
'step 2'
if(result.bool){
var card=result.links[0];
event.cards2.remove(card);
player.$gain2(card,false);
game.delayx();
player.chooseUseTarget(true,card,false);
}
else event.finish();
'step 3'
if(event.cards2.length) event.goto(1);
},
},
//OL周群
oltianhou:{
audio:2,
@ -721,7 +952,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!lib.skill.oltianhou.derivation.contains(skill)) event.finish();
else{
event.weather_skill=skill;
player.chooseTarget(true,'令一名角色获得技能【'+get.translation(skill)+'】').set('ai',function(target){
player.chooseTarget(true,'令一名角色获得技能【'+get.translation(skill)+'】',get.translation(skill+'_info')).set('ai',function(target){
return get.attitude(_status.event.player,target);
});
}
@ -990,12 +1221,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var card=event.card;
if(card.name!='sha') return false;
if(event.player==player){
if(game.hasPlayer(current=>{
return current.isIn()&&!event.targets.contains(current)&&player.canUse(event.card,current,false);
})){
return true;
}
return false;
return game.hasPlayer(current=>{
return current.isIn()&&!event.targets.contains(current)&&player.canUse(card,current);
});
}
return event.player.isIn()&&!event.targets.contains(player)&&event.player.canUse(card,player);
},
@ -1004,7 +1232,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
if(trigger.player==player){
player.chooseTarget(get.prompt('olguangao'),'为'+get.translation(trigger.card)+'额外指定一个目标。然后若你手牌数为偶数,你摸一张牌并令此牌对任意目标无效。',(card,player,target)=>{
return !_status.event.sourcex.contains(target)&&player.canUse(_status.event.card,target,false);
return !_status.event.sourcex.contains(target)&&player.canUse(_status.event.card,target);
}).set('sourcex',trigger.targets).set('ai',function(target){
var player=_status.event.player;
var eff=get.effect(target,_status.event.card,player,player);
@ -8810,7 +9038,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var type=get.type(trigger.card,false);
player.chooseToDiscard('h',get.prompt('olfengzi'),'弃置一张'+get.translation(type)+'牌,令'+get.translation(trigger.card)+'结算两次',function(card,player){
return get.type2(card,player)==_status.event.type;
}).set('type',type).set('ai',()=>-1).logSkill='olfengzi';
}).set('type',type).set('ai',function(card){
var player=_status.event.player;
var trigger=_status.event.getTrigger();
if(trigger.card.name=='tiesuo') return 0;
var num=0;
for(var i of trigger.targets) num+=get.effect(i,trigger.card,player,player);
if(num<=0) return 0;
return 7-get.value(card);
}).logSkill='olfengzi';
'step 1'
if(result.bool){
trigger.effectCount++;
@ -10500,8 +10736,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
selectTarget:[1,Infinity],
content:function(){
'step 0'
if(!target.countCards('he')) event.finish();
else target.chooseCard('he','交给'+get.translation(player)+'一张牌',true);
if(!target.countCards('h')) event.finish();
else target.chooseCard('h','交给'+get.translation(player)+'一张牌',true);
'step 1'
target.give(result.cards,player);
'step 2'
@ -18118,9 +18354,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
filter:function(event,player){
if(event.targets.length!=1||!['sha','juedou'].contains(event.card.name)) return false;
return player.getHistory('useCard',function(evt){
return evt.card.name==event.card.name;
}).indexOf(event.getParent())==0;
var evtx=event.getParent();
return !player.hasHistory('useCard',function(evt){
return evt!=evtx&&evt.card.name==event.card.name;
},evtx)
},
direct:true,
content:function(){
@ -22819,7 +23056,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
luochong:function(player){
var storage=player.getStorage('luochong');
var str='准备阶段开始时/当你受到伤害后,你可选择本轮内未选择过的一项(每名角色每轮限选一次):'
var str='准备阶段开始时/当你于一回合首次受到伤害后,你可选择本轮内未选择过的一项(每名角色每轮限选一次):'
var choiceList=[
'⒈令一名角色回复1点体力。',
'⒉令一名角色失去1点体力。',
@ -22865,6 +23102,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(player.storage.olmiuyan) return '转换技。你可以将一张黑色牌当做【火攻】使用。然后若此技能:处于阳状态且此牌造成了伤害,则你获得此阶段内所有被展示过的牌;<span class="bluetext">处于阴状态且未造成伤害,则你令此技能失效直到本轮结束。</span>';
return '转换技。你可以将一张黑色牌当做【火攻】使用。然后若此技能:<span class="bluetext">处于阳状态且此牌造成了伤害,则你获得此阶段内所有被展示过的牌;</span>处于阴状态且未造成伤害,则你令此技能失效直到本轮结束。';
},
olsaogu:function(player){
if(player.storage.olsaogu) return '转换技。①出牌阶段,你可以。阴:弃置两张牌(不能包含你本阶段弃置过的花色),然后使用其中的【杀】;<span class="bluetext">阳:摸一张牌</span>。②结束阶段,你可以弃置一张牌,令一名其他角色执行你当前〖扫谷①〗的分支。';
return '转换技。①出牌阶段,你可以。<span class="bluetext">阴:弃置两张牌(不能包含你本阶段弃置过的花色),然后使用其中的【杀】</span>;阳:摸一张牌。②结束阶段,你可以弃置一张牌,令一名其他角色执行你当前〖扫谷①〗的分支。';
},
},
characterReplace:{
caoshuang:['caoshuang','ns_caoshuang'],
@ -23938,7 +24179,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
olbihun:'弼昏',
olbihun_info:'锁定技。当你使用牌指定其他角色为目标时若你的手牌数大于手牌上限且若此牌的目标数大于1取消此目标为1其获得此牌。',
olchuanwu:'穿屋',
olchuanwu_info:'锁定技。当你造成或受到伤害后你令武将牌上的前X个未失效的技能失效直到回合结束。然后你摸等同于你此次失效的技能数张牌X为你的攻击范围。',
olchuanwu_info:'锁定技。当你造成或受到伤害后你令武将牌上的前X个技能失效直到回合结束。然后你摸等同于你此次失效的技能数张牌X为你的攻击范围。',
oljianhe:'剑合',
oljianhe_info:'出牌阶段每名角色限一次。你可以重铸至少两张同名牌或至少两张装备牌然后令一名角色选择一项1.重铸等量张与你以此法重铸的牌类型相同的牌2.受到你造成的1点雷电伤害。',
dongtuna:'董荼那',
@ -24004,7 +24245,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
olzhenying_info:'出牌阶段限两次。你可以选择一名手牌数不大于你的其他角色,你与其同时将手牌摸或弃置至至多两张。然后你与其中手牌数较少的角色视为对另一名角色使用一张【决斗】。',
ol_wenqin:'文钦',
olguangao:'犷骜',
olguangao_info:'当你/其他角色使用【杀】时,你/该角色可以额外指定一个目标/你为目标(使用者不为你则有距离限制)。然后若你的手牌数为偶数,你摸一张牌并令此牌对任意目标无效(可不选)。',
olguangao_info:'当你/其他角色使用【杀】时,你/该角色可以额外指定一个目标/你为目标(有距离限制)。然后若你的手牌数为偶数,你摸一张牌并令此牌对任意目标无效(可不选)。',
olhuiqi:'彗企',
olhuiqi_info:'觉醒技。一名角色回合结束后,若仅有三名角色于此回合成为过牌的目标,你获得〖偕举〗并获得一个额外的回合。',
olxieju:'偕举',
@ -24023,6 +24264,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
oltianhou_club_info:'锁定技。其他角色的结束阶段开始时若其体力值为全场最小则其失去1点体力。',
oltianhou_diamond:'凝雾',
oltianhou_diamond_info:'锁定技。其他角色使用【杀】指定与其座次不相邻唯一目标时,则其判定。若判定结果的点数大于此【杀】,则此【杀】对其无效。',
duanjiong:'段颎',
olsaogu:'扫谷',
olsaogu_info:'转换技。①出牌阶段,你可以。阴:弃置两张牌(不能包含你本阶段弃置过的花色),然后使用其中的【杀】;阳:摸一张牌。②结束阶段,你可以弃置一张牌,令一名其他角色执行你当前〖扫谷①〗的分支。',
sp_tianji:'天极·皇室宗亲',
sp_sibi:'四弼·辅国文曲',
@ -24033,7 +24277,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_liesi:'列肆·豪商巨贾',
sp_default:"天同·同名异势",
sp_qifu:'灯愿·祈福武将',
sp_wanglang:'八萬·饶舌凤鹛',
sp_wanglang:'OL·限定专属',
sp_zhongdan:"忠胆英杰",
sp_guozhan:"国战",
sp_guozhan2:"国战移植",

View File

@ -51,7 +51,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhaozhong:['male','qun',6,['yangzhong','huangkong']],
hanfu:['male','qun',4,['hfjieying','weipo']],
re_quyi:['male','qun',4,['refuqi','jiaozi']],
dongxie:['female','qun','3/4',['juntun','jiaojie']],
dongxie:['female','qun',4,['dcjiaoxia','dchumei']],
wangrong:['female','qun',3,['minsi','jijing','zhuide']],
ol_dingyuan:['male','qun',4,['cixiao','xianshuai']],
xin_baosanniang:['female','shu',3,['decadewuniang','decadexushen']],
@ -111,6 +111,173 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
skill:{
//董翓
dcjiaoxia:{
mod:{
cardUsableTarget:function(card,player,target){
if(!player.isPhaseUsing()) return;
if(card.name=='sha'&&!player.getStorage('dcjiaoxia_mark').contains(target)) return true;
},
},
audio:2,
trigger:{player:'phaseUseBegin'},
filter:function(event,player){
return player.countCards('h');
},
check:function(event,player){
return player.countCards('h',card=>{
return game.hasPlayer(target=>{
var cardx=get.autoViewAs({name:'sha'},[card]);
return player.canUse(cardx,target)&&get.effect(target,cardx,player,player)>0&&(!player.hasUseTarget(card)||player.hasValueTarget(card));
});
});
},
content:function(){
var cards=player.getCards('h');
player.addTempSkill('dcjiaoxia_used','phaseUseAfter');
player.addGaintag(cards,'dcjiaoxia_used');
},
group:'dcjiaoxia_load',
subSkill:{
load:{
charlotte:true,
trigger:{player:'useCard1'},
filter:function(event,player){
if(!player.isPhaseUsing()) return false;
return event.card.name=='sha'&&event.targets&&event.targets.some(target=>!player.getStorage('dcjiaoxia_mark').contains(target));
},
forced:true,
popup:false,
firstDo:true,
content:function(){
player.addTempSkill('dcjiaoxia_mark','phaseUseAfter');
player.markAuto('dcjiaoxia_mark',trigger.targets.filter(target=>!player.getStorage('dcjiaoxia_mark').contains(target)));
},
},
mark:{
charlotte:true,
onremove:true,
},
used:{
mod:{
aiOrder:function(player,card,num){
if(get.itemtype(card)=='card'&&card.hasGaintag('dcjiaoxia_used')) return num+1;
},
cardname:function(card,player){
if(get.itemtype(card)=='card'&&card.hasGaintag('dcjiaoxia_used')) return 'sha';
},
},
charlotte:true,
onremove:function(player){
player.removeGaintag('dcjiaoxia_used');
},
trigger:{player:'useCardAfter'},
filter:function(event,player){
return event.cards&&event.cards.length==1&&player.hasUseTarget(get.copy(event.cards[0]))&&player.getHistory('lose',evt=>{
if(evt.getParent()!=event) return false;
for(var i in evt.gaintag_map){
if(evt.gaintag_map[i].contains('dcjiaoxia_used')) return true;
}
return false;
}).length&&player.getHistory('sourceDamage',evt=>evt.card==event.card).length;
},
direct:true,
content:function(){
var card=get.copy(trigger.cards[0]);
player.chooseUseTarget(card,get.prompt('dcjiaoxia'),false,false).set('prompt2','视为使用'+get.translation(card)).logSkill='dcjiaoxia';
},
},
},
},
dchumei:{
subSkill:{
0:{charlotte:true},
1:{charlotte:true},
2:{charlotte:true},
},
onChooseToUse:function(event){
if(!game.online&&!event.dchumei_num){
var player=event.player;
var evtx=event.getParent('phaseUse');
event.set('dchumei_num',player.getHistory('sourceDamage',function(evt){
return evt.getParent('phaseUse')==evtx;
}).length);
}
},
audio:2,
enable:'phaseUse',
filter:function(event,player){
if(typeof event.dchumei_num!='number') return false;
return game.hasPlayer(target=>lib.skill.dchumei.filterTarget(null,player,target));
},
filterTarget:function(card,player,target){
if(target.getHp()>_status.event.dchumei_num) return false;
if(!player.hasSkill('dchumei_0')) return true;
if(!player.hasSkill('dchumei_1')&&target.countCards('he')) return true;
if(!player.hasSkill('dchumei_2')&&target.isDamaged()) return true;
return false;
},
content:function(){
'step 0'
var str=get.translation(target);
player.chooseButton([
'狐魅:请选择一项',
[[
[0,'令'+str+'摸一张牌'],
[1,'令'+str+'交给你一张牌'],
[2,'令'+str+'回复1点体力'],
].filter(list=>{
if(player.hasSkill('dchumei_'+list[0])) return false;
if(list[0]==1&&!target.countCards('he')) return false;
if(list[0]==2&&target.isHealthy()) return false;
return true;
}),'textbutton']
],true).set('filterButton',button=>{
var target=_status.event.target;
if(player.hasSkill('dchumei_'+button.link)) return false;
if(button.link==1&&!target.countCards('he')) return false;
if(button.link==2&&target.isHealthy()) return false;
return true;
}).set('ai',function(button){
var target=_status.event.target;
return [
get.effect(target,{name:'wuzhong'},player,player)/2,
get.effect(target,{name:'shunshou_copy2'},player,player),
get.recoverEffect(target,player,player),
][button.link];
}).set('target',target);
'step 1'
if(result.bool){
var num=result.links[0];
player.addTempSkill('dchumei_'+num,'phaseUseAfter');
switch(num){
case 0:
target.draw();
break;
case 1:
target.chooseCard('狐魅:交给'+get.translation(player)+'一张牌','he',true);
break;
case 2:
target.recover();
break;
}
if(num!=1) event.finish();
}
else event.finish();
'step 2'
if(result.bool) player.gain(result.cards,target,'giveAuto');
},
ai:{
order:1,
result:{
target:function(player,target){
if(!player.hasSkill('dchumei_0')) return 1;
if(!player.hasSkill('dchumei_1')) return -1;
if(!player.hasSkill('dchumei_2')) return 1;
},
},
},
},
//魏关羽
dcdanji:{
audio:'danji',
@ -10060,6 +10227,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
juntun_info:'锁定技准备阶段若X大于1则你减1点体力上限并摸X张牌X为你的体力上限。',
jiaojie:'狡黠',
jiaojie_info:'锁定技,你的红色牌不计入手牌上限。你使用黑色牌无距离和次数限制。',
dcjiaoxia:'狡黠',
dcjiaoxia_info:'①出牌阶段开始时,你可以令自己的所有手牌于此阶段均视为【杀】。若如此做,你使用以此法转化的【杀】造成伤害后,你可以视为使用此牌对应的原卡牌。②出牌阶段,你对你本阶段未使用过【杀】的角色使用【杀】无次数限制。',
dchumei:'狐魅',
dchumei_info:'出牌阶段各限一次你可以选择一名体力值不大于X的角色令其①摸一张牌。②交给你一张牌。③回复1点体力。X为你本阶段造成伤害的次数',
buchen:'不臣',
buchen_info:'隐匿技,你于其他角色的回合登场时,可获得当前回合角色的一张牌。',
smyyingshi:'鹰视',

View File

@ -7447,7 +7447,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 2'
player.chooseToCompare(targets,function(card){
return get.number(card);
}).setContent(lib.skill.twchaofeng.chooseToCompareMeanwhile);
}).setContent('chooseToCompareMeanwhile');
'step 3'
if(result.winner&&result.winner==player){
event.targets.remove(result.winner);
@ -7685,7 +7685,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){
event.targets=result.targets;
player.logSkill('twchaofeng_compare',event.targets);
player.chooseToCompare(event.targets).setContent(lib.skill.twchaofeng.chooseToCompareMeanwhile);
player.chooseToCompare(event.targets).setContent('chooseToCompareMeanwhile');
}
'step 2'
if(result.winner){
@ -7699,169 +7699,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
}
},
chooseToCompareMeanwhile:function(){
'step 0'
if(player.countCards('h')==0){
event.result={cancelled:true,bool:false}
event.finish();
return;
}
for(var i=0; i<targets.length; i++){
if(targets[i].countCards('h')==0){
event.result={cancelled:true,bool:false}
event.finish();
return;
}
}
if(!event.multitarget){
targets.sort(lib.sort.seat);
}
game.log(player,'对',targets,'发起了共同拼点');
event.compareMeanwhile=true;
'step 1'
event._result=[];
event.list=targets.filter(function(current){
return !event.fixedResult||!event.fixedResult[current.playerid];
});
if(event.list.length||!event.fixedResult||!event.fixedResult[player.playerid]){
if(!event.fixedResult||!event.fixedResult[player.playerid]) event.list.unshift(player);
player.chooseCardOL(event.list,'请选择拼点牌',true).set('type','compare').set('ai',event.ai).set('source',player).aiCard=function(target){
var hs=target.getCards('h');
var event=_status.event;
event.player=target;
hs.sort(function(a,b){
return event.ai(b)-event.ai(a);
});
delete event.player;
return {bool:true,cards:[hs[0]]};
};
}
'step 2'
var cards=[];
var lose_list=[];
if(event.fixedResult&&event.fixedResult[player.playerid]){
event.list.unshift(player);
result.unshift({bool:true,cards:[event.fixedResult[player.playerid]]});
lose_list.push([player,[event.fixedResult[player.playerid]]]);
}
else{
if(result[0].skill&&lib.skill[result[0].skill]&&lib.skill[result[0].skill].onCompare){
player.logSkill(result[0].skill);
result[0].cards=lib.skill[result[0].skill].onCompare(player)
}
else lose_list.push([player,result[0].cards]);
};
for(var j=0; j<targets.length; j++){
if(event.list.contains(targets[j])){
var i=event.list.indexOf(targets[j]);
if(result[i].skill&&lib.skill[result[i].skill]&&lib.skill[result[i].skill].onCompare){
event.list[i].logSkill(result[i].skill);
result[i].cards=lib.skill[result[i].skill].onCompare(event.list[i]);
}
else lose_list.push([targets[j],result[i].cards]);
cards.push(result[i].cards[0]);
}
else if(event.fixedResult&&event.fixedResult[targets[j].playerid]){
cards.push(event.fixedResult[targets[j].playerid]);
lose_list.push([targets[j],[event.fixedResult[targets[j].playerid]]]);
}
}
if(lose_list.length){
game.loseAsync({
lose_list:lose_list,
}).setContent('chooseToCompareLose');
}
event.lose_list=lose_list;
event.getNum=function(card){
for(var i of event.lose_list){
if(i[1].contains&&i[1].contains(card)) return get.number(card,i[0]);
}
return get.number(card,false);
}
event.cardlist=cards;
event.cards=cards;
event.card1=result[0].cards[0];
event.num1=event.getNum(event.card1);
event.iwhile=0;
event.winner=null;
event.maxNum=-1;
event.tempplayer=event.player;
event.result={
winner:null,
player:event.card1,
targets:event.cardlist.slice(0),
num1:[],
num2:[],
};
player.$compareMultiple(event.card1,targets,cards);
game.log(player,'的拼点牌为',event.card1);
player.animate('target');
game.delay(0,1000);
'step 3'
event.target=null;
event.trigger('compare');
'step 4'
if(event.iwhile<targets.length){
event.target=targets[event.iwhile];
event.target.animate('target');
event.card2=event.cardlist[event.iwhile];
event.num2=event.getNum(event.card2);
game.log(event.target,'的拼点牌为',event.card2);
//event.tempplayer.line(event.target);
delete event.player;
event.trigger('compare');
}
else{
game.delay(0,1000);
event.goto(7);
}
'step 5'
event.result.num1[event.iwhile]=event.num1;
event.result.num2[event.iwhile]=event.num2;
var list=[[event.tempplayer,event.num1],[event.target,event.num2]];
for(var i of list){
if(i[1]>event.maxNum){
event.maxNum=i[1];
event.winner=i[0];
}
else if(event.winner&&i[1]==event.maxNum&&i[0]!=event.winner){
event.winner=null;
}
}
'step 6'
event.iwhile++;
event.goto(4);
'step 7'
var player=event.tempplayer;
event.player=player;
delete event.tempplayer;
var str='无人拼点成功';
if(event.winner){
event.result.winner=event.winner;
str=get.translation(event.winner)+'拼点成功';
game.log(event.winner,'拼点成功');
event.winner.popup('胜');
} else game.log('#b无人','拼点成功');
var list=[player].addArray(targets);
list.remove(event.winner);
for(var i of list){
i.popup('负');
}
if(str){
game.broadcastAll(function(str){
var dialog=ui.create.dialog(str);
dialog.classList.add('center');
setTimeout(function(){
dialog.close();
},1000);
},str);
}
game.delay(3);
'step 8'
game.broadcastAll(ui.clear);
'step 9'
event.cards.add(event.card1);
}
},
twchuanshu:{
@ -8910,8 +8747,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
intro:{
content:function(storage,player){
if(player.storage.twzhengjian) return '其他角色的出牌阶段结束时若其本阶段内未获得过牌则你可对其造成1点伤害然后你可失去此效果并获得〖征建〗的效果。';
return '其他角色的出牌阶段结束时,若其本阶段内未获得过牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果。';
if(player.storage.twzhengjian) return '其他角色的出牌阶段结束时若其本阶段内未获得过牌则你可对其造成1点伤害然后你可失去此效果并获得〖征建〗的效果。';
return '其他角色的出牌阶段结束时,若其本阶段内未获得过牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果。';
},
},
},
@ -8936,8 +8773,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return list.length>=Math.ceil(num1/2);
},
content:function(){
player.storage.twzhengjian=true;
'step 0'
player.awakenSkill('twzhongchi');
'step 1'
player.recover(2);
player.addSkill('twzhongchi_effect');
player.storage.twzhengjian=true;
'step 2'
game.delayx();
},
subSkill:{
@ -11569,7 +11411,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
case 'equip2':
target.draw();
break;
case 'equip3': case 'equip4': case 'equip6':
case 'equip3': case 'equip4': case 'equip5':
target.recover();
break;
}
@ -11595,7 +11437,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var hp=player.hp,hs=player.countCards('h',(card)=>card!=ui.selected.cards[0]);
var tp=target.hp,ts=target.countCards('h');
if(sub=='equip2') ts++;
if(tp<target.maxHp&&(sub=='equip3'||sub=='equip4')) tp++;
if(tp<target.maxHp&&(sub=='equip3'||sub=='equip4'||sub=='equip5')) tp++;
if(tp<=hp||ts<=hs) eff+=2;
}
if(sub=='equip1'){
@ -11613,7 +11455,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var sub=get.subtype(ui.selected.cards[0],false);
var eff=get.effect(target,ui.selected.cards[0],player,target);
if(sub=='equip2') eff+=(get.effect(target,{name:'wuzhong'},target,target)/2);
if(target.isDamaged()&&(sub=='equip3'||sub=='equip4')) eff+=get.recoverEffect(target,player,player);
if(target.isDamaged()&&(sub=='equip3'||sub=='equip4'||sub=='equip5')) eff+=get.recoverEffect(target,player,player);
return eff;
},
},
@ -11630,7 +11472,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
player.chooseCardTarget({
prompt:get.prompt('twyuanhu'),
prompt2:'将一张装备牌置入一名角色的装备区内。若此牌为武器牌你弃置与其距离为1的另一名角色区域的一张牌防具牌其摸一张牌坐骑牌其回复1点体力。若其体力值或手牌数不大于你,则你摸一张牌。',
prompt2:'将一张装备牌置入一名角色的装备区内。若此牌为武器牌你弃置与其距离为1的另一名角色区域的一张牌防具牌其摸一张牌坐骑牌或宝物牌其回复1点体力。然后若其体力值或手牌数不大于你,则你摸一张牌。',
filterCard:lib.skill.twyuanhu.filterCard,
filterTarget:lib.skill.twyuanhu.filterTarget,
position:'he',
@ -11672,7 +11514,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.target=result.targets[0];
var list=[];
if(player.hasEnabledSlot(3)) list.push('equip3');
if(!player.hasEnabledSlot(4)) list.push('equip4');
if(player.hasEnabledSlot(4)) list.push('equip4');
if(list.length==1) event._result={control:list[0]};
else player.chooseControl(list).set('prompt','选择废除一个坐骑栏');
}
@ -13391,6 +13233,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(target.countCards('h')>player.countCards('h')||player.group==target.group) player.draw();
},
ai:{
order:7,
result:{
player:function(player,target){
if(player.countCards('h')<target.countCards('h')||player.group==target.group) return 1;
@ -13554,7 +13397,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tw_re_caohong:'TW手杀曹洪',
tw_re_caohong_ab:'曹洪',
twyuanhu:'援护',
twyuanhu_info:'出牌阶段限一次。你可将一张装备牌置入一名角色的装备区内。若此牌为武器牌你弃置与其距离为1的另一名角色区域的一张牌防具牌其摸一张牌坐骑牌其回复1点体力。若其体力值或手牌数不大于你,则你摸一张牌,且可以于本回合的结束阶段发动一次〖援护〗。',
twyuanhu_info:'出牌阶段限一次。你可将一张装备牌置入一名角色的装备区内。若此牌为武器牌你弃置与其距离为1的另一名角色区域的一张牌防具牌其摸一张牌坐骑牌或宝物牌其回复1点体力。然后若其体力值或手牌数不大于你,则你摸一张牌,且可以于本回合的结束阶段发动一次〖援护〗。',
twjuezhu:'决助',
twjuezhu_info:'限定技。准备阶段,你可废除一个坐骑栏,令一名角色获得〖飞影〗并废除判定区。该角色死亡后,你恢复以此法废除的装备栏。',
tw_zangba:'TW臧霸',
@ -13588,7 +13431,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
twbudao:'布道',
twbudao_info:'限定技。准备阶段你可减1点体力上限回复1点体力并选择获得一个〖布道〗技能池里的技能三选一。然后你可以令一名其他角色也获得此技能并交给你一张牌。',
twzhouhu:'咒护',
twzhouhu_info:'出牌阶段限一次。你可以弃置一张红色手牌并施法:回复1点体力。',
twzhouhu_info:'出牌阶段限一次。你可以弃置一张红色手牌并施法:回复X点体力。',
twharvestinori:'丰祈',
twharvestinori_info:'出牌阶段限一次。你可以弃置一张黑色手牌并施法摸2X张牌。',
twzuhuo:'阻祸',
@ -13601,7 +13444,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
twguimen_info:'锁定技。当你弃置牌时若其中有♠牌你为每一张♠牌判定若此牌点数与结果之差不大于1你对一名其他角色造成2点雷电伤害。',
twdidao:'地道',
twdidao_info:'一名角色的判定牌生效前,你可以打出一张牌作为判定牌并获得原判定牌。若你以此法打出的牌与原判定牌颜色相同,你摸一张牌。',
tw_chengpu:'程普',
tw_chengpu:'TW程普',
twlihuo:'疠火',
twlihuo2:'疠火',
twlihuo3:'疠火',
@ -13646,11 +13489,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
twzhenxi_info:'每回合限一次。当你使用【杀】指定目标后你可选择一项⒈弃置其X张手牌X为你至其的距离⒉将其装备区或判定区内的一张牌移动到另一名角色的装备区或判定区内。若其体力值大于你或其体力值为全场最高则你可以改为依次执行以上两项。',
twyangshi:'扬师',
twyangshi_info:'锁定技。当你受到伤害后,若场上有不在你攻击范围内的其他角色,则你令攻击范围+1若没有则你从牌堆中获得一张【杀】。',
tw_puyangxing:'TW濮阳兴',
tw_puyangxing:'濮阳兴',
twzhengjian:'征建',
twzhengjian_info:'游戏开始时,你可选择获得一项效果:⒈其他角色的出牌阶段结束时,若其本阶段内未使用过非基本牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果二。⒉其他角色的出牌阶段结束时,若其本阶段内未获得过牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果。',
twzhengjian_info:'游戏开始时,你可选择获得一项效果:⒈其他角色的出牌阶段结束时,若其本阶段内未使用过非基本牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果二。⒉其他角色的出牌阶段结束时,若其本阶段内未获得过牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果。',
twzhongchi:'众斥',
twzhongchi_info:'锁定技限定技。当你因〖征建〗而获得牌后若已经有至少X名角色因〖征建〗而交给你过牌X为游戏人数的一半且向上取整则你于本局游戏内受到渠道为【杀】的伤害+1且你将〖征建〗中的“其须交给你一张牌”改为“你可对其造成1点伤害”。',
twzhongchi_info:'锁定技限定技。当你因〖征建〗而获得牌后若已经有至少X名角色因〖征建〗而交给你过牌X为游戏人数的一半且向上取整则你回复2点体力于本局游戏内受到渠道为【杀】的伤害+1且你将〖征建〗中的“其须交给你一张牌”改为“你可对其造成1点伤害”。',
tw_bingyuan:'邴原',
twbingde:'秉德',
twbingde_info:'出牌阶段限一次。你可以选择一个本阶段未选择过的花色并弃置一张牌,你摸等同于本阶段你使用此花色的牌数,然后若你以此法弃置的牌的花色与你选择的花色相同,你令你〖秉德〗于此阶段发动的次数上限+1。',

View File

@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'xianding',
connect:true,
character:{
tianshangyi:['female','wei',3,['dcposuo','dcxiaoren'],['unseen']],
sunlingluan:['female','wu',3,['dclingyue','dcpandi']],
dc_wangjun:['male','qun',4,['dctongye','dcchangqu']],
zhoubuyi:['male','wei',3,['dcshiji','dcsilun']],
@ -81,7 +82,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'],
sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen'],
sp2_yinyu:['zhouyi','luyi','sunlingluan'],
sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji','duanqiaoxiao'],
sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji','duanqiaoxiao','tianshangyi'],
sp2_jichu:['zhaoang','dc_liuye','dc_wangyun','yanghong','huanfan','xizheng'],
sp2_yuxiu:['dongguiren','dc_tengfanglan','zhangjinyun','zhoubuyi'],
sp2_gaoshan:['wanglang','liuhui'],
@ -89,6 +90,180 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
skill:{
//田尚衣
dcposuo:{
onChooseToUse:function(event){
if(!game.online&&!event.dcposuo_cards){
var player=event.player;
var evtx=event.getParent('phaseUse');
var suits=lib.suit.slice(0).reverse();
suits=suits.filter(suit=>!player.getStorage('dcposuo_suits').contains(suit)&&player.countCards('hs',card=>get.suit(card,player)==suit));
if(!suits.length||player.getHistory('sourceDamage',evt=>{
return evt.player!=player&&evt.getParent('phaseUse')==evtx;
}).length) event.set('dcposuo_cards',undefined);
else{
var list=[],cards=Array.from(ui.cardPile.childNodes);
cards.addArray(Array.from(ui.discardPile.childNodes));
game.countPlayer(current=>cards.addArray(current.getCards('hejxs')));
for(var name of lib.inpile){
if(!get.tag({name:name},'damage')) continue;
if(cards.some(card=>get.name(card,false)==name&&!get.nature(card,false))){
for(var suit of suits){
if(cards.some(card=>get.name(card,false)==name&&!get.nature(card,false)&&get.suit(card,false)==suit)){
list.push([get.type(name),get.translation(suit),name,undefined,suit]);
}
}
}
if(name=='sha'){
for(var nature of lib.inpile_nature){
if(cards.some(card=>get.name(card,false)==name&&get.nature(card,false)==nature)){
for(var suit of suits){
if(cards.some(card=>get.name(card,false)==name&&get.nature(card,false)==nature&&get.suit(card,false)==suit)){
list.push([get.type(name),get.translation(suit),name,nature,suit]);
}
}
}
}
}
}
event.set('dcposuo_cards',list);
}
}
},
audio:2,
enable:'phaseUse',
filter:function(event,player){
return event.dcposuo_cards&&event.dcposuo_cards.length;
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('婆娑',[event.dcposuo_cards,'vcard'],'hidden');
},
check:function(button){
var player=_status.event.player;
return player.getUseValue({name:button.link[2],nature:button.link[3]});
},
backup:function(links,player){
return {
suit:links[0][4],
filterCard:function(card,player){
return get.suit(card,player)==lib.skill.dcposuo_backup.suit;
},
viewAs:{
name:links[0][2],
nature:links[0][3],
isCard:true,
},
check:function(card){
return 6.5-get.value(card);
},
precontent:function(){
player.logSkill('dcposuo');
delete event.result.skill;
player.addTempSkill('dcposuo_suits','phaseUseAfter');
player.markAuto('dcposuo_suits',[get.suit(event.result.cards[0])]);
},
}
},
prompt:function(links,player){
var suit=links[0][4];
var name=links[0][2];
var nature=links[0][3];
return '将一张'+get.translation(suit)+'牌当作'+(get.translation(nature)||'')+get.translation(name)+'使用';
},
},
ai:{
order:10,
result:{player:1},
},
subSkill:{
suits:{
charlotte:true,
onremove:true,
},
},
},
dcxiaoren:{
audio:2,
trigger:{source:'damageSource'},
usable:1,
content:function(){
'step 0'
player.judge();
'step 1'
if(result.color!='red'&&result.color!='black') return;
if(result.color=='red'&&!game.hasPlayer(current=>current.isDamaged())) return;
if(result.color=='black'&&(!trigger.player.isIn()||game.countPlayer()<3)) return;
var next=game.createEvent('dcxiaoren_'+result.color);
next.player=player;
if(result.color=='black') next.target=trigger.player;
next.setContent(lib.skill.dcxiaoren['content_'+result.color]);
},
content_red:function(){
'step 0'
player.chooseTarget('绡刃是否令一名其他角色回复1点体力',(card,player,target)=>target.isDamaged()).set('ai',target=>get.recoverEffect(target,_status.event.player,_status.event.player));
'step 1'
if(result.bool){
var target=result.targets[0];
player.line(target);
target.recover();
}
},
content_black:function(){
'step 0'
if(target.getPrevious()==player) event._result={control:'下家'};
else if(target.getNext()==player) event._result={control:'上家'};
else player.chooseControl('上家','下家').set('prompt','绡刃:请选择一个方向').set('prompt2','对'+get.translation(target)+'上家或下家造成1点伤害然后你以此方向可重复此流程直到有角色因此死亡或此方向的下个目标为你').set('ai',()=>{
var player=_status.event.player;
var target=_status.event.target;
var left=0,right=0;
var leftx=target.getPrevious(),lefty=target.getNext();
while(leftx!=player){
if(get.damageEffect(leftx,player,player)<0) break;
else{
left+=get.damageEffect(leftx,player,player);
leftx=leftx.getPrevious();
}
}
while(rightx!=player){
if(get.damageEffect(rightx,player,player)<0) break;
else{
right+=get.damageEffect(rightx,player,player);
rightx=leftx.getPrevious();
}
}
return left>right?'上家':'下家';
}).set('target',target);
'step 1'
if(result.control){
event.num=1;
player.popup(result.control);
game.log(player,'选择了','#y'+result.control);
event.fangxiang=result.control;
}
else event.finish();
'step 2'
var current=target;
for(var i=0;i<event.num;i++){
current=current[event.fangxiang=='上家'?'getPrevious':'getNext']();
}
if(current==player) event.finish();
else{
event.current=current;
player.line(current);
current.damage();
}
'step 3'
var aim=event.current[event.fangxiang=='上家'?'getPrevious':'getNext']();
if(!event.current.isIn()||aim==player) event.finish();
else player.chooseBool('绡刃:是否对'+get.translation(aim)+'造成1点伤害').set('choice',get.damageEffect(aim,player,player)>=0);
'step 4'
if(result.bool){
event.num++;
event.goto(2);
}
},
},
//孙翎鸾
dclingyue:{
audio:2,
@ -108,7 +283,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
var num=1,current=_status.currentPhase;
if(current&&trigger.player!=current){
if(current&&trigger.source!=current){
var num=0,players=game.players.slice(0).concat(game.dead);
for(var target of players){
target.getHistory('sourceDamage',function(evt){
@ -128,8 +303,61 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var source=player.storage.dcpandi_effect;
return get.itemtype(source)!='player'||!source.isIn();
},
pandi_wrapKey:function(){
var str = "";
for(var arg of arguments){
if(arg === null || arg === undefined){
str += (arg + "-");
continue;
}
switch(get.itemtype(arg)){
case 'player':
str+=("p:"+arg.playerid);
break;
case 'card':
if(arg.cardid){
str+=("c:"+arg.cardid);
}else{
str+=("c:"+arg.name);
}
break;
default:
str+=("n:"+arg);
break;
}
str+="-";
}
return str;
},
pandi_effect:function(target,card,player,viewer){
if(!_status.event)return get.effect(target,card,player,viewer);
var key = lib.skill.dcpandi.pandi_wrapKey.apply(null,arguments);
var effect = _status.event.getTempCache('effect',key);
if(effect !== undefined)return effect;
effect = get.effect(target,card,player,viewer);
_status.event.putTempCache('effect',key,effect);
return effect;
},
pandi_canUse:function(player,card,target,arg1,arg2){
if(!_status.event)return player.canUse(card,target,arg1,arg2);
var key = lib.skill.dcpandi.pandi_wrapKey.apply(null,arguments);
var effect = _status.event.getTempCache('canUse',key);
if(effect !== undefined)return effect;
effect = player.canUse(card,target,arg1,arg2);
_status.event.putTempCache('canUse',key,effect);
return effect;
},
pandi_effect_use:function(target,card,player,viewer){
if(!_status.event)return get.effect_use(target,card,player,viewer);
var key = lib.skill.dcpandi.pandi_wrapKey.apply(null,arguments);
var effect = _status.event.getTempCache('effect_use',key);
if(effect !== undefined)return effect;
effect = get.effect_use(target,card,player,viewer);
_status.event.putTempCache('effect_use',key,effect);
return effect;
},
onChooseToUse:function(event){
if(!game.online&&event.type=='phase'){
if(!game.online&&event.type=='phase'&&!event.dcpandi){
var players=game.filterPlayer(function(current){
return current!=event.player&&current.getHistory('sourceDamage').length==0;
})
@ -162,15 +390,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(typeof(card)=='string'){
card={name:card,isCard:true};
}
var key = lib.skill.dcpandi.pandi_wrapKey(card,player,viewer);
if(_status.event){
var uv = _status.event.getTempCache('getUseValue',key);
if(uv!==undefined){
return uv;
}
}
var targets=game.filterPlayer();
var value=[];
var min=0;
var info=get.info(card);
if(!info||info.notarget) return 0;
if(!info||info.notarget){
if(_status.event){
_status.event.putTempCache('getUseValue',key,0);
}
return 0;
}
var range;
var select=get.copy(info.selectTarget);
if(select==undefined){
if(info.filterTarget==undefined) return true;
if(info.filterTarget==undefined) {
if(_status.event){
_status.event.putTempCache('getUseValue',key,true);
}
return true;
}
range=[1,1];
}
else if(typeof select=='number') range=[select,select];
@ -178,11 +423,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
else if(typeof select=='function') range=select(card,player);
if(info.singleCard) range=[1,1];
game.checkMod(card,player,range,'selectTarget',player);
if(!range) return 0;
if(!range){
if(_status.event){
_status.event.putTempCache('getUseValue',key,0);
}
return 0;
}
for(var i=0;i<targets.length;i++){
if(player.canUse(card,targets[i],null,true)){
var eff=get.effect(targets[i],card,player,viewer);
if(lib.skill.dcpandi.pandi_canUse(player,card,targets[i],null,true)){
var eff=lib.skill.dcpandi.pandi_effect(targets[i],card,player,viewer);
value.push(eff);
}
}
@ -193,6 +443,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(i==range[1]||range[1]!=-1&&value[i]<=0) break;
min+=value[i];
}
if(_status.event){
_status.event.putTempCache('getUseValue',key,min);
}
return min;
},
subSkill:{
@ -223,7 +476,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(typeof card!='object') return;
var source=player.storage.dcpandi_effect;
if(!source.isIn()||get.itemtype(source)!='player'||get.itemtype(source.storage.dcpandi_effect)=='player') return;
return [0,get.effect_use(target,card,source,player),0,get.effect(target,card,source,target)]
return [0,lib.skill.dcpandi.pandi_effect_use(target,card,source,player),0,lib.skill.dcpandi.pandi_effect(target,card,source,target)]
},
},
mod:{
@ -261,7 +514,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var mod=game.checkMod(card,player,source,'unchanged','cardEnabled',source);
if(mod!='unchanged') return mod;
if(typeof filter=='boolean') return filter;
if(typeof filter=='function') return filter(card,player,event);
if(typeof filter=='function') return filter(card,source,event);
}
},
cardUsable:function(card,player,num){
@ -3760,7 +4013,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger._triggered=5;
var evt=player.insertPhase();
delete evt.skill;
}
}
}
},
subSkill:{
@ -4806,7 +5059,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
else if(evt.type=='gain'){
var evtx=evt.getParent();
if(evtx.giver||evtx.getParent().name=='_yongjian_zengyu') return false;
if(evtx.giver||evtx.getParent().name=='gift') return false;
var cards=evtx.getg(target);
if(!cards.length) return false;
var cards2=evtx.getl(current).cards2;
@ -4817,7 +5070,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return false;
})) guojue=true;
if(!renzhi&&current.hasHistory('gain',evt=>{
if(evt.giver!=target||evt.getParent().name=='_yongjian_zengyu') return false;
if(evt.giver!=target||evt.getParent().name=='gift') return false;
return evt.cards.length;
})) renzhi=true;
});
@ -4849,7 +5102,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
else if(evt.type=='gain'){
var evtx=evt.getParent();
if(evtx.giver||evtx.getParent().name=='_yongjian_zengyu') return false;
if(evtx.giver||evtx.getParent().name=='gift') return false;
var cards=evtx.getg(target);
if(!cards.length) return false;
var cards2=evtx.getl(current).cards2;
@ -4860,7 +5113,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return false;
})) guojue=true;
if(!renzhi&&current.hasHistory('gain',evt=>{
if(evt.giver!=target||evt.getParent().name=='_yongjian_zengyu') return false;
if(evt.giver!=target||evt.getParent().name=='gift') return false;
return evt.cards.length;
})) renzhi=true;
});
@ -5566,7 +5819,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var evt=trigger.getl(player);
var num=0;
player.getHistory('lose',function(evt){
if(!goon||evt.type!='discard') return false;
if(evt.type!='discard') return false;
num+=evt.cards2.length;
});
var cards=[];
@ -5597,52 +5850,148 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
'step 0'
var list=lib.skill.dchuishu.getList(player);
event.initial_list=list.slice(0);
var min=list[0];
var min=list[0],max=list[0];
for(var i of list){
if(i<min) min=i;
if(i>max) max=i;
}
var exps=['摸牌数[','弃牌数[','目标牌数['];
var choices=[];
var choices_min=[],choices_max=[];
for(var i=0;i<list.length;i++){
if(list[i]==min) choices.push(exps[i]+min+']');
if(list[i]==min) choices_min.push(exps[i]+min+']');
if(list[i]==max) choices_max.push(exps[i]+max+']');
}
if(choices_min.length==1&&choices_max.length==1){
event._result={bool:true,min:choices_min[0],max:choices_max[0]};
}
else{
if(player.isUnderControl()) game.swapPlayerAuto(player);
var switchToAuto=function(){
_status.imchoosing=false;
event._result={
bool:true,
min:choices_min[0],
max:choices_max[0],
};
if(event.dialog) event.dialog.close();
if(event.control) event.control.close();
};
var chooseButton=function(player,min,max){
var event=_status.event;
player=player||event.player;
var list=lib.skill.dchuishu.getList(player);
if(!event._result) event._result={};
var dialog=ui.create.dialog('###易数:请选择更改的数值###令〖慧淑〗的一个最小数值+2并令一个最大数值-1','forcebutton','hidden');
event.dialog=dialog;
dialog.addText('最小值+2');
var table=document.createElement('div');
table.classList.add('add-setting');
table.style.margin='0';
table.style.width='100%';
table.style.position='relative';
for(var i=0;i<min.length;i++){
var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
td.link=min[i];
table.appendChild(td);
td.innerHTML='<span>'+min[i]+'</span>';
td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){
if(_status.dragged) return;
if(_status.justdragged) return;
_status.tempNoButton=true;
setTimeout(function(){
_status.tempNoButton=false;
},500);
var link=this.link;
var current=this.parentNode.querySelector('.bluebg');
if(current) current.classList.remove('bluebg');
this.classList.add('bluebg');
event._result.min=link;
});
}
dialog.content.appendChild(table);
dialog.addText('最大值-1');
var table2=document.createElement('div');
table2.classList.add('add-setting');
table2.style.margin='0';
table2.style.width='100%';
table2.style.position='relative';
for(var i=0;i<max.length;i++){
var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
td.link=max[i];
table2.appendChild(td);
td.innerHTML='<span>'+max[i]+'</span>';
td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){
if(_status.dragged) return;
if(_status.justdragged) return;
_status.tempNoButton=true;
setTimeout(function(){
_status.tempNoButton=false;
},500);
var link=this.link;
var current=this.parentNode.querySelector('.bluebg');
if(current) current.classList.remove('bluebg');
this.classList.add('bluebg');
event._result.max=link;
});
}
dialog.content.appendChild(table2);
dialog.add('  ');
event.dialog.open();
event.switchToAuto=function(){
event._result={
bool:true,
min:min[0],
max:max[0],
};
event.dialog.close();
event.control.close();
game.resume();
_status.imchoosing=false;
};
event.control=ui.create.control('ok',function(link){
var result=event._result;
if(!result.min||!result.max) return;
result.bool=true;
event.dialog.close();
event.control.close();
game.resume();
_status.imchoosing=false;
});
for(var i=0;i<event.dialog.buttons.length;i++){
event.dialog.buttons[i].classList.add('selectable');
}
game.pause();
game.countChoose();
};
if(event.isMine()) chooseButton(player,choices_min,choices_max);
else if(event.isOnline()){
event.player.send(chooseButton,event.player,choices_min,choices_max);
event.player.wait();
game.pause();
}
else switchToAuto();
}
if(choices.length==1) event._result={control:choices[0]};
else player.chooseControl(choices).set('prompt','易数:令〖慧淑〗的一个数值+2').set('prompt2','摸牌阶段结束时,你可以摸['+list[0]+']张牌。若如此做,你弃置['+list[1]+']张手牌;且当你于本回合内弃置第['+list[2]+']+1张牌后你从弃牌堆中获得等同于本回合弃牌数的锦囊牌。');
'step 1'
var result=result.control.slice(0,result.control.indexOf('['));
var exps=['摸牌数','弃牌数','目标牌数'];
var index=exps.indexOf(result),list=lib.skill.dchuishu.getList(player);
list[index]+=2;
game.log(player,'令','#g【慧淑】','中的','#y'+result,'+2');
player.storage.dchuishu=list;
var map=event.result||result;
if(map.bool){
var min=map.min,max=map.max;
min=min.slice(0,min.indexOf('['));
max=max.slice(0,max.indexOf('['));
var exps=['摸牌数','弃牌数','目标牌数'];
var list=lib.skill.dchuishu.getList(player);
list[exps.indexOf(min)]+=2;
list[exps.indexOf(max)]--;
game.log(player,'令','#g【慧淑】','中的','#y'+min,'+2');
game.log(player,'令','#g【慧淑】','中的','#y'+max,'-1');
player.storage.dchuishu=list;
}
else event.finish();
'step 2'
var list=lib.skill.dchuishu.getList(player);
var max=event.initial_list[0];
for(var i of event.initial_list){
if(i<max) max=i;
}
var exps=['摸牌数[','弃牌数[','目标牌数['];
var choices=[];
for(var i=0;i<list.length;i++){
if(event.initial_list[i]==max) choices.push(exps[i]+list[i]+']');
}
if(choices.length==1) event._result={control:choices[0]};
else player.chooseControl(choices).set('prompt','易数:令〖慧淑〗的一个数值-1').set('prompt2','摸牌阶段结束时,你可以摸['+list[0]+']张牌。若如此做,你弃置['+list[1]+']张手牌;且当你于本回合内弃置第['+list[2]+']+1张牌后你从弃牌堆中获得等同于本回合弃牌数的锦囊牌。');
'step 3'
var result=result.control.slice(0,result.control.indexOf('['));
var exps=['摸牌数','弃牌数','目标牌数'];
var index=exps.indexOf(result),list=lib.skill.dchuishu.getList(player);
list[index]--;
game.log(player,'令','#g【慧淑】','中的','#y'+result,'-1');
player.storage.dchuishu=list;
'step 4'
player.markSkill('dchuishu');
game.delayx();
},
ai:{
combo:'dchuishu',
},
ai:{combo:'dchuishu'},
},
dcligong:{
audio:2,
@ -6269,7 +6618,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target.gain(cards,'draw');
event.goto(4);
},
group:'dcgeyuan_qyubee',
group:'dcgeyuan_kyubey',
filterNumber:function(player,num){
var list1=player.getStorage('dcgeyuan');
var list2=player.getStorage('dcgeyuan_homura');
@ -6285,7 +6634,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return false;
},
subSkill:{
qyubee:{
kyubey:{
audio:'dcgeyuan',
trigger:{
global:'phaseBefore',
@ -6320,7 +6669,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!storage||!storage.length) return '(圆环之理尚不存在)';
var list2=player.getStorage('dcgeyuan_homura');
var core=document.createElement('div');
var centerX=-10,centerY=80,radius=80;
core.style.width='0';
var centerX=-15,centerY=80,radius=80;
var radian=Math.PI*2/list.length;
var fulllist=['','','','','','','','','','10','','',''];
for(var i=0;i<list.length;i++){
@ -10365,15 +10715,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.finish();
return;
}
var color=get.color(result.cards[0],result.cards[0].original=='j'?false:target);
event.color=color;
var next=player.chooseTarget(true,'挫锐:选择另一名其他角色','弃置该角色装备区里至多两张'+get.translation(event.color)+'牌;或展示该角色的至多两张手牌,然后获得其中的'+get.translation(event.color)+'牌');
next.set('filterTarget',(card,player,target)=>{
return target.countCards('he')>0&&target!=player&&target!=_status.event.getParent().target;
});
next.set('ai',target=>{
return -get.attitude(_status.event.player,target)*target.countCards('he')+0.1;
});
if(game.hasPlayer(current=>{
return current.countCards('he')>0&&current!=player&&current!=target;
})){
var color=get.color(result.cards[0],result.cards[0].original=='j'?false:target);
event.color=color;
var next=player.chooseTarget(true,'挫锐:选择另一名其他角色','弃置该角色装备区里至多两张'+get.translation(event.color)+'牌;或展示该角色的至多两张手牌,然后获得其中的'+get.translation(event.color)+'牌');
next.set('filterTarget',(card,player,target)=>{
return target.countCards('he')>0&&target!=player&&target!=_status.event.getParent().target;
});
next.set('ai',target=>{
return -get.attitude(_status.event.player,target)*target.countCards('he')+0.1;
});
}
else event.finish();
'step 8'
if(result.bool){
var targetx=result.targets[0];
@ -11231,6 +11586,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月刘备病死于白帝城追谥甘夫人为“昭烈皇后”。<br>糜夫人,刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。',
sunlingluan:'孙翎鸾,孙坚与妾室丁氏的女儿,孙策的妹妹,孙权、孙尚香的姐姐。孙翎年幼时曾得杜夔点化,窥得音律玄妙,丝竹八音,擅长琵琶,每次弹奏琵琶时,经常引来百鸟,称为奇观。早年孙翎鸾出游,山林巧遇葛玄,葛玄观其面相为吉,特传授修行辟谷之法,可令其身心洗涤,容颜久存。孙翎鸾有恋人名张奋,两人情投意合,可惜造化弄人,张奋病死外域,孙翎鸾倚楼盼归,日复一日、年复一年。后有五彩孔雀自东南而来,绕楼而鸣,其声如慕,孙翎鸾泪染笑靥,与孔雀耳语几句后乘翎而去。',
zhoubuyi:'周不疑192年—208年字元直或作“文直”零陵重安今湖南衡阳县刘表别驾刘先的外甥少有异才聪明敏达在十七岁时就著有文论四首。曹冲死后曹操怀疑曹丕无法驾驭周不疑于是派人杀了周不疑。',
tianshangyi:'田尚衣,一作陈尚衣,魏文帝曹丕宫中著名宫人。能歌善舞,一时冠绝于世,私以为比之汉宫飞燕也不遑多让。',
},
characterTitle:{
// wulan:'#b对决限定武将',
@ -11312,6 +11668,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
fengfangnv:['re_fengfangnv','fengfangnv'],
luotong:['luotong','dc_luotong'],
dc_wangchang:['dc_wangchang','tw_wangchang'],
guozhao:['guozhao','xin_guozhao'],
},
translate:{
puyuan:'蒲元',
@ -11547,7 +11904,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dchuishu:'慧淑',
dchuishu_info:'摸牌阶段结束时,你可以摸[3]张牌。若如此做:你弃置[1]张手牌,且当你于本回合内弃置第[2]+1张牌后你从弃牌堆中随机获得等同于本回合弃牌数的锦囊牌。',
dcyishu:'易数',
dcyishu_info:'锁定技。当你不因出牌阶段而失去牌后,你令A={〖慧淑〗的中括号内最小的数字}B={〖慧淑〗的中括号内最大的数字}。然后你令A中的一个数字+2且B中的一个数字-1。',
dcyishu_info:'锁定技。当你不因出牌阶段而失去牌后,你同时令{〖慧淑〗的中括号内最小的一个数字+2}且{〖慧淑〗的中括号内最大的一个数字-1}。',
dcligong:'离宫',
dcligong_info:'觉醒技。准备阶段若〖慧淑〗的中括号内有不小于5的数字则你加1点体力上限回复1点体力并失去〖易数〗。系统随机检索四张吴势力的女性武将牌然后你选择一项⒈摸三张牌。⒉失去〖慧淑〗然后获得这些武将牌上的任意两个非Charlotte技能。',
dingshangwan:'丁尚涴',
@ -11746,6 +12103,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcchangqu_info:'出牌阶段限一次。你可以开一艘战舰(你从你的上家或下家开始选择任意名座位连续的其他角色,且起点角色获得“战舰”标记)。这些角色按照你选择的顺序依次执行:{若其有本次获得的“战舰”其选择一项1.交给你X张手牌然后将“战舰”移动给你选择的下一名目标角色2.令其下次受到的属性伤害值+X然后横置X为本次〖长驱〗中选项一被选择过的次数且至少为1。}。',
dctongye:'统业',
dctongye_info:'锁定技。游戏开始时或一名角色死亡后若场上势力数不大于4你的手牌上限+3不大于3你的攻击范围+3不大于2你使用【杀】的次数上限+3不大于1你摸牌阶段额定摸牌数+3。',
tianshangyi:'田尚衣',
dcposuo:'婆娑',
dcposuo_info:'出牌阶段,若你本阶段未造成过伤害,则你可以将一张你本阶段未以此法使用过的花色的手牌当作任意一张存在于游戏的同花色伤害牌使用。',
dcxiaoren:'绡刃',
dcxiaoren_info:'每回合限一次当你造成伤害后你可以进行判定若结果为红色你可以令一名角色回复1点体力黑色你可以对受伤角色的上家或下家造成1点伤害然后你可以重复此方向的伤害流程直到有角色因此死亡或下个目标角色为你。',
sp2_yinyu:'隐山之玉',
sp2_huben:'百战虎贲',

View File

@ -34,7 +34,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
caozhi:['male','wei',3,['luoying','jiushi']],
caochong:['male','wei',3,['chengxiang','renxin']],
xunyou:['male','wei',3,['qice','zhiyu'],['clan:颍川荀氏']],
xin_xushu:['male','shu',3,['xinwuyan','xinjujian']],
xin_xushu:['male','shu',3,['xinwuyan','xinjujian'],['border:wei']],
xin_masu:['male','shu',3,['olsanyao','rezhiman']],
zhuran:['male','wu',4,['danshou']],
xusheng:['male','wu',4,['xinpojun']],
@ -7931,6 +7931,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
respondSha:true,
},
audio:2,
audioname:['xin_zhangyi'],
trigger:{player:['useCard1','respond']},
firstDo:true,
forced:true,
@ -13566,7 +13567,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhuhuan:['re_zhuhuan','xin_zhuhuan','zhuhuan','old_zhuhuan'],
caoxiu:['re_caoxiu','tw_caoxiu','xin_caoxiu','caoxiu','old_caoxiu'],
xiahoushi:['re_xiahoushi','xiahoushi'],
zhangyi:['re_zhangyi','zhangyi'],
zhangyi:['xin_zhangyi','re_zhangyi','zhangyi'],
quancong:['old_quancong','re_quancong','xin_quancong','quancong'],
sunxiu:['re_sunxiu','xin_sunxiu','sunxiu'],
zhuzhi:['re_zhuzhi','zhuzhi','xin_zhuzhi','old_zhuzhi'],

Binary file not shown.

BIN
font/huangcao.woff2 Normal file

Binary file not shown.

Binary file not shown.

BIN
font/shousha.woff2 Normal file

Binary file not shown.

Binary file not shown.

BIN
font/suits.woff2 Normal file

Binary file not shown.

Binary file not shown.

BIN
font/xiaozhuan.woff2 Normal file

Binary file not shown.

BIN
font/xingkai.woff2 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
font/yuanli.woff2 Normal file

Binary file not shown.

View File

@ -233,15 +233,18 @@ window.noname_asset_list=[
'audio/die/chunyuqiong.mp3',
'audio/die/clan_hanrong.mp3',
'audio/die/clan_hanshao.mp3',
'audio/die/clan_wanghun.mp3',
'audio/die/clan_wangling.mp3',
'audio/die/clan_wangyun.mp3',
'audio/die/clan_wuban.mp3',
'audio/die/clan_wukuang.mp3',
'audio/die/clan_wuxian.mp3',
'audio/die/clan_xuncai.mp3',
'audio/die/clan_xuncan.mp3',
'audio/die/clan_xunchen.mp3',
'audio/die/clan_xunshu.mp3',
'audio/die/clan_zhonghui.mp3',
'audio/die/clan_zhongyan.mp3',
'audio/die/cuimao.mp3',
'audio/die/cuiyan.mp3',
'audio/die/daqiao.mp3',
@ -301,9 +304,11 @@ window.noname_asset_list=[
'audio/die/dongcheng.mp3',
'audio/die/dongguiren.mp3',
'audio/die/dongtuna.mp3',
'audio/die/dongxie.mp3',
'audio/die/dongyun.mp3',
'audio/die/dongzhao.mp3',
'audio/die/dongzhuo.mp3',
'audio/die/duanjiong.mp3',
'audio/die/duanqiaoxiao.mp3',
'audio/die/duanwei.mp3',
'audio/die/dufuren.mp3',
@ -572,6 +577,7 @@ window.noname_asset_list=[
'audio/die/ol_sunjian.mp3',
'audio/die/ol_wangrong.mp3',
'audio/die/ol_weiyan.mp3',
'audio/die/ol_wenqin.mp3',
'audio/die/ol_xiahouyuan.mp3',
'audio/die/ol_xiaoqiao.mp3',
'audio/die/ol_xuhuang.mp3',
@ -600,6 +606,7 @@ window.noname_asset_list=[
'audio/die/panshu.mp3',
'audio/die/panzhangmazhong.mp3',
'audio/die/peixiu.mp3',
'audio/die/peiyuanshao.mp3',
'audio/die/puyuan.mp3',
'audio/die/qianzhao.mp3',
'audio/die/qiaogong.mp3',
@ -777,6 +784,7 @@ window.noname_asset_list=[
'audio/die/sb_yuanshao.mp3',
'audio/die/sb_yujin.mp3',
'audio/die/sb_zhangfei.mp3',
'audio/die/sb_zhanghe.mp3',
'audio/die/sb_zhangjiao.mp3',
'audio/die/sb_zhaoyun.mp3',
'audio/die/sb_zhenji.mp3',
@ -1034,6 +1042,7 @@ window.noname_asset_list=[
'audio/die/xin_gaoshun.mp3',
'audio/die/xin_gongsunzan.mp3',
'audio/die/xin_guohuai.mp3',
'audio/die/xin_guozhao.mp3',
'audio/die/xin_guyong.mp3',
'audio/die/xin_handang.mp3',
'audio/die/xin_hansui.mp3',
@ -1053,6 +1062,7 @@ window.noname_asset_list=[
'audio/die/xin_yuanshao.mp3',
'audio/die/xin_yufan.mp3',
'audio/die/xin_yuji.mp3',
'audio/die/xin_zhangyi.mp3',
'audio/die/xin_zhonghui.mp3',
'audio/die/xin_zhuhuan.mp3',
'audio/die/xin_zhuran.mp3',
@ -1535,6 +1545,7 @@ window.noname_asset_list=[
'audio/skill/chuanyun.mp3',
'audio/skill/chuhai1.mp3',
'audio/skill/chuhai2.mp3',
'audio/skill/chuhai3.mp3',
'audio/skill/chuiti1.mp3',
'audio/skill/chuiti2.mp3',
'audio/skill/chulao1.mp3',
@ -1557,10 +1568,14 @@ window.noname_asset_list=[
'audio/skill/clanbalong2.mp3',
'audio/skill/clanbaozu_clan_zhonghui1.mp3',
'audio/skill/clanbaozu_clan_zhonghui2.mp3',
'audio/skill/clanbaozu_clan_zhongyan1.mp3',
'audio/skill/clanbaozu_clan_zhongyan2.mp3',
'audio/skill/clanbeishi1.mp3',
'audio/skill/clanbeishi2.mp3',
'audio/skill/clanbolong1.mp3',
'audio/skill/clanbolong2.mp3',
'audio/skill/clanchenya1.mp3',
'audio/skill/clanchenya2.mp3',
'audio/skill/clandaojie_clan_xuncai1.mp3',
'audio/skill/clandaojie_clan_xuncai2.mp3',
'audio/skill/clandaojie_clan_xuncan1.mp3',
@ -1575,6 +1590,10 @@ window.noname_asset_list=[
'audio/skill/clanfangzhen2.mp3',
'audio/skill/clanfenchai1.mp3',
'audio/skill/clanfenchai2.mp3',
'audio/skill/clanfuxun1.mp3',
'audio/skill/clanfuxun2.mp3',
'audio/skill/clanguangu1.mp3',
'audio/skill/clanguangu2.mp3',
'audio/skill/clanguixiang1.mp3',
'audio/skill/clanguixiang2.mp3',
'audio/skill/clanhuanjia1.mp3',
@ -1585,6 +1604,8 @@ window.noname_asset_list=[
'audio/skill/clanjiexuan2.mp3',
'audio/skill/clanlianhe1.mp3',
'audio/skill/clanlianhe2.mp3',
'audio/skill/clanlianzhu1.mp3',
'audio/skill/clanlianzhu2.mp3',
'audio/skill/clanlieshi1.mp3',
'audio/skill/clanlieshi2.mp3',
'audio/skill/clanliuju1.mp3',
@ -1593,6 +1614,8 @@ window.noname_asset_list=[
'audio/skill/clanmingjie2.mp3',
'audio/skill/clanmuyin_clan_wuban1.mp3',
'audio/skill/clanmuyin_clan_wuban2.mp3',
'audio/skill/clanmuyin_clan_wukuang1.mp3',
'audio/skill/clanmuyin_clan_wukuang2.mp3',
'audio/skill/clanmuyin_clan_wuxian1.mp3',
'audio/skill/clanmuyin_clan_wuxian2.mp3',
'audio/skill/clansankuang1.mp3',
@ -1601,6 +1624,8 @@ window.noname_asset_list=[
'audio/skill/clanshangshen2.mp3',
'audio/skill/clanshenjun1.mp3',
'audio/skill/clanshenjun2.mp3',
'audio/skill/clanxiaoyong1.mp3',
'audio/skill/clanxiaoyong2.mp3',
'audio/skill/clanxieshu1.mp3',
'audio/skill/clanxieshu2.mp3',
'audio/skill/clanxumin_clan_hanrong1.mp3',
@ -1615,6 +1640,8 @@ window.noname_asset_list=[
'audio/skill/clanyuzhi2.mp3',
'audio/skill/clanzhanding1.mp3',
'audio/skill/clanzhanding2.mp3',
'audio/skill/clanzhongliu_clan_wanghun1.mp3',
'audio/skill/clanzhongliu_clan_wanghun2.mp3',
'audio/skill/clanzhongliu_clan_wangling1.mp3',
'audio/skill/clanzhongliu_clan_wangling2.mp3',
'audio/skill/clanzhongliu_clan_wangyun1.mp3',
@ -1786,6 +1813,8 @@ window.noname_asset_list=[
'audio/skill/dchuishu2.mp3',
'audio/skill/dchuizhi1.mp3',
'audio/skill/dchuizhi2.mp3',
'audio/skill/dchumei1.mp3',
'audio/skill/dchumei2.mp3',
'audio/skill/dcjianguo1.mp3',
'audio/skill/dcjianguo2.mp3',
'audio/skill/dcjianji1.mp3',
@ -1796,6 +1825,8 @@ window.noname_asset_list=[
'audio/skill/dcjianzheng2.mp3',
'audio/skill/dcjiaofeng1.mp3',
'audio/skill/dcjiaofeng2.mp3',
'audio/skill/dcjiaoxia1.mp3',
'audio/skill/dcjiaoxia2.mp3',
'audio/skill/dcjieshu1.mp3',
'audio/skill/dcjieshu2.mp3',
'audio/skill/dcjiexing1.mp3',
@ -1870,6 +1901,8 @@ window.noname_asset_list=[
'audio/skill/dcminze2.mp3',
'audio/skill/dcmiyun1.mp3',
'audio/skill/dcmiyun2.mp3',
'audio/skill/dcmoyu1.mp3',
'audio/skill/dcmoyu2.mp3',
'audio/skill/dcneifa1.mp3',
'audio/skill/dcneifa2.mp3',
'audio/skill/dcnuchen1.mp3',
@ -3320,12 +3353,16 @@ window.noname_asset_list=[
'audio/skill/olfusong2.mp3',
'audio/skill/olgoude1.mp3',
'audio/skill/olgoude2.mp3',
'audio/skill/olguangao1.mp3',
'audio/skill/olguangao2.mp3',
'audio/skill/olhaoshi1.mp3',
'audio/skill/olhaoshi2.mp3',
'audio/skill/olhongji1.mp3',
'audio/skill/olhongji2.mp3',
'audio/skill/olhuanfu1.mp3',
'audio/skill/olhuanfu2.mp3',
'audio/skill/olhuiqi1.mp3',
'audio/skill/olhuiqi2.mp3',
'audio/skill/olhunzi_re_sunyi1.mp3',
'audio/skill/olhunzi_re_sunyi2.mp3',
'audio/skill/olhunzi1.mp3',
@ -3370,6 +3407,8 @@ window.noname_asset_list=[
'audio/skill/olqisi2.mp3',
'audio/skill/olruoyu1.mp3',
'audio/skill/olruoyu2.mp3',
'audio/skill/olsaogu1.mp3',
'audio/skill/olsaogu2.mp3',
'audio/skill/olshengong1.mp3',
'audio/skill/olshengong2.mp3',
'audio/skill/olshilu1.mp3',
@ -3396,6 +3435,8 @@ window.noname_asset_list=[
'audio/skill/olxiaosi2.mp3',
'audio/skill/olxibing1.mp3',
'audio/skill/olxibing2.mp3',
'audio/skill/olxieju1.mp3',
'audio/skill/olxieju2.mp3',
'audio/skill/olximo1.mp3',
'audio/skill/olximo2.mp3',
'audio/skill/olximo3.mp3',
@ -4103,6 +4144,8 @@ window.noname_asset_list=[
'audio/skill/sbniepan2.mp3',
'audio/skill/sbpaoxiao1.mp3',
'audio/skill/sbpaoxiao2.mp3',
'audio/skill/sbqiaobian1.mp3',
'audio/skill/sbqiaobian2.mp3',
'audio/skill/sbqiaoshi1.mp3',
'audio/skill/sbqiaoshi2.mp3',
'audio/skill/sbqingzheng1.mp3',
@ -4863,6 +4906,8 @@ window.noname_asset_list=[
'audio/skill/wfyuyan2.mp3',
'audio/skill/wlcuorui1.mp3',
'audio/skill/wlcuorui2.mp3',
'audio/skill/wufei1.mp3',
'audio/skill/wufei2.mp3',
'audio/skill/wuhun21.mp3',
'audio/skill/wuhun22.mp3',
'audio/skill/wuhun23.mp3',
@ -5236,6 +5281,9 @@ window.noname_asset_list=[
'audio/skill/xinshenxing2.mp3',
'audio/skill/xintan1.mp3',
'audio/skill/xintan2.mp3',
'audio/skill/xinwurong1.mp3',
'audio/skill/xinwurong2.mp3',
'audio/skill/xinwurong3.mp3',
'audio/skill/xinwusheng1.mp3',
'audio/skill/xinwusheng2.mp3',
'audio/skill/xinwuyan1.mp3',
@ -5378,6 +5426,8 @@ window.noname_asset_list=[
'audio/skill/yeyan3.mp3',
'audio/skill/yicheng1.mp3',
'audio/skill/yicheng2.mp3',
'audio/skill/yichong1.mp3',
'audio/skill/yichong2.mp3',
'audio/skill/yicong1.mp3',
'audio/skill/yicong2.mp3',
'audio/skill/yicong3.mp3',
@ -5835,12 +5885,12 @@ window.noname_asset_list=[
'audio/voice/female/21.mp3',
'audio/voice/female/22.mp3',
'font/huangcao.ttf',
'font/shousha.ttf',
'font/xiaozhuan.ttf',
'font/xingkai.ttf',
'font/xinwei.ttf',
'font/yuanli.ttf',
'font/huangcao.woff2',
'font/shousha.woff2',
'font/xiaozhuan.woff2',
'font/xingkai.woff2',
'font/xinwei.woff2',
'font/yuanli.woff2',
'image/background/beipan_bg.jpg',
'image/background/heaven_bg.jpg',
@ -5907,14 +5957,18 @@ window.noname_asset_list=[
'image/card/dawan.png',
'image/card/db_atk1.jpg',
'image/card/db_atk1_出阵迎战.jpg',
'image/card/db_atk1_反抗.jpg',
'image/card/db_atk1_固守城池.jpg',
'image/card/db_atk2.jpg',
'image/card/db_atk2_拱卫中军.jpg',
'image/card/db_atk2_归顺.jpg',
'image/card/db_atk2_突出重围.jpg',
'image/card/db_def1.jpg',
'image/card/db_def1_围城断粮.jpg',
'image/card/db_def1_镇压.jpg',
'image/card/db_def1_直取敌营.jpg',
'image/card/db_def2.jpg',
'image/card/db_def2_安抚.jpg',
'image/card/db_def2_擂鼓进军.jpg',
'image/card/db_def2_扰阵疲敌.jpg',
'image/card/diaobingqianjiang.png',
@ -6502,10 +6556,12 @@ window.noname_asset_list=[
'image/character/dongcheng.jpg',
'image/character/dongguiren.jpg',
'image/character/dongtuna.jpg',
'image/character/dongwan.jpg',
'image/character/dongxie.jpg',
'image/character/dongyun.jpg',
'image/character/dongzhao.jpg',
'image/character/dongzhuo.jpg',
'image/character/duanjiong.jpg',
'image/character/duanqiaoxiao.jpg',
'image/character/duanwei.jpg',
'image/character/dufuren.jpg',
@ -7258,6 +7314,7 @@ window.noname_asset_list=[
'image/character/old_wanglang.jpg',
'image/character/old_wangyi.jpg',
'image/character/old_wangyun.jpg',
'image/character/old_xiaoqiao.jpg',
'image/character/old_xusheng.jpg',
'image/character/old_yangyan.jpg',
'image/character/old_yangzhi.jpg',
@ -7348,6 +7405,7 @@ window.noname_asset_list=[
'image/character/pe_wenqin.jpg',
'image/character/pe_zhonghui.jpg',
'image/character/peixiu.jpg',
'image/character/peiyuanshao.jpg',
'image/character/pengyang.jpg',
'image/character/pk_sp_duyu.jpg',
'image/character/prp_zhugeliang.jpg',
@ -8001,6 +8059,7 @@ window.noname_asset_list=[
'image/character/xin_masu.jpg',
'image/character/xin_panzhangmazhong.jpg',
'image/character/xin_quancong.jpg',
'image/character/xin_sunliang.jpg',
'image/character/xin_sunluban.jpg',
'image/character/xin_sunxiu.jpg',
'image/character/xin_wuguotai.jpg',

11685
game/game.js

File diff suppressed because it is too large Load Diff

View File

@ -128,12 +128,12 @@ window.noname_package={
music_jilve:'极略',
},
font:{
xiaozhuan:'小篆',
xinwei:'新魏',
huangcao:'黄草',
yuanli:'楷体',
xingkai:'行楷',
shousha:'手杀',
xiaozhuan:'方正小篆',
xinwei:'华文新魏_GBK',
huangcao:'方正黄草_GBK',
yuanli:'方正北魏楷书_GBK',
xingkai:'方正行楷_GBK',
shousha:'方正隶变_GBK',
},
theme:{
woodden:'木纹',

View File

@ -49,7 +49,7 @@ window.noname_source_list=[
'character/yingbian.js',
'character/yxs.js',
'character/zhuogui.js',
'font/suits.ttf',
'font/suits.woff2',
'game/asset.js',
'game/codemirror.js',
'game/config.js',

View File

@ -1,28 +1,31 @@
window.noname_update={
version:'1.9.125.1',
update:'1.9.125',
version:'1.9.126',
update:'1.9.125.1',
changeLog:[
'整合@Tipx-L @copcap @mengxinzxz的Pull Request',
'《江山如故·承》扩展包、重铸类技能代码重写',
'OL周群、孙翎鸾、周不疑斗地主曹操、刘备、孙权',
'乐綝、孙狼、庞会、韩遂、唐咨、十常侍、手杀蒋干技能调整',
'整合@Tipx-L @mengxinzxz @kuangthree @shijian的Pull Request',
'将游戏字体从ttf改为woff2格式需要重新下载',
'“应变”机制重写',
'新增lib.init.jsForExtension用于扩展按顺序提前加载js文件',
'增加checkHistory函数增加懒加载机制其他性能优化',
'段颎、董婉、裴元绍',
'bug修复',
],
files:[
//'LICENSE',
//'card/extra.js',
'card/extra.js',
//'card/gujian.js',
'card/guozhan.js',
//'card/gwent.js',
'card/hearth.js',
//'card/huanlekapai.js',
'card/mtg.js',
//'card/sp.js',
//'card/standard.js',
//'card/swd.js',
//'card/yunchou.js',
'card/sp.js',
'card/standard.js',
'card/swd.js',
'card/yunchou.js',
'card/yingbian.js',
'card/yongjian.js',
//'card/zhenfa.js',
'card/zhenfa.js',
//'card/zhulu.js',
'character/clan.js',
'character/collab.js',
@ -30,7 +33,7 @@ window.noname_update={
'character/diy.js',
'character/extra.js',
//'character/gujian.js',
'character/gwent.js',
//'character/gwent.js',
'character/hearth.js',
'character/huicui.js',
'character/jsrg.js',
@ -39,52 +42,52 @@ window.noname_update={
'character/offline.js',
'character/old.js',
//'character/ow.js',
'character/rank.js',
'character/refresh.js',
//'character/rank.js',
//'character/refresh.js',
'character/sb.js',
'character/shenhua.js',
'character/shiji.js',
'character/sp.js',
'character/sp2.js',
'character/standard.js',
//'character/standard.js',
'character/tw.js',
//'character/swd.js',
'character/xiake.js',
//'character/xiake.js',
'character/xianding.js',
//'character/xianjian.js',
//'character/xinghuoliaoyuan.js',
'character/yijiang.js',
'character/yingbian.js',
//'character/yingbian.js',
//'character/yxs.js',
//'extension/boss/extension.js',
'font/suits.ttf',
'font/suits.woff2',
'layout/default/layout.css',
//'layout/default/menu.css',
//'layout/long2/layout.css',
//'layout/mobile/equip.css',
//'layout/mobile/layout.css',
//'layout/newlayout/global.css',
'layout/mobile/layout.css',
'layout/newlayout/global.css',
//'layout/nova/layout.css',
//'mode/boss.js',
//'mode/brawl.js',
//'mode/chess.js',
'mode/boss.js',
'mode/brawl.js',
'mode/chess.js',
//'mode/connect.js',
//'mode/doudizhu.js',
'mode/doudizhu.js',
'mode/guozhan.js',
//'mode/identity.js',
//'mode/single.js',
//'mode/stone.js',
'mode/identity.js',
'mode/single.js',
'mode/stone.js',
//'mode/tafang.js',
//'mode/versus.js',
'mode/versus.js',
'game/game.js',
//'game/keyWords.js',
//'game/NoSleep.js',
'game/config.js',
//'game/config.js',
'game/package.js',
//'game/pinyinjs.js',
//'game/asset.js',
'game/source.js',
'theme/simple/style.css',
//'theme/simple/style.css',
//'theme/style/hp/custom.css',
//'theme/style/hp/emotion.css',
//'theme/style/hp/glass.css',

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Some files were not shown because too many files have changed in this diff Show More