This commit is contained in:
libccy 2017-11-09 23:32:54 +08:00
parent e595ba4320
commit 2ee07bcedc
9 changed files with 295 additions and 68 deletions

View File

@ -10,7 +10,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return !target.hasSkill('luyugeng');
},
range:{global:1},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.luyugeng=card;
@ -59,7 +59,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return !target.hasSkill('chunbing');
},
range:{global:1},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.chunbing=card;
@ -90,7 +90,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return !target.hasSkill('gudonggeng');
},
range:{global:1},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.gudonggeng=card;
@ -115,7 +115,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return !target.hasSkill('liyutang');
},
range:{global:1},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.liyutang=card;
@ -141,7 +141,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return !target.hasSkill('mizhilianou');
},
range:{global:1},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.mizhilianou=card;
@ -176,7 +176,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return !target.hasSkill('xiajiao');
},
range:{global:1},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.xiajiao=card;
@ -199,7 +199,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return !target.hasSkill('tanhuadong');
},
range:{global:1},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.tanhuadong=card;
@ -221,7 +221,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return !target.hasSkill('mapodoufu');
},
range:{global:1},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.mapodoufu=card;
@ -245,7 +245,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return !target.hasSkill('qingtuan');
},
range:{global:1},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.qingtuan=card;
@ -278,7 +278,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return !target.hasSkill('yougeng');
},
range:{global:1},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.yougeng=card;
@ -304,7 +304,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return !target.hasSkill('molicha');
},
range:{global:1},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.molicha=card;
@ -326,7 +326,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return !target.hasSkill('yuanbaorou');
},
range:{global:1},
//range:{global:1},
content:function(){
target.$gain2(cards);
target.storage.yuanbaorou=card;
@ -744,28 +744,23 @@ game.import('card',function(lib,game,ui,get,ai,_status){
enable:true,
fullskin:true,
filterTarget:function(card,player,target){
return target!=player;
return target.hp>=player.hp;
},
content:function(){
'step 0'
target.draw('visible');
target.draw();
'step 1'
if(Array.isArray(result)&&get.suit(result[0])=='spade'){
return;
}
else{
target.damage();
}
target.loseHp();
},
ai:{
order:2,
value:[4,1],
useful:1,
value:[5,1],
useful:[4,1],
result:{
target:-1.5
},
tag:{
damage:1
// damage:1
}
}
},
@ -1539,7 +1534,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
// longxugou:'龙须钩',
// longxugou_info:'龙须钩',
mianlijinzhen:'棉里针',
mianlijinzhen_info:'令一名角色摸一张牌并展示,若不是黑桃,你对其造成一点伤害',
mianlijinzhen_info:'出牌阶段对一名体力值不小于你的角色使用,目标摸一张牌然后失去一点体力',
// shenhuofeiya:'神火飞鸦',
// shenhuofeiya_info:'神火飞鸦',
// tuhunsha:'土魂砂',

View File

@ -3357,7 +3357,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return event.player.hp<=0&&player.hp>1;
},
check:function(event,player){
return get.attitude(player,event.player)>=3;
return get.attitude(player,event.player)>=3&&!event.player.hasSkillTag('nosave');
},
logTarget:'player',
content:function(){

View File

@ -873,7 +873,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.chooseTarget(get.prompt2('gwqinwu')).ai=function(target){
var att=get.attitude(player,target);
if(att<=0) return 0;
att+=1-get.distance(player,target,'absolute')/game.players.length;
if(att<3) return att;
att=10-get.distance(player,target,'absolute')/game.players.length;
if(target.hasSkill('gwqinwu')){
att/=1.5;
}
@ -1247,6 +1248,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target.lose(card,ui.special);
player.addSkill('gwjushi2');
}
},
ai:{
order:8,
result:{
target:-1
}
}
},
gwjushi2:{

View File

@ -5837,7 +5837,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
animationColor:'thunder',
derivation:'xinci',
filter:function(event,player){
return !player.storage.anying&&player.countCards('he',{color:'black'})>1;
return !player.storage.anying&&player.countCards('he',{color:'black'})>0;
},
filterCard:{color:'black'},
position:'he',
@ -5848,7 +5848,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.anying=true;
player.awakenSkill('anying');
player.removeSkill('shengguang');
player.addSkill('xinci');
player.addAdditionalSkill('anying','xinci');
},
ai:{
order:1,

View File

@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mtg_jiding:['male','qun',4,['mbaizhan','msilian']],
// mtg_qianzhuo:['female','shu',3,[]],
mtg_jiesi:['male','wei',3,['mtongnian','msuoling','mhuanyi']],
// mtg_lilianna:['female','qun',3,[]],
mtg_lilianna:['female','qun',3,['lingyong','mduohun']],
// mtg_nisha:['female','wu',3,[]],
// mtg_ayeni:['male','qun',4,[]],
},
@ -19,6 +19,180 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mtg_ayeni:'金鬃阿耶尼是使用白色法术的鹏洛客。他长于净化身体与心灵的法术:用咒语来治疗、强化盟友,以及唤醒他人内在的心灵精华。',
},
skill:{
mduohun:{
trigger:{player:'dyingAfter'},
forced:true,
filter:function(event,player){
return event.source&&event.source.isIn()&&event.source.hp>0;
},
logTarget:'source',
content:function(){
trigger.source.loseHp();
},
ai:{
threaten:function(player,target){
if(target.hp==1) return 0.6;
return 1;
},
effect:{
target:function(card,player,target,current){
if(!target.hasFriend()) return;
if(target.hp<=1&&get.tag(card,'damage')) return [1,0,0,-1];
}
}
}
},
lingyong:{
enable:'phaseUse',
filter:function(event,player){
return player.hasSkillTag('lingyong');
},
unique:true,
forceunique:true,
group:'lingyong2',
direct:true,
delay:0,
skillAnimation:true,
animationColor:'thunder',
content:function(){
'step 0'
var list=[];
var list2=[];
var skills=player.getSkills();
for(var i=0;i<skills.length;i++){
var info=lib.skill[skills[i]];
if(info.ai&&info.ai.lingyong){
list.push(skills[i].slice(9));
list2.push(skills[i]);
}
}
event.list=list;
event.list2=list2;
if(list.length>1){
var dialog=ui.create.dialog('灵俑','hidden');
dialog.add([list,'character']);
player.chooseButton(dialog,true);
}
else if(list.length==1){
event.directresult=list[0];
}
else{
event.finish();
}
player.logSkill('lingyong');
'step 1'
if(!event.directresult){
if(result&&result.bool&&result.links[0]){
event.directresult=result.links[0];
}
else{
event.finish();
return;
}
}
if(event.directresult){
var storage={};
for(var i=0;i<event.list2.length;i++){
var skill=event.list2[i];
storage[skill]=player.storage[skill];
}
player.removeSkill(event.list2);
event.list2.remove('lingyong_'+event.directresult);
delete storage['lingyong_'+event.directresult];
var name=event.directresult;
player.storage.lingyong3={
name:'mtg_lilianna',
hp:player.hp,
maxHp:player.maxHp,
skills:event.list2.slice(0),
name2:name,
storage:storage,
hs:player.getCards('h'),
es:player.getCards('e')
}
player.reinit('mtg_lilianna',name);
player.maxHp=1;
player.update();
player.addSkill('lingyong3');
player.lose(player.getCards('he'),ui.special)._triggered=null;
var evt=_status.event.getParent('phaseUse');
if(evt&&evt.name=='phaseUse'){
evt.skipped=true;
}
player.insertPhase();
}
},
ai:{
order:1,
result:{
player:function(player,target){
return 1;
// if(player.hp<=1) return 1;
// if(!player.needsToDiscard(player.hp-1)) return 1;
// return 0;
}
}
}
},
lingyong2:{
trigger:{global:'dieAfter'},
forced:true,
filter:function(event,player){
return ![player.name,player.name1,player.name2].contains(event.player.name);
},
content:function(){
var name='lingyong_'+trigger.player.name;
lib.translate[name]=get.rawName(trigger.player.name).replace(/<br>/g,'')+'之俑';
lib.skill[name]={
intro:{
content:'出牌阶段,你可以移去此标记,然后变身为'+get.translation(trigger.player)
},
mark:'character',
onremove:true,
ai:{
lingyong:true
}
}
player.storage[name]=trigger.player;
player.addSkill(name);
}
},
lingyong3:{
trigger:{player:'dieBefore'},
forced:true,
priority:-9,
onremove:true,
mark:'character',
intro:{
content:'死亡前变回莉莲娜'
},
content:function(){
'step 0'
if(player.storage.lingyong3){
player.reinit(player.storage.lingyong3.name2,'mtg_lilianna');
player.maxHp=player.storage.lingyong3.maxHp;
player.hp=player.storage.lingyong3.hp;
player.update();
for(var i in player.storage.lingyong3.storage){
player.storage[i]=player.storage.lingyong3.storage[i];
}
player.addSkill(player.storage.lingyong3.skills);
trigger.cancel();
player.lose(player.getCards('he'),ui.discardPile)._triggered=null;
}
'step 1'
if(player.storage.lingyong3){
player.directgain(player.storage.lingyong3.hs);
player.directequip(player.storage.lingyong3.es);
}
player.removeSkill('lingyong3');
},
ai:{
nosave:true,
threaten:0.8
}
},
mhuanyi:{
round:2,
trigger:{player:'phaseEnd'},
@ -397,6 +571,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mtg_nisha:'妮莎',
mtg_ayeni:'阿耶尼',
mduohun:'夺魂',
mduohun_info:'锁定技,当你解除濒死状态后,令你进入濒死状态的角色失去一点体力',
lingyong:'灵俑',
lingyong2:'灵俑',
lingyong3:'灵俑',
lingyong3_bg:'俑',
lingyong_info:'锁定技每当一名角色死亡你获得一枚对应该角色主将的灵俑标记出牌阶段你可以弃置一枚灵俑标记并变身为标记对应的角色体力上限设为1若如此做你将你的牌移出游戏结束出牌阶段并获得一个额外回合处于变身状态的你在死亡前变回原形',
mbaizhan:'百战',
mbaizhan_info:'锁定技,每当你造成一点伤害,你获得一点护甲',
msilian:'祀炼',

View File

@ -1182,6 +1182,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
keji:{
audio:4,
trigger:{player:'phaseDiscardBefore'},
frequent:function(event,player){
return !player.needsToDiscard();
},
filter:function(event,player){
return player.countUsed('sha')==0;
},

View File

@ -5740,9 +5740,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:'daixing2',
trigger:{player:'phaseEnd'},
direct:true,
filter:function(event,player){
return player.getCards('he')>0;
},
content:function(){
"step 0"
var next=player.chooseToDiscard('请选择发动代形的卡牌','he',[1,player.countCards('he')]);
var next=player.chooseToDiscard(get.prompt2('daixing'),'he',[1,player.countCards('he')]);
next.logSkill='daixing';
next.ai=function(card){
if(ui.selected.cards.length>=2) return 0;
@ -8178,10 +8181,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
filterTarget:function(card,player,target){
if(target.hp<=1) return false;
if(get.mode()=='identity'&&_status.mode=='zhong'&&game.zhu&&!game.zhu.isZhu){
return target==game.zhong;
}
if(target.identity=='zhu'||get.is.jun(target)) return false;
// if(get.mode()=='identity'&&_status.mode=='zhong'&&game.zhu&&!game.zhu.isZhu){
// return target==game.zhong;
// }
// if(target.identity=='zhu'||get.is.jun(target)) return false;
return player!=target;
},
content:function(){
@ -8204,14 +8207,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
targets[0].phase('duijue');
'step 1'
if(targets[0].isDead()||targets[1].isDead()){
ui.duijueLoop.round--;
ui.duijueLoop.innerHTML=get.cnNumber(ui.duijueLoop.round)+'回合';
if(targets[0].isDead()||targets[1].isDead()||ui.duijueLoop.round==0){
event.goto(3);
}
else{
targets[1].phase('duijue');
}
'step 2'
if(targets[0].isDead()||targets[1].isDead()){
ui.duijueLoop.round--;
ui.duijueLoop.innerHTML=get.cnNumber(ui.duijueLoop.round)+'回合';
if(targets[0].isDead()||targets[1].isDead()||ui.duijueLoop.round==0){
event.goto(3);
}
else{
@ -8221,6 +8228,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
for(var i=0;i<event.backup.length;i++){
event.backup[i].in('duijue');
}
if(ui.duijueLoop){
ui.duijueLoop.remove();
delete ui.duijueLoop;
}
},
init:function(player){
player.storage.duijue=false;
@ -8252,17 +8263,29 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.finish();
return;
}
var next=game.createEvent('duijueLoop');
next.targets=[target,player];
next.num=0;
next.setContent(lib.skill.duijue.duijueLoop);
next.backup=[];
var next=player.insertEvent('duijueLoop',lib.skill.duijue.duijueLoop,{
targets:[target,player],
num:0,
backup:[],
source:player,
});
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player&&game.players[i]!=target){
game.players[i].out('duijue');
next.backup.push(game.players[i]);
}
}
if(!ui.duijueLoop){
ui.duijueLoop=ui.create.system('六回合',null,true);
lib.setPopped(ui.duijueLoop,function(){
var uiintro=ui.create.dialog('hidden');
uiintro.add('对决');
uiintro.addText(get.cnNumber(ui.duijueLoop.round)+'回合后结束');
uiintro.add(ui.create.div('.placeholder.slim'));
return uiintro;
},180);
ui.duijueLoop.round=6;
}
}
},
duijue2:{
@ -9690,7 +9713,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xuying_info:'锁定技,每当你即将受到伤害,你防止此伤害,若你此时有手牌,你流失一点体力',
yinguo_info:'除你之外的任意一名角色即将受到受到伤害时,若有伤害来源,你可以弃置一张牌将伤害来源和目标对调',
yueren_info:'每当你使用一张杀,可以进行一次判定,若结果为黑色,你弃置目标一张牌,若结果为红色,你将此杀收回,每回合限发动一次',
duijue_info:'限定技,出牌阶段,你可以指定一名非主公且体力值大于1的其他角色你结束出牌阶段并在回合结束后将所有其他角色移出游戏然后该角色与你轮流进行回合直到有一方死亡为止',
duijue_info:'限定技,出牌阶段,你可以指定一名体力值大于1的其他角色你结束出牌阶段并在回合结束后将所有其他角色移出游戏然后该角色与你轮流进行回合直到有一方死亡或一共进行六个回合为止',
wuying_info:'锁定技你的杀和单体x锦囊目标锁定为范围内的所有角色',
xiehun_info:'锁定技,受到来自你伤害的角色进入混乱状态,行为不受控制,且会攻击队友,直到你的下一回合开始',
jumo_info:'锁定技结束阶段你摸X-1张牌X为未进入混乱状态的角色数与进入混乱状态的角色数之差若为双将则改为X',

View File

@ -6007,28 +6007,6 @@
}
return this;
};
HTMLDivElement.prototype.transform=function(transform){
var str='';
for(var i in transform){
switch(i){
case 'scale':str+='scale('+transform[i]+') ';break;
case 'rotate':str+='rotate('+transform[i]+'deg) ';break;
}
}
if(typeof transform=='object'){
if(transform.left&&transform.top){
str+='translate('+parseInt(transform.left)+'px,'+parseInt(transform.top)+'px) ';
}
else if(transform.left){
str+='translate('+parseInt(transform.left)+'px) ';
}
else if(transform.top){
str+='translate(0,'+parseInt(transform.top)+'px) ';
}
}
this.style.transform=str;
return this;
};
HTMLTableElement.prototype.get=function(row,col){
if(row<this.childNodes.length){
return this.childNodes[row].childNodes[col];
@ -8053,9 +8031,9 @@
ui.css.styles.sheet.insertRule('#window #control{font-family: STHeiti,SimHei,Microsoft JhengHei,Microsoft YaHei,WenQuanYi Micro Hei,Helvetica,Arial,sans-serif}',0);
}
switch(lib.config.glow_phase){
case 'yellow':ui.css.styles.sheet.insertRule('#arena .player:not(.selectable):not(.selected).glow_phase {box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgb(235, 239, 59) 0 0 15px, rgb(199, 64, 64) 0 0 15px !important;}',0);break;
case 'yellow':ui.css.styles.sheet.insertRule('#arena .player:not(.selectable):not(.selected).glow_phase {box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgb(217, 152, 62) 0 0 15px, rgb(217, 152, 62) 0 0 15px !important;}',0);break;
case 'green':ui.css.styles.sheet.insertRule('#arena .player:not(.selectable):not(.selected).glow_phase {box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgba(10, 155, 67, 1) 0 0 15px, rgba(10, 155, 67, 1) 0 0 15px !important;}',0);break;
case 'purple':ui.css.styles.sheet.insertRule('#arena .player:not(.selectable):not(.selected).glow_phase {box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgb(178, 59, 239) 0 0 15px, rgb(199, 64, 101) 0 0 15px !important;}',0);break;
case 'purple':ui.css.styles.sheet.insertRule('#arena .player:not(.selectable):not(.selected).glow_phase {box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgb(189, 62, 170) 0 0 15px, rgb(189, 62, 170) 0 0 15px !important;}',0);break;
}
},
layout:function(layout,nosave){
@ -14418,6 +14396,21 @@
next.setContent('phase');
return next;
},
insertEvent:function(name,content,arg){
var evt=_status.event.getParent('phase');
var next;
if(evt&&evt.parent&&evt.parent.next){
next=game.createEvent(name,null,evt.parent);
}
else{
next=game.createEvent(name);
}
for(var i in arg){
next[i]=arg[i];
}
next.setContent(content);
return next;
},
phase:function(skill){
var next=game.createEvent('phase');
next.player=this;
@ -15575,6 +15568,11 @@
next.setContent('swapHandcards');
return next;
},
directequip:function(cards){
for(var i=0;i<cards.length;i++){
this.$equip(cards[i]);
}
},
directgain:function(cards){
var hs=this.getCards('h');
for(var i=0;i<cards.length;i++){
@ -19375,7 +19373,7 @@
}
this.node.name2.innerHTML=get.translation(card[0])+card[1]+' '+name;
this.suit=card[0];
this.number=card[1];
this.number=parseInt(card[1])||0;
this.name=card[2];
this.classList.add('card');
if(card[3]){
@ -42352,6 +42350,26 @@
return '∞';
}
return num.toString();
},
rawName:function(str){
var str2=lib.translate[str];
if(!str2) return '';
if(str2.indexOf('sp')==0){
str2=str2.slice(2);
}
else if(str2.indexOf('界sp')==0){
str2=str2.slice(3);
}
else if(str2.indexOf('界')==0&&lib.characterPack.refresh&&lib.characterPack.refresh[str]){
str2=str2.slice(1);
}
else if(str2.indexOf('旧')==0&&lib.characterPack.old&&lib.characterPack.old[str]){
str2=str2.slice(1);
}
else if(str2.indexOf('新')==0&&str.indexOf('re_')==0){
str2=str2.slice(1);
}
return str2;
},
slimName:function(str){
var str2=lib.translate[str];

View File

@ -1,5 +1,5 @@
window.noname_update={
version:'1.9.40.1',
version:'1.9.41',
// update:'1.9.38.1',
changeLog:[
'bug修复'