三家归晋

This commit is contained in:
Spmario233 2020-12-19 09:36:50 +08:00
parent 73b9e22c57
commit 6e0dbee7e8
16 changed files with 1100 additions and 95 deletions

View File

@ -247,7 +247,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return 8-get.value(card);
});
'step 3'
if(event.forceExecute||!result.bool) target.damage('thunder');
if(card.yingbian||!result.bool) target.damage('thunder');
},
ai:{
order:7,

View File

@ -48,6 +48,18 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
}
},
icedamage:{
ai:{
result:{
target:-1.5
},
tag:{
damage:1,
iceDamage:1,
natureDamage:1,
}
}
},
respondShan:{
ai:{
result:{
@ -63,13 +75,23 @@ game.import('card',function(lib,game,ui,get,ai,_status){
sha:{
audio:true,
fullskin:true,
nature:['thunder','fire','kami'],
nature:['thunder','fire','kami','ice'],
type:'basic',
enable:true,
usable:1,
updateUsable:'phaseUse',
global:'icesha_skill',
range:{attack:1},
selectTarget:1,
yingbian:function(event){
if(event.card.nature=='fire'){
if(typeof event.baseDamage!='number') event.baseDamage=1;
event.baseDamage++;
}
else{
event.yingbian_addTarget=true;
}
},
filterTarget:function(card,player,target){return player!=target},
content:function(){
"step 0"
@ -233,6 +255,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
cardcolor:'red',
notarget:true,
nodelay:true,
yingbian:function(event){
event.player.draw();
},
content:function(){
event.result='shaned';
event.getParent().delayx=false;
@ -735,6 +760,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
type:'trick',
enable:true,
selectTarget:-1,
yingbian:function(event){
event.yingbian_removeTarget=true;
},
filterTarget:function(card,player,target){
return target!=player;
},
@ -920,6 +948,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
fullskin:true,
type:'trick',
enable:true,
yingbian:function(event){
event.directHit.addArray(game.players);
},
filterTarget:function(card,player,target){
return target!=player;
},
@ -1330,6 +1361,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
delete ui.tempnowuxie;
}
}
if(event.card.yingbian){
var cardx=event.getParent().respondTo[1];
if(cardx&&cardx.cards&&cardx.cards.filterInD().length) player.gain(cardx.cards.filterInD(),'gain2','log');
}
},
},
lebu:{
@ -1566,6 +1601,15 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
}
},
icesha_skill:{
inherit:'hanbing_skill',
trigger:{source:'damageBegin2'},
equipSkill:false,
ruleSkill:true,
filter:function(event){
return event.card&&event.card.name=='sha'&&event.nature=='ice'&&event.notLink()&&event.player.getCards('he').length>0;
},
},
renwang_skill:{
equipSkill:true,
trigger:{target:'shaBegin'},
@ -2411,6 +2455,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
wuxie_info:'一张锦囊牌生效前,对此牌使用。抵消此牌对一名角色产生的效果,或抵消另一张【无懈可击】产生的效果。',
lebu_info:'出牌阶段,对一名其他角色使用。若判定结果不为红桃,跳过其出牌阶段。',
shandian_info:'出牌阶段对自己使用。若判定结果为黑桃2~9则目标角色受到3点雷电伤害。若判定不为黑桃2~9将之移动到下家的判定区里。',
icesha_skill:'冰杀',
icesha_skill_info:'防止即将造成的伤害,改为依次弃置其两张牌。',
},
list:[
["spade",7,"sha"],

769
card/yingbian.js Normal file
View File

@ -0,0 +1,769 @@
'use strict';
game.import('card',function(lib,game,ui,get,ai,_status){
return {
name:'yingbian',
//connect:true,
card:{
suijiyingbian:{
global:'suijiyingbian_skill',
fullskin:true,
type:'trick',
},
zhujinqiyuan:{
type:'trick',
enable:true,
audio:true,
filterTarget:function(card,player,target){
return target!=player&&target.countCards('hej')>0;
},
content:function(){
var dist=get.distance(player,target);
if(dist>1||card.yingbian) player.discardPlayerCard(target,'hej',true);
if(dist<=1||card.yingbian) player.gainPlayerCard(target,'hej',true);
},
fullskin:true,
postAi:function(targets){
return targets.length==1&&targets[0].countCards('j');
},
ai:{
wuxie:function(target,card,player,viewer){
if(get.attitude(viewer,player)>0&&get.attitude(viewer,target)>0){
return 0;
}
},
basic:{
order:7.5,
useful:4,
value:9
},
result:{
target:function(player,target){
var discard=get.distance(player,target)>1;
if(get.attitude(player,target)<=0) return (target.countCards('he',function(card){
return get.value(card,target)>0&&(discard||card!=target.getEquip('jinhe'));
})>0)?-1.5:1.5;
var js=target.getCards('j');
if(js.length){
var jj=js[0].viewAs?{name:js[0].viewAs}:js[0];
if(js.length==1&&get.effect(target,jj,target,player)>=0){
return -1.5;
}
return 3;
}
return -1.5;
},
player:function(player,target){
if(get.distance(player,target)>1) return 0;
if(get.attitude(player,target)<0&&!target.countCards('he',function(card){
return get.value(card,target)>0&&card!=target.getEquip('jinhe');
})){
return 0;
}
if(get.attitude(player,target)>1){
var js=target.getCards('j');
if(js.length){
var jj=js[0].viewAs?{name:js[0].viewAs}:js[0];
if(js.length==1&&get.effect(target,jj,target,player)>=0){
return 0;
}
return 1;
}
return 0;
}
return 1;
}
},
tag:{
loseCard:1,
gain:1,
}
},
},
dongzhuxianji:{
audio:true,
fullskin:true,
type:'trick',
enable:true,
selectTarget:-1,
toself:true,
filterTarget:function(card,player,target){
return target==player;
},
modTarget:true,
content:function(){
target.chooseToGuanxing(2);
target.draw(2);
},
ai:{
basic:{
order:7.2,
useful:4.5,
value:9.2
},
result:{
target:2.1,
},
tag:{
draw:2
}
}
},
chuqibuyi:{
audio:true,
enable:true,
type:'trick',
fullskin:true,
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')>0;
},
yingbian:function(event){
event.yingbian_addTarget=true;
},
content:function(){
'step 0'
if(player.isDead()||!target.countCards('h')){
event.finish();
return;
}
player.choosePlayerCard(target,'h',true);
'step 1'
if(result.bool){
target.showCards(result.cards);
if(get.suit(card)!=get.suit(result.cards[0])) target.damage();
}
},
ai:{
basic:{
order:5,
useful:2,
value:6
},
result:{
target:function(player,target,cardx){
if(player.hasSkillTag('viewHandcard',null,target,true)) return target.countCards('h',function(card){
return get.suit(card)!=get.suit(cardx)
})>0?-1.5:0;
return -1.4;
},
},
tag:{
damage:1,
}
}
},
wuxinghelingshan:{
audio:true,
fullskin:true,
type:'equip',
subtype:'equip1',
distance:{attackFrom:-3},
ai:{
basic:{
equipValue:2
}
},
skills:['wuxinghelingshan_skill']
},
wutiesuolian:{
audio:true,
fullskin:true,
type:'equip',
subtype:'equip1',
distance:{attackFrom:-2},
ai:{
basic:{
equipValue:2
}
},
skills:['wutiesuolian_skill']
},
heiguangkai:{
audio:true,
fullskin:true,
type:'equip',
subtype:'equip2',
ai:{
basic:{
equipValue:2
}
},
skills:['heiguangkai_skill']
},
tongque:{
audio:true,
fullskin:true,
type:'equip',
subtype:'equip5',
ai:{
basic:{
equipValue:2
}
},
skills:['tongque_skill']
},
tianjitu:{
audio:true,
fullskin:true,
type:'equip',
subtype:'equip5',
loseDelay:false,
onEquip:function(){
player.logSkill('tianjitu');
if(player.countCards('he',function(cardx){
return cardx!=card;
})) 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');
player.drawTo(5);
}
});
},
},
taigongyinfu:{
audio:true,
fullskin:true,
type:'equip',
subtype:'equip5',
ai:{
basic:{
equipValue:2
}
},
skills:['taigongyinfu_skill']
},
},
skill:{
suijiyingbian_skill:{
mod:{
cardname:function(card,player){
if(card.name=='suijiyingbian'&&player.storage.suijiyingbian) return player.storage.suijiyingbian;
},
},
trigger:{
player:['useCard1','respond','phaseBeginStart'],
},
silent:true,
firstDo:true,
filter:function(event,player,name){
if(name=='phaseBeginStart') return true;
var type=get.type(event.card);
return type=='basic'||type=='trick';
},
content:function(){
if(event.triggername=='phaseBeginStart') delete player.storage.suijiyingbian;
else player.storage.suijiyingbian=trigger.card.name;
},
},
wuxinghelingshan_skill:{
equipSkill:true,
trigger:{player:'useCard1'},
filter:function(event,player){
return (event.card.name=='sha'&&event.card.nature&&event.card.nature!='kami');
},
audio:true,
direct:true,
content:function(){
'step 0'
var list=lib.linked.slice(0);
list.remove('kami');
list.remove(trigger.card.nature);
list.push('cancel2');
player.chooseControl(list).set('prompt',get.prompt('wuxinghelingshan_skill')).set('prompt2','将'+get.translation(trigger.card)+'转换为以下属性之一');
'step 1'
if(result.control!='cancel2'){
player.logSkill('wuxinghelingshan_skill');
trigger.card.nature=result.control;
player.popup(get.translation(result.control)+'杀',result.control);
game.log(trigger.card,'被转为了','#y'+get.translation(result.control),'属性')
}
}
},
wutiesuolian_skill:{
trigger:{player:'useCardToPlayered'},
forced:true,
equipSkill:true,
audio:true,
filter:function(event,player){
return event.card.name=='sha'&&(!event.target.isLinked()||event.target.countCards('h'));
},
logTarget:'target',
content:function(){
var target=trigger.target;
if(!target.isLinked()) target.link();
else player.viewHandcards(target);
},
},
heiguangkai_skill:{
equipSkill:true,
trigger:{target:'useCardToTargeted'},
forced:true,
audio:true,
filter:function(event,player){
if(event.targets.length<2||(event.card.name!='sha'&&get.type(event.card)!='trick')) return false;
if(player.hasSkillTag('unequip2')) return false;
if(event.player.hasSkillTag('unequip',false,{
name:event.card?event.card.name:null,
target:player,
card:event.card
})) return false;
return true;
},
content:function(){
trigger.excluded.add(player);
},
},
tongque_skill:{
ai:{forceYingbian:true},
},
tianjitu_skill:{
audio:true,
},
taigongyinfu_skill:{
audio:true,
},
_yingbian:{
trigger:{player:'useCard1'},
forced:true,
popup:false,
firstDo:true,
filter:function(event,player){
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')||bool) return true;
return false;
},
content:function(){
'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;
}
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')) bool=true;
if(bool){
game.log(player,'触发了',card,'的应变条件');
event.goto(10);
}
'step 1'
event._global_waiting=true;
event.send=function(player,card,source,id,id2,skillState){
if(skillState){
player.applySkills(skillState);
}
var type=get.type(card);
var next=player.chooseCard({
filterCard:function(card){
return get.type(card)==type&&lib.filter.cardDiscardable.apply(this,arguments);
},
prompt:(get.translation(source)+'使用了'+get.translation(card)+',是否弃置一张'+get.translation(type)+'为其助战?'),
position:'h',
_global_waiting:true,
id:id,
id2:id2,
ai:function(card){
if(get.attitude(player,source)<=0) return false;
return 5-get.value(card);
},
});
if(game.online){
_status.event._resultid=id;
game.resume();
}
};
'step 2'
var type=get.type(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.type(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 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,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,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,event.source,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);
target.popup('助战','wood');
game.log(target,'响应了',player,'发起的助战');
}
else event.finish();
'step 10'
trigger.card.yingbian=true;
var info=get.info(trigger.card);
if(info&&info.yingbian) info.yingbian(trigger);
player.addTempSkill('yingbian_changeTarget');
},
},
yingbian_changeTarget:{
trigger:{player:'useCard2'},
forced:true,
popup:false,
filter:function(event,player){
if(event.yingbian_removeTarget&&event.targets&&event.targets.length>1) return true;
if(!event.yingbian_addTarget) return false;
var info=get.info(event.card);
if(info.allowMultiple==false) return false;
if(event.targets&&!info.multitarget){
if(game.hasPlayer(function(current){
return !event.targets.contains(current)&&lib.filter.targetEnabled2(event.card,player,current)&&lib.filter.targetInRange(event.card,player,current);
})){
return true;
}
}
return false;
},
content:function(){
'step 0'
if(trigger.yingbian_addTarget) player.chooseTarget('应变:是否为'+get.translation(trigger.card)+'增加一个目标?',function(card,player,target){
var trigger=_status.event.getTrigger();
var card=trigger.card;
return !trigger.targets.contains(target)&&lib.filter.targetEnabled2(card,player,target)&&lib.filter.targetInRange(card,player,target);
}).set('ai',function(target){
var player=_status.event.player;
var card=_status.event.getTrigger().card;
return get.effect(target,card,player,player);
});
else event.goto(2);
'step 1'
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
game.log(player,'发动应变效果,令',target,'也成为了',trigger.card,'的目标');
trigger.targets.add(target);
}
'step 2'
if(trigger.yingbian_removeTarget&&trigger.targets.length>1) player.chooseTarget('应变:是否为'+get.translation(trigger.card)+'减少一个目标?',function(card,player,target){
var trigger=_status.event.getTrigger();
return trigger.targets.contains(target);
}).set('ai',function(target){
var player=_status.event.player;
var card=_status.event.getTrigger().card;
return -get.effect(target,card,player,player);
});
else event.finish();
'step 3'
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
game.log(player,'发动应变效果,将',target,'从',trigger.card,'的目标中移除了');
trigger.targets.remove(target);
}
},
}
},
translate:{
suijiyingbian:'随机应变',
suijiyingbian_info:'此牌的牌名视为你本回合内使用或打出的上一张基本牌或普通锦囊牌的牌名。',
zhujinqiyuan:'逐近弃远',
zhujinqiyuan_info:'出牌阶段对一名有牌的其他角色使用。若你与其距离的大于1你弃置其区域内的一张牌若你与其的距离等于1你获得其区域内的一张牌。',
dongzhuxianji:'洞烛先机',
dongzhuxianji_info:'出牌阶段,对包含你在内的一名角色使用。你观看牌堆顶的两张牌并将其以任意顺序置于牌堆顶或牌堆底,然后摸两张牌。',
chuqibuyi:'出其不意',
chuqibuyi_info:'出牌阶段对一名有手牌的其他角色使用。你展示其一张手牌若此牌与【出其不意】的花色不同则你对其造成1点伤害。',
wuxinghelingshan:'五行鹤翎扇',
wuxinghelingshan_skill:'五行鹤翎扇',
wuxinghelingshan_info:'当你声明使用不为神属性的属性【杀】时,你可将此【杀】的属性改为不为神属性的其他属性。',
wutiesuolian:'乌铁锁链',
wutiesuolian_skill:'乌铁锁链',
wutiesuolian_skill_info:'当你使用【杀】指定目标后,若其:已横置,你观看其手牌。未横置,其横置。',
heiguangkai:'黑光铠',
heiguangkai_skill:'黑光铠',
heiguangkai_info:'锁定技当你成为【杀】或普通锦囊牌的目标后若此牌的目标数大于1则你令此牌对你无效。',
tongque:'铜雀',
tongque_info:'你使用带有【应变】效果的牌可以无视条件直接生效。',
tianjitu:'天机图',
tianjitu_skill:'天机图',
tianjitu_info:'锁定技,当此牌进入你的装备区时,你弃置一张不为此【天机图】的牌。当此牌离开你的装备区后,你将手牌摸至五张。',
taigongyinfu:'太公阴符',
taigongyinfu_info:'出牌阶段开始时,你可以横置一名角色。出牌阶段结束时,你可以重置一张手牌。',
yingbian_zhuzhan_tag:'助战',
yingbian_kongchao_tag:'空巢',
yingbian_fujia_tag:'富甲',
yingbian_canqu_tag:'残躯',
_yingbian:'应变',
yingbian_changeTarget:'应变',
},
list:[
['spade',1,'juedou',null,['yingbian_fujia']],
['spade',1,'taigongyinfu'],
['spade',1,'guding'],
['spade',2,'cixiong'],
['spade',2,'bagua'],
['spade',2,'tengjia'],
['spade',2,'suijiyingbian'],
['spade',3,'jiu'],
['spade',3,'zhujinqiyuan'],
['spade',3,'shuiyanqijunx',null,['yingbian_zhuzhan']],
['spade',4,'sha','thunder'],
['spade',4,'guohe'],
['spade',4,'shuiyanqijunx',null,['yingbian_zhuzhan']],
['spade',5,'sha','thunder'],
['spade',5,'qinglong'],
['spade',5,'jueying'],
['spade',6,'sha','thunder'],
['spade',6,'lebu'],
['spade',6,'qinggang'],
['spade',7,'sha','ice'],
['spade',7,'sha','ice'],
['spade',7,'nanman',null,['yingbian_fujia']],
['spade',8,'sha','ice'],
['spade',8,'sha','ice'],
['spade',8,'sha','ice'],
['spade',9,'sha',null,['yingbian_canqu']],
['spade',9,'sha',null,['yingbian_canqu']],
['spade',9,'jiu'],
['spade',10,'sha',null,['yingbian_canqu']],
['spade',10,'sha',null,['yingbian_canqu']],
['spade',10,'bingliang'],
['spade',11,'wuxie'],
['spade',11,'shuiyanqijunx'],
['spade',11,'tiesuo'],
['spade',12,'zhujinqiyuan',null,['yingbian_zhuzhan']],
['spade',12,'tiesuo'],
['spade',12,'zhangba'],
['spade',13,'wuxie',null,['yingbian_kongchao']],
['spade',13,'nanman',null,['yingbian_fujia']],
['spade',13,'dawan'],
['heart',1,'taoyuan'],
['heart',1,'wanjian'],
['heart',1,'wuxie'],
['heart',2,'shan',null,['yingbian_kongchao']],
['heart',2,'shan',null,['yingbian_kongchao']],
['heart',2,'chuqibuyi',null,['yingbian_zhuzhan']],
['heart',3,'wugu'],
['heart',3,'tao'],
['heart',3,'chuqibuyi',null,['yingbian_zhuzhan']],
['heart',4,'sha','fire'],
['heart',4,'tao'],
['heart',4,'suijiyingbian'],
['heart',5,'chitu'],
['heart',5,'tao'],
['heart',5,'qilin'],
['heart',6,'tao'],
['heart',6,'tao'],
['heart',6,'lebu'],
['heart',7,'sha','fire'],
['heart',7,'tao'],
['heart',7,'dongzhuxianji'],
['heart',8,'tao'],
['heart',8,'shan'],
['heart',8,'dongzhuxianji'],
['heart',9,'tao'],
['heart',9,'shan'],
['heart',9,'dongzhuxianji'],
['heart',10,'sha','fire',['yingbian_canqu']],
['heart',10,'sha'],
['heart',10,'sha'],
['heart',11,'sha'],
['heart',11,'shan'],
['heart',11,'dongzhuxianji'],
['heart',12,'tao'],
['heart',12,'shan'],
['heart',12,'guohe'],
['heart',1,'shandian'],
['heart',13,'wuxie',null,['yingbian_kongchao']],
['heart',13,'shan'],
['heart',13,'zhuahuang'],
['club',1,'juedou',null,['yingbian_fujia']],
['club',1,'zhuge'],
['club',1,'huxinjing'],
['club',2,'sha',null,['yingbian_kongchao']],
['club',2,'heiguangkai'],
['club',2,'tengjia'],
['club',1,'renwang'],
['club',3,'sha',null,['yingbian_kongchao']],
['club',3,'jiu'],
['club',3,'zhujinqiyuan',null,['yingbian_zhuzhan']],
['club',4,'sha',null,['yingbian_kongchao']],
['club',4,'bingliang'],
['club',4,'zhujinqiyuan',null,['yingbian_zhuzhan']],
['club',5,'sha',null,['yingbian_kongchao']],
['club',5,'sha'],
['club',5,'dilu'],
['club',6,'sha'],
['club',6,'sha','thunder'],
['club',6,'lebu'],
['club',7,'sha'],
['club',7,'sha','thunder'],
['club',7,'nanman'],
['club',8,'sha'],
['club',8,'sha','thunder'],
['club',8,'jiu'],
['club',9,'sha','thunder'],
['club',9,'sha','thunder'],
['club',9,'jiu'],
['club',10,'sha','thunder'],
['club',10,'sha','thunder'],
['club',10,'tiesuo'],
['club',11,'sha'],
['club',11,'sha',null,['yingbian_canqu']],
['club',11,'tiesuo'],
['club',12,'wuxie'],
['club',12,'tianjitu'],
['club',12,'tiesuo'],
['club',13,'wuxie'],
['club',13,'tongque'],
['club',13,'tiesuo'],
['diamond',1,'juedou'],
['diamond',1,'zhuge'],
['diamond',1,'wuxinghelingshan'],
['diamond',2,'tao'],
['diamond',2,'shan',null,['yingbian_kongchao']],
['diamond',2,'shan',null,['yingbian_kongchao']],
['diamond',3,'tao'],
['diamond',3,'shan'],
['diamond',3,'shunshou'],
['diamond',4,'sha','fire',['yingbian_canqu']],
['diamond',4,'shan'],
['diamond',4,'shunshou'],
['diamond',5,'sha','fire'],
['diamond',5,'shan'],
['diamond',5,'guanshi'],
['diamond',6,'sha'],
['diamond',6,'shan'],
['diamond',6,'shan'],
['diamond',7,'sha'],
['diamond',7,'shan'],
['diamond',7,'shan'],
['diamond',8,'sha',null,['yingbian_canqu']],
['diamond',8,'shan'],
['diamond',8,'shan'],
['diamond',9,'sha'],
['diamond',9,'shan'],
['diamond',9,'jiu'],
['diamond',10,'sha','fire'],
['diamond',10,'shan'],
['diamond',10,'shan'],
['diamond',11,'chuqibuyi'],
['diamond',11,'shan'],
['diamond',11,'shan'],
['diamond',12,'tao'],
['diamond',12,'shan'],
['diamond',12,'wutiesuolian'],
['diamond',12,'wuxie'],
['diamond',13,'sha','fire'],
['diamond',13,'zixin'],
['diamond',13,'hualiu'],
],
}
});

View File

@ -95,7 +95,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_liufu:['male','wei',3,['zhucheng','duoqi']],
diy_xizhenxihong:['male','shu',4,['fuchou','jinyan']],
diy_liuzan:['male','wu',4,['kangyin']],
diy_zaozhirenjun:['male','wei',3,['liangce','jianbi','juntun']],
diy_zaozhirenjun:['male','wei',3,['liangce','jianbi','diyjuntun']],
diy_yangyi:['male','shu',3,['choudu','liduan']],
diy_tianyu:['male','wei',4,['chezhen','youzhan']],
@ -10390,7 +10390,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
},
juntun:{
diyjuntun:{
enable:'phaseUse',
filter:function(event,player){
return player.countCards('he',{type:'equip'})>0;
@ -12228,8 +12228,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
liangce_info:'①出牌阶段限一次,你可以将一张基本牌当【五谷丰登】使用。②当因执行【五谷丰登】的效果而亮出的牌因效果执行完毕而置入弃牌堆后,你可以选择一名角色,令该角色获取之',
jianbi:'坚壁',
jianbi_info:'当你成为锦囊牌的目标时若此牌的目标包括其他角色你可以令此牌对1个目标无效',
juntun:'军屯',
juntun_info:'出牌阶段,你可以重铸装备牌',
diyjuntun:'军屯',
diyjuntun_info:'出牌阶段,你可以重铸装备牌',
choudu:'筹度',
choudu_info:'出牌阶段限一次,你可以弃置一张牌,并指定一名角色视为其使用一张调兵遣将',
liduan:'立断',

View File

@ -6425,7 +6425,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
quanfeng_info:'锁定技限定技一名角色死亡时你选择获得其的一个技能主公技限定技觉醒技带有Charlotte标签的技能除外然后加1点体力上限并回复1点体力。',
simashi:'司马师',
baiyi:'败移',
baiyi_info:'限定技,出牌阶段,若你已受伤,你可以交换两名角色的座次。',
baiyi_info:'限定技,出牌阶段,若你已受伤,你可以交换两名其他角色的座次。',
jinglve:'景略',
jinglve2:'景略',
jinglve3:'景略',

View File

@ -1629,7 +1629,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(info.allowMultiple==false) return false;
if(event.targets&&!info.multitarget){
if(game.hasPlayer(function(current){
return lib.filter.targetEnabled2(event.card,player,current)&&!event.targets.contains(current);
return !event.targets.contains(current)&&lib.filter.targetEnabled2(event.card,player,current)&&lib.filter.targetInRange(event.card,player,current);
})){
return true;
}

View File

@ -4,7 +4,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2',
connect:true,
character:{
//jin_zhangchunhua:['female','wei',3,['jiang','hunzi'],['hiddenSkill']],
jin_zhangchunhua:['female','jin',3,['huishi','qingleng','xuanmu'],['hiddenSkill']],
dongxie:['female','qun','3/4',['juntun','jiaojie']],
//jin_simayi:['female','wei',3,['reyingzi','gzyinghun'],['hiddenSkill']],
re_xinxianying:['female','wei',3,['rezhongjian','recaishi']],
luyusheng:['female','wu',3,['sicong','xianzhao'],['unseen']],
@ -73,6 +74,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterSort:{
sp2:{
sp_yingbian:['jin_zhangchunhua'],
sp_whlw:["xurong","lijue","zhangji","fanchou","guosi"],
sp_zlzy:["zhangqiying","lvkai","zhanggong","weiwenzhugezhi","beimihu"],
sp_longzhou:["xf_tangzi","xf_huangquan","xf_sufei","sp_liuqi"],
@ -82,7 +84,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_baigei:['re_panfeng','xingdaorong','caoxing'],
sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou"],
sp_huangjin:['liuhong','zhujun','re_hejin','hansui'],
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_yujin','re_maliang','xin_baosanniang','liubian','re_xinxianying'],
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_yujin','re_maliang','xin_baosanniang','liubian','re_xinxianying','dongxie'],
sp_mini:["mini_sunquan","mini_zuoci","mini_jiangwei","mini_diaochan","mini_zhangchunhua"],
sp_luanwu:["ns_lijue","ns_zhangji","ns_fanchou"],
sp_yongjian:["ns_chendao","yj_caoang"],
@ -90,6 +92,118 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
skill:{
juntun:{
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
return player.maxHp>1;
},
content:function(){
player.loseMaxHp();
player.draw(player.maxHp);
},
},
jiaojie:{
mod:{
ignoredHandcard:function(card,player){
if(get.color(card)=='red'){
return true;
}
},
cardDiscardable:function(card,player,name){
if(name=='phaseDiscard'&&get.color(card)=='red'){
return false;
}
},
targetInRange:function(card){
if(get.color(card)=='black') return true;
},
cardUsable:function(card){
if(get.color(card)=='black') return Infinity;
},
},
},
huishi:{
audio:2,
trigger:{player:'phaseDrawBegin1'},
filter:function(event,player){
return ui.cardPile.childElementCount%10>0&&!event.numFixed;
},
prompt:function(){
return get.prompt('huishi')+'(当前牌堆尾数:'+ui.cardPile.childElementCount%10+'';
},
check:function(event,player){
return ui.cardPile.childElementCount%10>3;
},
content:function(){
'step 0'
trigger.changeToZero();
event.cards=game.cardsGotoOrdering(get.cards(ui.cardPile.childElementCount%10)).cards;
var num=Math.ceil(event.cards.length/2);
var str='按顺序将卡牌置于牌堆底';
if(event.cards.length>num) str='按顺序将'+get.cnNumber(num)+'张牌置于牌堆底,然后获得其余的牌';
player.chooseButton([str,'<div class="text center">(先选择的在上)</div>',event.cards],true,num).set('ai',function(card){
return -get.value(card);
});
'step 1'
for(var i of result.links){
cards.remove(i);
i.fix();
ui.cardPile.appendChild(i);
}
game.updateRoundNumber();
if(cards.length) player.gain(cards,'gain2','log');
},
},
qingleng:{
audio:2,
trigger:{global:'phaseEnd'},
direct:true,
filter:function(event,player){
var target=event.player;
return target!=player&&!target.storage.nohp&&(target.hp+target.countCards('h'))>=(ui.cardPile.childElementCount%10)&&player.countCards('he')>0&&player.canUse({name:'sha',nature:'ice'},target,false);
},
content:function(){
'step 0'
player.chooseCard('he',get.prompt('qingleng',trigger.player),'将一张牌当做冰【杀】对其使用',function(card,player){
return player.canUse(get.autoViewAs({name:'sha',nature:'ice'},[card]),_status.event.target,false);
}).set('target',trigger.player).set('ai',function(card){
if(get.effect(_status.event.target,get.autoViewAs({name:'sha',nature:'ice'},[card]),player)<=0) return false;
return 6-get.value(card);
});
'step 1'
if(result.bool){
player.useCard(get.autoViewAs({name:'sha',nature:'ice'},result.cards),result.cards,false,trigger.player,'qingleng');
}
},
},
xuanmu:{
audio:2,
trigger:{player:'showCharacterAfter'},
forced:true,
hiddenSkill:true,
filter:function(event,player){
return event.toShow.contains('jin_zhangchunhua')&&player!=_status.currentPhase;
},
content:function(){
player.addTempSkill('xuanmu2');
},
},
xuanmu2:{
trigger:{player:'damageBegin4'},
forced:true,
popup:false,
content:function(){
trigger.cancel();
},
ai:{
effect:{
target:function(card,player,target){
if(get.tag(card,'damage')&&!player.hasSkillTag('jueqing',false,target)) return 'zerotarget';
},
},
},
},
decadewuniang:{
trigger:{
player:["useCard","respond"],
@ -5182,10 +5296,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return '共有'+(storage.red+storage.black)+'个标记';
},
},
trigger:{global:'damage'},
trigger:{global:'damageEnd'},
forced:true,
filter:function(event,player){
return event.player!=player&&_status.currentPhase!=player;
return event.player!=player&&event.player.isAlive()&&_status.currentPhase!=player;
},
content:function(){
player.storage.gxlianhua[player.getFriends().contains(trigger.player)?'red':'black']++;
@ -7161,7 +7275,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
decadewuniang:'武娘',
decadewuniang_info:'当你使用或打出【杀】时,你可以获得一名其他角色的一张牌。若如此做,其摸一张牌。(若你已发动许身,则关索也摸一张牌)',
jin_zhangchunhua:'晋张春华',
jin_zhangchunhua_ab:'张春华',
huishi:'慧识',
huishi_info:'摸牌阶段你可以放弃摸牌改为观看牌堆顶的X张牌获得其中的一半向下取整然后将其余牌置入牌堆底。X为牌堆数量的个位数',
qingleng:'清冷',
qingleng_info:'一名角色的回合结束时若其体力值与手牌数之和不小于X你可将一张牌当无距离限制的冰属性【杀】对其使用。X为牌堆数量的个位数',
xuanmu:'宣穆',
xuanmu2:'宣穆',
xuanmu_info:'锁定技,隐匿技。你于其他角色的回合登场时,防止你受到的伤害直到回合结束。',
jin_simayi:'晋司马懿',
dongxie:'董翓',
juntun:'军屯',
juntun_info:'锁定技准备阶段若X大于1则你减1点体力上限并摸X张牌X为你的体力上限。',
jiaojie:'狡黠',
jiaojie_info:'锁定技,你的红色牌不计入手牌上限。你使用黑色牌无距离和次数限制。',
sp_yingbian:'应变篇',
sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原",
sp_longzhou:"同舟共济",

View File

@ -12054,7 +12054,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterReplace:{
caozhi:['re_caozhi','caozhi'],
zhangchunhua:['zhangchunhua','mini_zhangchunhua'],
zhangchunhua:['zhangchunhua','jin_zhangchunhua','mini_zhangchunhua'],
yujin:['yujin_yujin','re_yujin','ol_yujin','xin_yujin','yujin'],
xushu:['re_xushu','xin_xushu','xushu'],
fazheng:['xin_fazheng','fazheng'],

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.106.4',
'v1.9.106.4.2',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -3514,6 +3514,8 @@ window.noname_asset_list=[
'image/character/xin_lingtong.jpg',
'image/character/xin_liubiao.jpg',
'image/character/re_xinxianying.jpg',
'image/character/jin_zhangchunhua.jpg',
'image/character/dongxie.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -9360,14 +9360,15 @@
},
c:function(){
(function(){
var a=0,b=0,c=0,d=0,e=0,f=0;
var sa=0,sb=0,sc=0,sd=0,se=0,sf=0;
var a=0,b=0,c=0,d=0,e=0,f=0,g=0;
var sa=0,sb=0,sc=0,sd=0,se=0,sf=0,sg=0;
for(var i in lib.character){
switch(lib.character[i][1]){
case 'wei':a++;if(lib.config.banned.contains(i)) sa++;break;
case 'shu':b++;if(lib.config.banned.contains(i)) sb++;break;
case 'wu':c++;if(lib.config.banned.contains(i)) sc++;break;
case 'qun':d++;if(lib.config.banned.contains(i)) sd++;break;
case 'jin':g++;if(lib.config.banned.contains(i)) sg++;break;
case 'western':e++;if(lib.config.banned.contains(i)) se++;break;
case 'key':f++;if(lib.config.banned.contains(i)) sf++;break;
}
@ -9376,6 +9377,7 @@
console.log('蜀:'+(b-sb)+'/'+b);
console.log('吴:'+(c-sc)+'/'+c);
console.log('群:'+(d-sd)+'/'+d);
console.log('晋:'+(g-sg)+'/'+g);
console.log('西:'+(e-se)+'/'+e);
console.log('键:'+(f-sf)+'/'+f);
console.log('已启用:'+((a+b+c+d+e+f)-(sa+sb+sc+sd+se+sf))+'/'+(a+b+c+d+e+f));
@ -9822,6 +9824,7 @@
thunder:"雷",
poison:"毒",
kami:'神',
ice:'冰',
wei:'魏',
shu:'蜀',
wu:'吴',
@ -9829,6 +9832,7 @@
shen:'神',
western:'西',
key:'键',
jin:'晋',
wei2:'魏国',
shu2:'蜀国',
wu2:'吴国',
@ -9836,6 +9840,7 @@
shen2:'神明',
western2:'西方',
key2:'KEY',
jin2:'晋朝',
male:'男',
female:'女',
mad:'混乱',
@ -9853,6 +9858,7 @@
qunColor:"#f6f6f6",
shenColor:"#ffe14c",
westernColor:"#ffe14c",
jinColor:"#ffe14c",
keyColor:"#c9b1fd",
basic:'基本',
equip:'装备',
@ -9881,6 +9887,7 @@
_lianhuan:'连环',
_lianhuan2:'连环',
_kamisha:'神杀',
_icesha:'冰杀',
qianxing:'潜行',
mianyi:'免疫',
fengyin:'封印',
@ -15888,6 +15895,7 @@
this.name=this.name1;
skills=lib.character[this.name][3]||[];
this.sex=lib.character[this.name][0];
if(this.group=='unknown') this.group=lib.character[this.name][1];
this.classList.remove('unseen');
break;
case 1:
@ -15906,6 +15914,7 @@
var skills=(lib.character[this.name][3]||[]);
if(this.name2) skills=skills.concat(lib.character[this.name2][3]||[]);
this.sex=lib.character[this.name][0];
if(this.group=='unknown') this.group=lib.character[this.name][1];
this.classList.remove('unseen');
this.classList.remove('unseen2');
break;
@ -15918,8 +15927,7 @@
game.broadcast(function(player,name,sex,num,group){
player.group=group;
player.name=name;
player.sex=sex;
player.node.identity.classList.remove('guessing');
player.sex=sex;;
switch(num){
case 0:player.classList.remove('unseen');break;
case 1:player.classList.remove('unseen2');break;
@ -16344,25 +16352,19 @@
this.node.intro.innerHTML=lib.config.intro;
this.node.name.dataset.nature=get.groupnature(this.group);
lib.setIntro(this);
// var name=get.translation(character);
this.node.name.innerHTML=get.slimName(character);
if(this.classList.contains('minskin')&&this.node.name.querySelectorAll('br').length>=4){
this.node.name.classList.add('long');
}
// if(!lib.config.show_name){
// this.node.name.style.display='none';
// }
// for(var i=0;i<name.length;i++){
// if(name[i]!='s'&&name[i]!='p')
// this.node.name.innerHTML+=name[i]+'<br/>';
// }
if(info[4].contains('hiddenSkill')){
if(!this.hiddenSkills) this.hiddenSkills=[];
this.hiddenSkills.addArray(skills);
skills=[];
this.classList.add('unseen');
this.name='unknown';
//this.node.name_seat=ui.create.div('.name.name_seat','未知',this);
this.node.name_seat=ui.create.div('.name.name_seat',get.verticalStr(get.translation(this.name)),this);
this.sex='male';
this.group='unknown';
this.storage.nohp=true;
}
if(character2&&lib.character[character2]){
@ -16423,15 +16425,7 @@
}
else skills=skills.concat(info2[3]);
// var name=get.translation(character2);
this.node.name2.innerHTML=get.slimName(character2);
// this.node.name2.dataset.nature=get.groupnature(info2[1]);
// if(!lib.config.show_name){
// this.node.name2.style.display='none';
// }
// for(var i=0;i<name.length;i++){
// this.node.name2.innerHTML+=name[i]+'<br/>';
// }
}
if(this.storage.nohp) this.node.hp.hide();
if(skill!=false){
@ -16913,6 +16907,8 @@
linked:this.isLinked(),
turnedover:this.isTurnedOver(),
phaseNumber:this.phaseNumber,
unseen:this.isUnseen(0),
unseen2:this.isUnseen(1),
}
for(var i=0;i<state.judges.length;i++){
state.views[i]=state.judges[i].viewAs;
@ -18226,34 +18222,41 @@
next._args.add('glow_result');
return next;
},
chooseCard:function(){
chooseCard:function(choose){
var next=game.createEvent('chooseCard');
next.player=this;
for(var i=0;i<arguments.length;i++){
if(typeof arguments[i]=='number'){
next.selectCard=[arguments[i],arguments[i]];
if(arguments.length==1&&get.is.object(choose)){
for(var i in choose){
next[i]=choose[i];
}
else if(get.itemtype(arguments[i])=='select'){
next.selectCard=arguments[i];
}
else if(typeof arguments[i]=='boolean'){
next.forced=arguments[i];
}
else if(get.itemtype(arguments[i])=='position'){
next.position=arguments[i];
}
else if(typeof arguments[i]=='function'){
if(next.filterCard) next.ai=arguments[i];
else next.filterCard=arguments[i];
}
else if(typeof arguments[i]=='object'&&arguments[i]){
next.filterCard=get.filter(arguments[i]);
}
else if(arguments[i]=='glow_result'){
next.glow_result=true;
}
else if(typeof arguments[i]=='string'){
get.evtprompt(next,arguments[i]);
}
else{
for(var i=0;i<arguments.length;i++){
if(typeof arguments[i]=='number'){
next.selectCard=[arguments[i],arguments[i]];
}
else if(get.itemtype(arguments[i])=='select'){
next.selectCard=arguments[i];
}
else if(typeof arguments[i]=='boolean'){
next.forced=arguments[i];
}
else if(get.itemtype(arguments[i])=='position'){
next.position=arguments[i];
}
else if(typeof arguments[i]=='function'){
if(next.filterCard) next.ai=arguments[i];
else next.filterCard=arguments[i];
}
else if(typeof arguments[i]=='object'&&arguments[i]){
next.filterCard=get.filter(arguments[i]);
}
else if(arguments[i]=='glow_result'){
next.glow_result=true;
}
else if(typeof arguments[i]=='string'){
get.evtprompt(next,arguments[i]);
}
}
}
if(next.filterCard==undefined) next.filterCard=lib.filter.all;
@ -23342,6 +23345,10 @@
card[2]='sha';
card[3]='kami';
}
if(card[2]=='icesha'){
card[2]='sha';
card[3]='ice';
}
}
else if(typeof card=='object'){
card=[card.suit,card.number,card.name,card.nature];
@ -23585,6 +23592,10 @@
name='神'+name;
this.node.image.classList.add('kami');
}
else if(card[3]=='ice'){
name='冰'+name;
this.node.image.classList.add('ice');
}
}
for(var i=0;i<name.length;i++){
this.node.name.innerHTML+=name[i]+'<br/>';
@ -24755,7 +24766,7 @@
}
var fullskills=game.expandSkills(player.getSkills().concat(lib.skill.global));
var info=get.info(skill);
if(info.noHidden&&!fullskills.contains(skill)){
if((info.noHidden||get.mode()!='guozhan')&&!fullskills.contains(skill)){
return false;
}
if(!info.trigger) return false;
@ -25248,7 +25259,7 @@
},
skill:{
_showHiddenCharacter:{
trigger:{player:['changeHp','phaseBeginStart']},
trigger:{player:['changeHp','phaseBeginStart','loseMaxHpBegin']},
firstDo:true,
forced:true,
popup:false,
@ -26764,7 +26775,13 @@
player.setModeState(info);
}
else{
player.init(info.name,info.name2);
player.init(info.name1,info.name2);
}
if(!info.unseen) player.classList.remove('unseen');
if(!info.unseen2) player.classList.remove('unseen2');
if(!player.isUnseen(2)&&player.storage.nohp){
delete player.storage.nohp;
player.node.hp.show();
}
player.playerid=i;
player.nickname=info.nickname;
@ -27017,8 +27034,8 @@
},
suit:['club','spade','diamond','heart'],
group:['wei','shu','wu','qun','shen'],
nature:['fire','thunder','poison','kami'],
linked:['fire','thunder','kami'],
nature:['fire','thunder','poison','kami','ice'],
linked:['fire','thunder','kami','ice'],
groupnature:{
shen:'thunder',
wei:'water',
@ -27027,6 +27044,7 @@
qun:'metal',
western:'thunder',
key:'key',
jin:'thunder',
},
phaseName:['phaseZhunbei','phaseJudge','phaseDraw','phaseUse','phaseDiscard','phaseJieshu'],
};
@ -31636,6 +31654,7 @@
if(cardnature) tempname=get.translation(cardnature)+tempname;
if(cardnature=='thunder') cards[i]._tempName.dataset.nature='thunder';
if(cardnature=='kami') cards[i]._tempName.dataset.nature='kami';
if(cardnature=='ice') cards[i]._tempName.dataset.nature='ice';
}
cards[i]._tempName.innerHTML=lib.config.cardtempname=='default'?get.verticalStr(tempname):tempname;
cards[i]._tempName.tempname=tempname;
@ -31818,7 +31837,7 @@
else if(info.enable=='phaseUse') enable=(event.type=='phase');
else if(typeof info.enable=='string') enable=(info.enable==event.name);
if(enable){
if(!game.expandSkills(player.getSkills().concat(lib.skill.global)).contains(skills2[i])&&(info.noHidden||player.hasSkillTag('nomingzhi',false,null,true))) enable=false;
if(!game.expandSkills(player.getSkills().concat(lib.skill.global)).contains(skills2[i])&&(info.noHidden||get.mode()!='guozhan'||player.hasSkillTag('nomingzhi',false,null,true))) enable=false;
if(info.filter&&!info.filter(event,player)) enable=false;
if(info.viewAs&&typeof info.viewAs!='function'&&event.filterCard&&!event.filterCard(info.viewAs,player,event)) enable=false;
if(info.viewAs&&typeof info.viewAs!='function'&&info.viewAsFilter&&info.viewAsFilter(player)==false) enable=false;
@ -36608,9 +36627,10 @@
if(info[name][1]=='shu') return 1;
if(info[name][1]=='wu') return 2;
if(info[name][1]=='qun') return 3;
if(info[name][1]=='western') return 4;
if(info[name][1]=='key') return 5;
return 6;
if(info[name][1]=='jin') return 4;
if(info[name][1]=='western') return 5;
if(info[name][1]=='key') return 6;
return 7;
}
list.sort(function(a,b){
var del=groupSort(a)-groupSort(b);
@ -38710,7 +38730,7 @@
editnode.classList.add('disabled');
delnode.innerHTML='取消';
delete delnode.button;
container.code='card={\n \n}\n\n\/*\n示例\ncard={\n type:"basic",\n enable:true,\n filterTarget:true,\n content:function(){\n target.draw()\n },\n ai:{\n order:1,\n result:{\n target:1\n }\n }\n}\n此例的效果为目标摸一张牌\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
container.code='card={\n \n}\n\n\/*\n示例\ncard={\n type:"basic",\n enable:true,\n filterTarget:true,\n content:function(){\n target.draw()\n },\n ai:{\n order:1,\n result:{\n target:1\n }\n }\n}\n此例的效果为目标摸一张牌\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
}
newCard=ui.create.div('.new_character',page);
@ -38924,7 +38944,7 @@
};
var saveConfig=ui.create.div('.editbutton','保存',editorpage,saveInput);
var editor=ui.create.div(editorpage);
container.code='card={\n \n}\n\n\/*\n示例\ncard={\n type:"basic",\n enable:true,\n filterTarget:true,\n content:function(){\n target.draw()\n },\n ai:{\n order:1,\n result:{\n target:1\n }\n }\n}\n此例的效果为目标摸一张牌\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
container.code='card={\n \n}\n\n\/*\n示例\ncard={\n type:"basic",\n enable:true,\n filterTarget:true,\n content:function(){\n target.draw()\n },\n ai:{\n order:1,\n result:{\n target:1\n }\n }\n}\n此例的效果为目标摸一张牌\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
var editnode=ui.create.div('.menubutton.large.new_card.disabled','创建卡牌',newCard,function(){
var name=page.querySelector('input.new_name').value;
@ -39606,8 +39626,8 @@
else{
dashes.content.node.code='function(config,pack){\n \n}\n\n\/*\n函数执行时机为游戏数据加载之后、界面加载之前\n参数1扩展选项见选项代码参数2为扩展定义的武将、卡牌和技能等可在此函数中修改\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
dashes.precontent.node.code='function(){\n \n}\n\n\/*\n函数执行时机为游戏数据加载之前且不受禁用扩展的限制\n除添加模式外请慎用\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
dashes.config.node.code='config={\n \n}\n\n\/*\n示例\nconfig={\n switcher_example:{\n name:"示例列表选项",\n init:"3",\n item:{"1":"一","2":"二","3":"三"}\n },\n toggle_example:{\n name:"示例开关选项",\n init:true\n }\n}\n此例中传入的主代码函数的默认参数为{switcher_example:"3",toggle_example:true}\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
dashes.help.node.code='help={\n \n}\n\n\/*\n示例\nhelp={\n "帮助条目":"<ul><li>列表1-条目1<li>列表1-条目2</ul><ol><li>列表2-条目1<li>列表2-条目2</ul>"\n}\n帮助内容将显示在菜单选项帮助中\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
dashes.config.node.code='config={\n \n}\n\n\/*\n示例\nconfig={\n switcher_example:{\n name:"示例列表选项",\n init:"3",\n item:{"1":"一","2":"二","3":"三"}\n },\n toggle_example:{\n name:"示例开关选项",\n init:true\n }\n}\n此例中传入的主代码函数的默认参数为{switcher_example:"3",toggle_example:true}\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
dashes.help.node.code='help={\n \n}\n\n\/*\n示例\nhelp={\n "帮助条目":"<ul><li>列表1-条目1<li>列表1-条目2</ul><ol><li>列表2-条目1<li>列表2-条目2</ul>"\n}\n帮助内容将显示在菜单选项帮助中\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
}
};
var dashes={};
@ -39730,8 +39750,8 @@
};
page.content={}
createCode('主','主代码',page,clickCode,'content','function(config,pack){\n \n}\n\n\/*\n函数执行时机为游戏数据加载之后、界面加载之前\n参数1扩展选项见选项代码参数2为扩展定义的武将、卡牌和技能等可在此函数中修改\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/');
createCode('启','启动代码',page,clickCode,'precontent','function(){\n \n}\n\n\/*\n函数执行时机为游戏数据加载之前且不受禁用扩展的限制\n除添加模式外请慎用\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/');
createCode('选','选项代码',page,clickCode,'config','config={\n \n}\n\n\/*\n示例\nconfig={\n switcher_example:{\n name:"示例列表选项",\n init:"3",\n item:{"1":"一","2":"二","3":"三"}\n },\n toggle_example:{\n name:"示例开关选项",\n init:true\n }\n}\n此例中传入的主代码函数的默认参数为{switcher_example:"3",toggle_example:true}\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/');
createCode('启','启动代码',page,clickCode,'precontent','function(){\n \n}\n\n\/*\n函数执行时机为游戏数据加载之前且不受禁用扩展的限制\n除添加模式外请慎用\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/');
createCode('选','选项代码',page,clickCode,'config','config={\n \n}\n\n\/*\n示例\nconfig={\n switcher_example:{\n name:"示例列表选项",\n init:"3",\n item:{"1":"一","2":"二","3":"三"}\n },\n toggle_example:{\n name:"示例开关选项",\n init:true\n }\n}\n此例中传入的主代码函数的默认参数为{switcher_example:"3",toggle_example:true}\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/');
createCode('帮','帮助代码',page,clickCode,'help','help={\n \n}\n\n\/*\n示例\nhelp={\n "帮助条目":"<ul><li>列表1-条目1<li>列表1-条目2</ul><ol><li>列表2-条目1<li>列表2-条目2</ul>"\n}\n帮助内容将显示在菜单选项帮助中\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/');
return page;
@ -41597,7 +41617,7 @@
},true,true);
},
groupControl:function(dialog){
return ui.create.control('wei','shu','wu','qun','western','key',function(link,node){
return ui.create.control('wei','shu','wu','qun','jin','western','key',function(link,node){
if(link=='全部'){
dialog.currentcapt='';
dialog.currentgroup='';
@ -42024,7 +42044,7 @@
}
}
if(!thisiscard){
var groups=['wei','shu','wu','qun'];
var groups=['wei','shu','wu','qun','jin'];
var bool1=false;
var bool2=false;
var bool3=(get.mode()=='guozhan'&&_status.forceKey!=true&&get.config('onlyguozhan'));
@ -43586,7 +43606,7 @@
name:ui.create.div('.name',node),
intro:ui.create.div('.intro',node)
}
if(item.name.indexOf('unknown')==0){
if(item.name&&item.name.indexOf('unknown')==0){
if(item.node&&item.node.name_seat){
node.classList.add('cardbg');
ui.create.div('.avatar_name',node,get.translation(item.name));
@ -49952,6 +49972,9 @@
else if(str.nature=='kami'){
str2='神'+str2;
}
else if(str.nature=='ice'){
str2='冰'+str2;
}
}
if(get.itemtype(str)=='card'||str.isCard){
if(_status.cardtag&&str.cardid){
@ -51591,7 +51614,7 @@
}
},
groups:function(){
return ['wei','shu','wu','qun','western','key'];
return ['wei','shu','wu','qun','jin','western','key'];
},
types:function(){
var types=[];

View File

@ -1,32 +1,32 @@
window.noname_update={
version:'1.9.106.4.1',
update:'1.9.106.4',
version:'1.9.106.4.2',
update:'1.9.106.4.1',
changeLog:[
'铃木央人',
'界凌统、界刘表',
'辛宪英、鲍三娘',
'晋张春华',
'董翓',
'bug修复',
],
files:[
//'card/extra.js',
//'card/huanlekapai.js',
//'card/sp.js',
//'card/standard.js',
'card/standard.js',
//'card/swd.js',
//'card/mtg.js',
//'card/gujian.js',
//'card/guozhan.js',
'card/guozhan.js',
//'card/gwent.js',
//'card/yunchou.js',
'card/yingbian.js',
//'card/zhenfa.js',
//'card/zhulu.js',
//'character/diy.js',
'character/diy.js',
//'character/extra.js',
//'character/hearth.js',
//'character/gujian.js',
//'character/gwent.js',
//'character/hearth.js',
//'character/mobile.js',
'character/mobile.js',
//'character/mtg.js',
//'character/old.js',
//'character/rank.js',
@ -39,22 +39,22 @@ window.noname_update={
//'character/swd.js',
//'character/xianjian.js',
//'character/xinghuoliaoyuan.js',
//'character/yijiang.js',
'character/yijiang.js',
//'character/yxs.js',
//'extension/boss/extension.js',
//'layout/default/layout.css',
'layout/default/layout.css',
//'layout/nova/layout.css',
//'mode/identity.js',
//'mode/doudizhu.js',
//'mode/guozhan.js',
'mode/guozhan.js',
//'mode/chess.js',
//'mode/tafang.js',
//'mode/single.js',
//'mode/stone.js',
//'mode/brawl.js',
'mode/brawl.js',
//'mode/versus.js',
//'mode/boss.js',
//'game/game.js',
'game/game.js',
//'game/keyWords.js',
//'game/server.js',
//'game/NoSleep.js',

BIN
image/character/dongxie.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

View File

@ -2279,6 +2279,9 @@ div:not(.handcards)>.card>.info>span,
#window>.damage.fullscreenavatar[data-nature='water']>div:first-child>div{
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 10px, rgba(0, 0, 0,0.3) 0 0 30px, rgba(78, 117, 140,1) 0 0 60px, rgba(78, 117, 140,1) 0 0 60px;
}
#window>.damage.fullscreenavatar[data-nature='ice']>div:first-child>div{
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 20px, rgba(0, 0, 0,0.3) 0 0 40px, rgba(213, 194, 179, 1) 0 0 80px;
}
#window>.damage.fullscreenavatar[data-nature='soil']>div:first-child>div{
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 10px, rgba(0, 0, 0,0.3) 0 0 30px, rgba(128, 59, 2,1) 0 0 60px;
}
@ -2765,7 +2768,8 @@ div:not(.handcards)>.card>.info>span,
.player>.name_seat {
opacity: 0;
}
.player:not([data-position='0']).unseen.unseen2>.name_seat {
.player:not([data-position='0']).unseen.unseen2>.name_seat,
.player:not([data-position='0']):not(.fullskin2).unseen>.name_seat {
opacity: 1 !important;
}
@ -3472,6 +3476,9 @@ div:not(.handcards)>.card>.info>span,
.kami {
color: rgba(90,118,99,0.3);
}
.ice {
color: rgba(80,160,255,0.3);
}
.poison {
color: rgba(30, 133, 51,0.4);
}
@ -3803,6 +3810,7 @@ span[data-nature='keymm'] {
.player .identity[data-color="ye"],
.player .identity[data-color="rYe"],
.player .identity[data-color="bYe"],
.player .identity[data-color="jin"],
div[data-nature='thunder'],
span[data-nature='thunder'] {
text-shadow: rgba(100, 74, 139,1) 0 0 2px,rgba(100, 74, 139,1) 0 0 5px,rgba(100, 74, 139,1) 0 0 10px,
@ -3926,6 +3934,27 @@ span[data-nature='graymx'] {
rgba(213, 194, 179,1) 0 0 5px,black 0 0 1px;
}
div[data-nature='ice'],
span[data-nature='ice'] {
text-shadow: rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 5px,rgba(213, 194, 179,1) 0 0 10px,
rgba(213, 194, 179,1) 0 0 10px,rgba(213, 194, 179,1) 0 0 20px,rgba(213, 194, 179,1) 0 0 20px,black 0 0 1px;
}
div[data-nature='icem'],
span[data-nature='icem'] {
text-shadow: rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 5px,rgba(213, 194, 179,1) 0 0 5px,
rgba(213, 194, 179,1) 0 0 5px,black 0 0 1px;
}
div[data-nature='icemm'],
span[data-nature='icemm'] {
text-shadow: rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 2px,
rgba(213, 194, 179,1) 0 0 2px,black 0 0 1px;
}
div[data-nature='icemx'],
span[data-nature='icemx'] {
text-shadow: black 0 0 1px,rgba(213, 194, 179,0.2) 0 0 2px,rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 5px,
rgba(213, 194, 179,1) 0 0 5px,black 0 0 1px;
}
.player .identity[data-color="unknownx"],
div[data-nature='black'],
span[data-nature='black'] {
@ -4095,6 +4124,10 @@ div[data-decoration="bronze"]::after{
color: #1F3C38;
border: 1px solid #1F3C38;
}
.card.fullskin.ice>.name {
color: #152E63;
border: 1px solid #152E63;
}
.card.fullskin.fire>.name {
color: #631515;
border: 1px solid #631515;
@ -4268,6 +4301,7 @@ div[data-decoration="bronze"]::after{
color: rgb(104,221,127);
}
.thundertext,
.icetext,
.controlthundertext {
color: rgb(117,186,255);
}

View File

@ -3865,6 +3865,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(cname=='sha'){
pileaddlist.push(['huosha','火杀']);
pileaddlist.push(['leisha','雷杀']);
pileaddlist.push(['icesha','冰杀']);
pileaddlist.push(['kamisha','神杀']);
}
}
}

View File

@ -4390,7 +4390,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
var card={name:button.link[2]};
var info=get.info(card);
var num=player.countCards('h');
if(get.tag(card,'multitarget')&&get.select(info.selectTarget)[1]==-1){
//if(get.tag(card,'multitarget')&&get.select(info.selectTarget)[1]==-1){
if(get.select(info.selectTarget)[1]==-1){
if(game.countPlayer(function(current){
return player.canUse(card,current)
})>num){