Reincarnation

This commit is contained in:
Spmario233 2020-04-18 13:32:41 +08:00 committed by GitHub
parent d8e2b19760
commit cba6a9d193
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
58 changed files with 2658 additions and 1022 deletions

BIN
audio/die/chendeng.mp3 Normal file

Binary file not shown.

BIN
audio/die/yangbiao.mp3 Normal file

Binary file not shown.

BIN
audio/skill/boss_bufo.mp3 Normal file

Binary file not shown.

BIN
audio/skill/boss_dayuan.mp3 Normal file

Binary file not shown.

BIN
audio/skill/boss_diting.mp3 Normal file

Binary file not shown.

BIN
audio/skill/boss_shiyou.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/fengji1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/fengji2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/rangjie1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/rangjie2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/yizheng1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/yizheng2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhaohan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhaohan2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhouxuan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhouxuan2.mp3 Normal file

Binary file not shown.

View File

@ -271,8 +271,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
chongzhu:true,
ai:{
wuxie:function(){
wuxie:function(target,card,player,viewer){
if(_status.event.getRand()<0.5) return 0;
if(player==game.me&&get.attitude(viewer,player)>0){
return 0;
}
},
basic:{
useful:4,

View File

@ -526,6 +526,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:true,
contentBefore:function(){
"step 0"
if(!targets.length){
event.finish();
return;
}
if(get.is.versus()){
player.chooseControl('顺时针','逆时针',function(event,player){
if(player.next.side==player.side) return '逆时针';
@ -1218,6 +1222,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
},
ai:{
wuxie:function(target,card,player,viewer){
if(player==game.me&&get.attitude(viewer,player)>0){
return 0;
}
},
basic:{
order:8,
value:2,

View File

@ -3602,7 +3602,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return player.hasShan()&&player.hp>=event.player.hp;
},
filter:function(event,player){
return player!=event.player&&event.result.length>0;
return player!=event.player&&Array.isArray(event.result)&&event.result.length>0;
},
logTarget:'player',
content:function(){

View File

@ -6,12 +6,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
characterSort:{
mobile:{
mobile_default:["miheng","taoqian","liuzan","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui"],
mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","xin_yuanshao","re_liushan","xin_xiahoudun","re_sp_zhugeliang"],
mobile_default:["miheng","taoqian","liuzan","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng"],
mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","xin_yuanshao","re_liushan","xin_xiahoudun","re_sp_zhugeliang","re_heqi"],
mobile_sunben:["re_sunben"],
},
},
character:{
chendeng:['male','qun',3,['zhouxuan','fengji']],
re_heqi:['male','wu',4,['reqizhou','reshanxi']],
yangbiao:['male','qun',3,['zhaohan','rangjie','yizheng']],
re_sp_zhugeliang:["male","shu",3,["bazhen","rehuoji","rekanpo"],[]],
xin_xiahoudun:['male','wei',4,['reganglie','xinqingjian']],
zhangyì:['male','shu',4,['zhiyi']],
@ -48,6 +51,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']],
},
characterIntro:{
chendeng:'陈登163—201字元龙下邳淮浦今江苏涟水西人。东汉末年将领、官员。沛相陈珪之子。为人爽朗性格沈静智谋过人少年时有扶世济民之志并且博览群书学识渊博。二十五岁时举孝廉任东阳县长。虽然年轻但他能够体察民情抚弱育孤深得百姓敬重。后来徐州牧陶谦提拔他为典农校尉主管一州农业生产。他亲自考察徐州的土壤状况开发水利发展农田灌溉使汉末迭遭破坏的徐州农业得到一定程度的恢复百姓们安居乐业“秔稻丰积”。建安初奉使赴许向曹操献灭吕布之策被授广陵太守。以灭吕布有功加伏波将军。又迁东城太守。年三十九卒。其子陈肃魏文帝时追陈登之功为郎中。',
yangbiao:'杨彪142年225年字文先。弘农郡华阴县今陕西华阴人。东汉末年名臣太尉杨赐之子、名士杨修之父。杨彪少年时受家学熏陶初举孝廉、茂才。其后征拜为议郎参与续写《东观汉记》。任京兆尹时揭发黄门令王甫的贪赃行为使其被定罪诛杀。累任侍中、五官中郎将、卫尉等职。汉献帝时遍历三公司空、司徒、太尉之职。权臣董卓意图迁都时他据理力争。献帝东迁时杨彪尽节护主。曹操挟献帝定都许县后将杨彪下狱获释后又任太常。他见汉室衰微便诈称脚疾不理世事。曹魏建立后拒绝出任太尉改光禄大夫待以客礼。黄初六年225年杨彪去世年八十四。其著作现仅存《答曹公书》一篇。',
zhangyì:'张翼264年字伯恭益州犍为郡武阳县人。三国时期蜀汉将领。历任梓潼、广汉、蜀郡三郡太守出任庲降都督后随诸葛亮和姜维北伐官至左车骑将军领冀州刺史。初封关内侯进爵都亭侯。蜀汉灭亡后魏将钟会密谋造反成都大乱张翼亦为乱兵所杀。张翼是蜀汉第三任庲降都督由于执法严厉不得南夷欢心。在北伐上张翼认为国小民疲不应滥用武力是蜀汉朝廷当时极少敢当朝和姜维争辩北伐问题的大臣。',
jiakui:'贾逵174年—228年本名贾衢字梁道河东襄陵人今山西临汾县。汉末三国时期魏国名臣西晋开国功臣贾充父亲。初为并州郡吏迁渑池县令拜弘农太守历仕曹操、曹丕、曹叡三世是曹魏政权中具有军政才干的人物终其一生为魏国统一事业作出卓越贡献。担任豫州刺史期间兴修水利凿通运河二百余里时称“贾侯渠”便利民生。随同曹丕伐吴进封阳里亭侯加号建威将军。石亭之战率军救出曹休。太和二年去世赠本官谥号为肃《唐会要》将其尊为魏晋八君子之一。',
shenpei:'审配204年字正南魏郡阴安今河北清丰北人。为人正直 袁绍领冀州,审配被委以腹心之任,并总幕府。河北平定,袁绍以审配、逢纪统军事,审配恃其强盛,力主与曹操决战。曾率领弓弩手大破曹军于官渡。官渡战败,审配二子被俘,反因此受谮见疑,幸得逢纪力保。袁绍病死,审配等矫诏立袁尚为嗣,导致兄弟相争,被曹操各个击破。曹操围邺,审配死守数月,终城破被擒,拒不投降,慷慨受死。',
@ -261,6 +266,418 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterFilter:{},
skill:{
fengji:{
audio:2,
trigger:{player:'phaseBegin'},
forced:true,
filter:function(event,player){
return typeof player.storage.fengji=='number'&&player.countCards('h')>=player.storage.fengji;
},
content:function(){
player.draw(2);
player.addTempSkill('fengji3');
},
group:'fengji2',
intro:{
content:'上回合结束时的手牌数:#',
},
},
fengji2:{
trigger:{player:'phaseEnd'},
silent:true,
content:function(){
player.storage.fengji=player.countCards('h');
if(player.hasSkill('fengji')) player.markSkill('fengji');
},
},
fengji3:{
mod:{
maxHandcard:function(player,num){
return num+player.getDamagedHp();
},
},
},
zhouxuan:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
direct:true,
filter:function(event,player){
return player.countCards('he')>0;
},
content:function(){
'step 0'
player.chooseCardTarget({
prompt:get.prompt2('zhouxuan'),
filterCard:lib.filter.cardDiscardable,
filterTarget:lib.filter.notMe,
position:'he',
ai1:function(card){
return 6-get.value(card);
},
ai2:function(target){
var player=_status.event.player;
if(get.attitude(player,target)>0) return Math.max(1,target.hp)*target.countCards('h',function(card){
return target.getUseValue(card)>0;
});
return 0;
},
});
'step 1'
if(result.bool){
player.logSkill('zhouxuan',result.targets[0]);
player.discard(result.cards);
player.addSkill('zhouxuan2');
result.targets[0].addTempSkill('zhouxuan_ai',{player:'phaseUseAfter'});
player.storage.zhouxuan2={};
player.storage.zhouxuan2.player=result.targets[0];
var list=[];
var basic=[];
for(var i=0;i<lib.inpile.length;i++){
var name=lib.inpile[i];
var type=get.type(name,'trick');
if(type=='basic'){
list.push(name);
basic.push(name);
}
else list.add(type);
}
event.basic=basic;
player.chooseControl(list).set('prompt','请选择一种基本牌的名称或非基本牌的类别').set('ai',function(){
var player=_status.event.player;
var target=player.storage.zhouxuan2.player;
var cards=target.getCards('h',function(card){
return target.hasUseTarget(card);
});
var map={};
for(var i=0;i<cards.length;i++){
var type=get.type(cards[i],'trick');
map[type=='basic'?get.name(cards[i]):type]=true;
}
if(map.equip) return 'equip';
if(map.trick) return 'trick';
if(map.sha) return 'sha';
if(map.tao) return 'tao';
return 0;
});
}
else event.finish();
'step 2'
player.storage.zhouxuan2.card=result.control;
if(event.basic.contains(result.control)) player.storage.zhouxuan2.isbasic=true;
player.markSkill('zhouxuan2');
},
},
zhouxuan_ai:{
mod:{
aiOrder:function(player,card,num){
if(game.hasPlayer(function(current){
return current.storage.zhouxuan2&&current.storage.zhouxuan2.player==player&&get.attitude(player,current)>0&&(current.storage.zhouxuan2.isbasic?card.name:get.type(card,'trick'))==current.storage.zhouxuan2.card;
})) return num+10;
}
},
},
zhouxuan2:{
intro:{
mark:function(player,storage){
return get.translation(storage.player)+'使用或打出下一张牌时,若此牌为'+get.translation(storage.card)+(storage.isbasic?'':'牌')+',你观看牌堆顶的三张牌并分配给任意角色';
},
},
audio:'zhouxuan',
forced:true,
charlotte:true,
trigger:{global:['useCard','respond']},
filter:function(event,player){
if(event.zhouxuanable) return true;
if(player.storage.zhouxuan2){
var map=player.storage.zhouxuan2;
if(map.player!=event.player) return false;
delete player.storage.zhouxuan2;
player.unmarkSkill('zhouxuan2');
if(map.card!=(map.isbasic?event.card.name:get.type(event.card,'trick'))) return false;
event.zhouxuanable=true;
return true;
}
return false;
},
logTarget:'player',
content:function(){
"step 0"
event.cards=game.cardsGotoOrdering(get.cards(3)).cards;
"step 1"
if(event.cards.length>1){
player.chooseCardButton('周旋:请选择要分配的牌',true,event.cards,[1,event.cards.length]).set('ai',function(button){
if(ui.selected.buttons.length==0) return 1;
return 0;
});
}
else if(event.cards.length==1){
event._result={links:event.cards.slice(0),bool:true};
}
else{
event.finish();
}
"step 2"
if(result.bool){
for(var i=0;i<result.links.length;i++){
event.cards.remove(result.links[i]);
}
event.togive=result.links.slice(0);
player.chooseTarget('将'+get.translation(result.links)+'交给一名角色',true).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(_status.event.enemy){
return -att;
}
else if(att>0){
return att/(1+target.countCards('h'));
}
else{
return att/100;
}
}).set('enemy',get.value(event.togive[0],player,'raw')<0);
}
"step 3"
if(result.targets.length){
result.targets[0].gain(event.togive,'draw');
player.line(result.targets[0],'green');
game.log(result.targets[0],'获得了'+get.cnNumber(event.togive.length)+'张牌');
event.goto(1);
}
},
},
reshanxi:{
audio:'shanxi',
trigger:{player:'phaseUseBegin'},
direct:true,
filter:function(event,player){
return player.hp>0&&player.countCards('h',function(card){
if(_status.connectMode) return true;
return get.color(card)=='red'&&get.type(card)=='basic';
})>0;
},
content:function(){
'step 0'
player.chooseCardTarget({
filterCard:function(card){
return get.color(card)=='red'&&get.type(card)=='basic'&&lib.filter.cardDiscardable.apply(this,arguments);
},
filterTarget:function(card,player,target){
return player!=target&&target.countCards('he')>0;
},
prompt:get.prompt('reshanxi'),
prompt2:'弃置一张红色基本牌并选择一名其他角色将其的至多X张牌置于其武将牌上直到回合结束。X为你的体力值',
ai1:function(){return -1},
});
'step 1'
if(result.bool){
event.target=result.targets[0];
player.logSkill('reshanxi',event.target);
player.discard(result.cards);
}
else event.finish();
'step 2'
var max=Math.min(player.hp,target.countCards('he'));
if(max>0){
player.choosePlayerCard('he',target,true,[1,max]).set('forceAuto',true).set('prompt','将'+get.translation(target)+'的至多'+get.cnNumber(max)+'张牌置于其武将牌上');
}
else event.finish();
'step 3'
target.addSkill('reshanxi2');
target.storage.reshanxi2.addArray(result.cards);
target.lose(result.cards,ui.special,'toStorage');
game.log(target,'失去了'+get.cnNumber(result.cards.length)+'张牌');
target.markSkill('reshanxi2');
},
},
reshanxi2:{
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[];
},
trigger:{global:'phaseEnd'},
forced:true,
popup:false,
charlotte:true,
filter:function(event,player){
return player.storage.reshanxi2&&player.storage.reshanxi2.length>0;
},
content:function(){
game.log(player,'收回了'+get.cnNumber(player.gain(player.storage.reshanxi2,'draw','fromStorage').cards.length)+'张〖闪袭〗牌');
player.storage.reshanxi2.length=0;
player.removeSkill('reshanxi2');
},
intro:{
onunmark:'throw',
content:'cardCount',
},
},
reqizhou:{
trigger:{player:['equipEnd','loseEnd']},
forced:true,
popup:false,
derivation:['reyingzi','qixi','xuanfeng'],
filter:function(event,player){
if(player.equiping) return false;
var suits=[];
var es=player.getCards('e');
for(var i=0;i<es.length;i++){
suits.add(get.suit(es[i]));
}
if(suits.length>3) suits.length=3;
if(player.additionalSkills.reqizhou){
return player.additionalSkills.reqizhou.length!=suits.length;
}
else{
return suits.length>0;
}
},
content:function(){
lib.skill.reqizhou.init(player,'reqizhou');
},
init:function(player,skill){
var suits=[];
var es=player.getCards('e');
for(var i=0;i<es.length;i++){
suits.add(get.suit(es[i]));
}
if(suits.length>3) suits.length=3;
player.removeAdditionalSkill(skill);
switch(suits.length){
case 1:player.addAdditionalSkill(skill,['reyingzi']);break;
case 2:player.addAdditionalSkill(skill,['reyingzi','qixi']);break;
case 3:player.addAdditionalSkill(skill,['reyingzi','qixi','xuanfeng']);break;
}
},
ai:{
threaten:1.2
}
},
zhaohan:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
return player.phaseNumber<8;
},
check:function(event,player){
return player.phaseNumber<3;
},
content:function(){
if(player.phaseNumber<5){
player.gainMaxHp();
player.recover();
}
else player.loseMaxHp();
},
},
rangjie:{
audio:2,
trigger:{player:'damageEnd'},
direct:true,
content:function(){
'step 0'
event.count=trigger.num;
'step 1'
event.count--;
var choiceList=['获得一张指定类型的牌'];
if(player.canMoveCard()) choiceList.push('移动场上的一张牌');
player.chooseControl('cancel2').set('choiceList',choiceList).set('prompt',get.prompt('rangjie')).set('ai',function(){
var player=_status.event.player;
if(player.canMoveCard(true)) return 1;
return 0;
});
'step 2'
if(result.control=='cancel2') event.finish();
else{
player.logSkill('rangjie');
player.draw();
if(result.index==0){
player.chooseControl('basic','trick','equip').set('prompt','选择获得一种类型的牌').set('ai',function(){
var player=_status.event.player;
if(player.hp<=3&&!player.countCards('h',{name:['shan','tao']})) return 'basic';
if(player.countCards('he',{type:'equip'})<2) return 'equip';
return 'trick';
});
}
else{
player.moveCard(true);
event.goto(4);
}
}
'step 3'
var card=get.cardPile2(function(card){
return get.type(card,'trick')==result.control;
});
if(card) player.gain(card,'gain2','log');
'step 4'
if(event.count>0) event.goto(1);
},
ai:{
maixie:true,
"maixie_hp":true,
effect:{
target:function (card,player,target){
if(get.tag(card,'damage')){
if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
if(!target.hasFriend()) return;
var num=1;
if(get.attitude(player,target)>0){
if(player.needsToDiscard()){
num=0.7;
}
else{
num=0.5;
}
}
if(target.hp>=4) return [1,num*2];
if(target.hp==3) return [1,num*1.5];
if(target.hp==2) return [1,num*0.5];
}
},
},
},
},
yizheng:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.hasPlayer(function(current){
return current.hp<=player.hp&&player.canCompare(current);
});
},
filterTarget:function(card,player,current){
return current.hp<=player.hp&&player.canCompare(current);
},
content:function(){
'step 0'
player.chooseToCompare(target);
'step 1'
if(result.bool){
target.skip('phaseDraw');
target.addTempSkill('yizheng2',{player:'phaseDrawSkipped'});
}
else player.loseMaxHp();
},
ai:{
order:1,
result:{
target:function(player,target){
if(target.skipList.contains('phaseDraw')||target.hasSkill('pingkou')) return 0;
var hs=player.getCards('h').sort(function(a,b){
return b.number-a.number;
});
var ts=target.getCards('h').sort(function(a,b){
return b.number-a.number;
});
if(hs[0].number>ts[0].number) return -1;
return 0;
},
},
},
},
yizheng2:{
mark:true,
intro:{content:'跳过下回合的摸牌阶段'},
},
rw_zhuge_skill:{
equipSkill:true,
audio:true,
@ -2778,6 +3195,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
trigger:{player:'useCard'},
forced:true,
charlotte:true,
//audio:'kuangcai',
silent:true,
popup:false,
@ -2807,6 +3225,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'phaseUseEnd'},
priority:50,
silent:true,
charlotte:true,
content:function(){
game.broadcastAll(function(player){
delete player.forceCountChoose;
@ -3362,6 +3781,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//仲村 ゆり
mobile_sunben:'那个男人',
//孙笨
yangbiao:'杨彪',
zhaohan:'昭汉',
zhaohan_info:'锁定技你的第1-4个准备阶段开始时你加1点体力上限并回复1点体力你的第5-7个准备阶段开始时你减1点体力上限。',
rangjie:'让节',
rangjie_info:'当你受到1点伤害后你可以选择一项并摸一张牌获得牌堆里你选择的类型的一张牌或移动场上的一张牌。',
yizheng:'义争',
yizheng2:'义争',
yizheng_info:'出牌阶段限一次你可以和一名体力值不大于你的其他角色拼点。若你赢其跳过下个摸牌阶段。若你没赢你减1点体力上限。',
re_heqi:'手杀贺齐',
reqizhou:'绮胄',
reqizhou_info:'锁定技你根据装备区里牌的花色数获得以下技能1种或以上〖英姿〗2种或以上〖奇袭〗3种或以上〖旋风〗。',
reshanxi:'闪袭',
reshanxi2:'闪袭',
reshanxi_info:'出牌阶段开始时你可以弃置一张红色基本牌并选择一名有牌的其他角色将其的至多X张牌置于其的武将牌上X为你的体力值。回合结束时该角色获得这些牌。',
chendeng:'陈登',
zhouxuan:'周旋',
zhouxuan2:'周旋',
zhouxuan_info:'结束阶段,你可以弃置一张牌并指定一名角色,然后选择一个基本牌的名称或非基本牌的类型。其使用或打出下一张牌时,若此牌的名称或类型和你选择的相同,则你观看牌堆顶的三张牌,然后将这些牌分配给任意角色。',
fengji:'丰积',
fengji_info:'锁定技,回合结束时,你记录你的手牌数。回合开始时,若你的手牌数不小于你记录的手牌数,则你摸两张牌且本回合手牌上限+X。X为你的体力值',
}
};
});

View File

@ -9,11 +9,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
refresh_huo:["ol_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","re_pangtong","ol_yuanshao","re_pangde"],
refresh_lin:['re_zhurong','re_menghuo','re_dongzhuo','re_sunjian','re_caopi','re_xuhuang'],
refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce'],
refresh_yijiang:['re_xusheng','re_wuguotai','re_gaoshun'],
refresh_yijiang:['re_xusheng','re_wuguotai','re_gaoshun','re_zhangyi'],
},
},
connect:true,
character:{
re_zhangyi:['male','shu',4,['rewurong','shizhi']],
re_xusheng:['male','wu',4,['repojun']],
re_wuguotai:['female','wu',3,['reganlu','buyi']],
re_gaoshun:['male','qun',4,['rexianzhen','rejinjiu']],
@ -92,6 +93,168 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sunben:['zhouyu','taishici','daqiao'],
},
skill:{
rewurong:{
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('h')>0;
},
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')>0;
},
content:function(){
"step 0"
if(target.countCards('h')==0||player.countCards('h')==0){
event.finish();
return;
}
"step 1"
var sendback=function(){
if(_status.event!=event){
return function(){
event.resultOL=_status.event.resultOL;
};
}
};
if(player.isOnline()){
player.wait(sendback);
event.ol=true;
player.send(function(){
game.me.chooseCard(true).set('glow_result',true).ai=function(){
return Math.random();
};
game.resume();
});
}
else{
event.localPlayer=true;
player.chooseCard(true).set('glow_result',true).ai=function(){
return Math.random();
};
}
if(target.isOnline()){
target.wait(sendback);
event.ol=true;
target.send(function(){
var rand=Math.random()<0.4;
game.me.chooseCard(true).set('glow_result',true).ai=function(card){
if(rand) return card.name=='shan'?1:0;
return card.name=='shan'?0:1;
};
game.resume();
});
}
else{
event.localTarget=true;
}
"step 2"
if(event.localPlayer){
event.card1=result.cards[0];
}
if(event.localTarget){
var rand=Math.random()<0.4;
target.chooseCard(true).set('glow_result',true).ai=function(card){
if(rand) return card.name=='shan'?1:0;
return card.name=='shan'?0:1;
};
}
"step 3"
if(event.localTarget){
event.card2=result.cards[0];
}
if(!event.resultOL&&event.ol){
game.pause();
}
"step 4"
try{
if(!event.card1) event.card1=event.resultOL[player.playerid].cards[0];
if(!event.card2) event.card2=event.resultOL[target.playerid].cards[0];
if(!event.card1||!event.card2){
throw('err');
}
}
catch(e){
console.log(e);
event.finish();
return;
}
if(event.card2.number>=10||event.card2.number<=4){
if(target.countCards('h')>2){
event.addToAI=true;
}
}
game.broadcastAll(function(card1,card2){
card1.classList.remove('glow');
card2.classList.remove('glow');
},event.card1,event.card2);
"step 5"
game.broadcastAll(function(){
ui.arena.classList.add('thrownhighlight');
});
game.addVideo('thrownhighlight1');
player.$compare(event.card1,target,event.card2);
game.delay(4);
"step 6"
game.log(player,'展示了',event.card1);
game.log(target,'展示了',event.card2);
var name1=get.name(event.card1);
var name2=get.name(event.card2);
if(name1=='sha'&&name2!='shan'){
//player.discard(event.card1).set('animate',false);
target.$gain2(event.card2);
var clone=event.card1.clone;
if(clone){
clone.style.transition='all 0.5s';
clone.style.transform='scale(1.2)';
clone.delete();
game.addVideo('deletenode',player,get.cardsInfo([clone]));
}
game.broadcast(function(card){
var clone=card.clone;
if(clone){
clone.style.transition='all 0.5s';
clone.style.transform='scale(1.2)';
clone.delete();
}
},event.card1);
target.damage('nocard');
}
else if(name1!='sha'&&name2=='shan'){
//player.discard(event.card1).set('animate',false);
target.$gain2(event.card2);
var clone=event.card1.clone;
if(clone){
clone.style.transition='all 0.5s';
clone.style.transform='scale(1.2)';
clone.delete();
game.addVideo('deletenode',player,get.cardsInfo([clone]));
}
game.broadcast(function(card){
var clone=card.clone;
if(clone){
clone.style.transition='all 0.5s';
clone.style.transform='scale(1.2)';
clone.delete();
}
},event.card1);
player.gainPlayerCard(target,true,'he');
}
else{
player.$gain2(event.card1);
target.$gain2(event.card2);
}
game.broadcastAll(function(){
ui.arena.classList.remove('thrownhighlight');
});
game.addVideo('thrownhighlight2');
},
ai:{
order:6,
result:{
target:-1,
}
}
},
cangzhuo:{
trigger:{player:'phaseDiscardBegin'},
frequent:true,
@ -3643,7 +3806,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
reyingzi:{
audio:2,
audioname:['heqi','sunce','gexuan','re_sunben','re_sunce'],
audioname:['heqi','sunce','gexuan','re_sunben','re_sunce','re_heqi'],
trigger:{player:'phaseDrawBegin2'},
forced:true,
filter:function(event,player){
@ -5435,7 +5598,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_gaoshun:'界高顺',
re_xusheng:'界徐盛',
reganlu:'甘露',
reganlu_info:'出牌阶段限一次,你可以选择装备区牌数之差不小于X的两名角色或包含你在内的两名角色然后交换这两名角色装备区内的牌。',
reganlu_info:'出牌阶段限一次,你可以选择装备区牌数之差的绝对值不小于X的两名角色或包含你在内的两名角色然后交换这两名角色装备区内的牌。X为你已损失的体力值',
repojun:'破军',
repojun2:'破军',
repojun3:'破军',
@ -5451,6 +5614,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shebian_info:'当你的武将牌翻面后,你可以移动场上的一张装备牌。',
cangzhuo:'藏拙',
cangzhuo_info:'弃牌阶段开始时,若你本回合内没有使用过锦囊牌,则你的锦囊牌不计入手牌上限。',
re_zhangyi:'界张嶷',
rewurong:'怃戎',
rewurong_info:'出牌阶段限一次你可以令一名其他角色与你同时展示一张手牌若你展示的是【杀】且该角色展示的不是【闪】则你对其造成1点伤害若你展示的不是【杀】且该角色展示的是【闪】则你获得其一张牌',
refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风',

View File

@ -916,7 +916,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
order:13,
result:{
target:function(player,target){
var hs=player.countCards('h',{name:['sha','juedou']});
if(target.getEquip('bagua')||target.getEquip('rewrite_bagua')) return 0;
var hs=player.countCards('h',function(card){
return ['sha','juedou'].contains(card.name)&&get.effect(target,card,player,player)!=0;
});
var ts=target.hp;
if(hs>=ts&&ts>1) return -1;
return 0;
@ -2994,6 +2997,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
"step 2"
if(result.bool){
result.targets.sortBySeat();
player.line(result.targets,'green');
event.targets=result.targets;
if(!event.targets.length) event.finish();

View File

@ -23,7 +23,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
//wangshuang:['male','wei',5,['spzhuilie']],
wangshuang:['male','wei',5,['spzhuilie'],['unseen']],
sp_gongsunzan:['male','qun',4,['spyicong','sptuji']],
sp_simazhao:['male','wei',3,['spzhaoxin','splanggu']],
sp_wangyuanji:['female','wei',3,['spfuluan','spshude']],
@ -3361,9 +3361,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
player.line(trigger.target,{color:[220, 90, 139]});
player.chooseControl(['basic','trick','equip']).set('ai',function(){
if(!trigger.target.countCards('h','sha')&&trigger.target.countCards('h','shan')) return 'trick';
var player=_status.event.target;
if(!player.countCards('h','sha')&&player.countCards('h','shan')) return 'trick';
return 'basic';
}).set('prompt','请选择一种牌的类别');
}).set('prompt','请选择一种牌的类别').set('target',trigger.target);
'step 1'
trigger.target.chooseCard('he','交给'+get.translation(player)+'一张'+get.translation(result.control)+'牌,否则此【杀】不可被闪避。',function(card){
return get.type(card,'trick')==result.control;
@ -4631,7 +4632,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
forced:true,
filter:function(event,player){
if(_status.currentPhase!=player){
var he=player.getCards('he');
var he=player.getCards('h');
var bool=false;
player.getHistory('gain',function(evt){
if(!bool&&evt&&evt.cards){
@ -8132,14 +8133,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
}
game.delay(2);
trigger.cancel();
trigger.targets.length=0;
trigger.all_excluded=true;
}
else{
event.finish();
}
"step 2"
game.broadcastAll(ui.clear);
},
ai:{
threaten:1.8,
@ -8672,7 +8668,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
mod:{
maxHandcard:function(player,num){
if(player.getEquip(3)||player.getEquip(4)) return;
if(player.getEquip(3)||player.getEquip(4)||player.getEquip(6)) return;
return num+1;
},
targetInRange:function(card,player,target,now){
@ -11211,7 +11207,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var suits=['club','spade','heart','diamond']
for(var i=0;i<trigger.cards2.length;i++){
if(get.position(trigger.cards2[i],true)=='d'){
cards.push(trigger.cards2[i],true);
cards.push(trigger.cards2[i]);
suits.remove(get.suit(trigger.cards2[i]));
}
}
@ -13825,6 +13821,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
thisTarget.draw();event.finish();
return;
}
case 'equip5':{
event.finish();
return;
}
default:{
thisTarget.recover();
event.finish();
@ -15024,9 +15024,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
frequent:true,
filter:function (event,player){
if(!event.targets||!event.targets.length||
event.getParent().triggeredTargets3.length>1||!event.isPhaseUsing()) return false;
event.getParent().triggeredTargets3.length>1||!event.isPhaseUsing(player)) return false;
var evt=player.getLastUsed(1);
if(!evt||!evt.targets||!evt.targets.length||!evt.isPhaseUsing()) return false;
if(!evt||!evt.targets||!evt.targets.length||!evt.isPhaseUsing(player)) return false;
for(var i=0;i<event.targets.length;i++){
if(evt.targets.contains(event.targets[i])) return true;
}
@ -15059,7 +15059,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
aiOrder:function(player,card,num){
if(player.isPhaseUsing()&&(!player.storage.counttrigger||!player.storage.counttrigger.xinfu_lianpian||!player.storage.counttrigger.xinfu_lianpian<3)){
var evt=player.getLastUsed();
if(evt&&evt.targets&&evt.targets.length&&evt.isPhaseUsing()&&game.hasPlayer(function(current){
if(evt&&evt.targets&&evt.targets.length&&evt.isPhaseUsing(player)&&game.hasPlayer(function(current){
return evt.targets.contains(current)&&player.canUse(card,current)&&get.effect(current,card,player,player)>0;
})){
return num+10;
@ -15071,7 +15071,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
effect:{
player:function(card,player,target){
var evt=player.getLastUsed();
if(evt&&evt.targets.contains(target)&&(!player.storage.counttrigger||!player.storage.counttrigger.xinfu_lianpian||!player.storage.counttrigger.xinfu_lianpian<3)&&player.isPhaseUsing()) return [1.5,0];
if(evt&&evt.targets.contains(target)&&(!player.storage.counttrigger||!player.storage.counttrigger.xinfu_lianpian||!player.storage.counttrigger.xinfu_lianpian<3)&&player.isPhaseUsing(player)) return [1.5,0];
}
},
},
@ -15407,16 +15407,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"xinfu_jianjie":{
derivation:["jianjie_faq"],
group:["xinfu_jianjie1","xinfu_jianjie2"],
subSkill:{
phase:{
charlotte:true,
sub:true,
},
off:{
charlotte:true,
sub:true,
},
},
audio:3,
trigger:{
player:"phaseZhunbeiBegin",
@ -15424,15 +15414,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
forced:true,
direct:true,
filter:function (event,player){
if(player.hasSkill('xinfu_jianjie_off')) return false;
if(player.phaseNumber>1) return false;
return !game.hasPlayer(function(current){
return current.hasSkill('smh_huoji')||current.hasSkill('smh_lianhuan');
});
},
content:function (){
"step 0"
player.addTempSkill('xinfu_jianjie_phase');
player.addSkill('xinfu_jianjie_off');
player.chooseTarget('请将「龙印」交给一名角色',true,function(card,player,target){
return target!=player;
}).set('ai',function(target){
@ -15473,10 +15461,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:"phaseUse",
usable:1,
filter:function (event,player){
if(player.phaseNumber==1) return false;
if(!game.hasPlayer(function(current){
return current.hasSkill('smh_huoji')||current.hasSkill('smh_lianhuan');
})) return false;
return !player.hasSkill('xinfu_jianjie_phase');
return true;
},
filterTarget:function (card,player,target){
if(ui.selected.targets.length==1){
@ -16986,7 +16975,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jici_info:'当你因发动〖鼓舌〗而扣置的拼点牌亮出后若点数小于X你可令点数+X若点数等于X你可令你本回合发动〖鼓舌〗的次数上限+1。X为你“饶舌”标记的数量',
shefu:'设伏',
shefu_bg:'伏',
shefu_info:'结束阶段开始时,你可以将一张手牌移出游戏,称为「伏兵」。然后为「伏兵」记录一个基本牌或锦囊牌的名称(须与其他「伏兵」记录的名称均不同)。你的回合外,当有其他角色使用与你记录的「伏兵」牌名相同的牌时,你可以令此牌无效,然后移去该「伏兵」',
shefu_info:'结束阶段开始时,你可以将一张手牌移出游戏,称为「伏兵」。然后为「伏兵」记录一个基本牌或锦囊牌的名称(须与其他「伏兵」记录的名称均不同)。你的回合外,当有其他角色使用与你记录的「伏兵」牌名相同的牌时,你可以取消此牌的所有目标,然后移去该「伏兵」',
benyu:'贲育',
benyu2:'贲育',
benyu_info:'当你受到伤害后若你的手牌数不大于伤害来源的手牌数你可以将手牌摸至与伤害来源手牌数相同至多摸至5张否则你可以弃置大于伤害来源手牌数的手牌然后对其造成1点伤害。',
@ -17291,7 +17280,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shushen_info:'当你回复1点体力时你可以令一名其他角色选择回复1点体力或摸两张牌。',
wuji_info:'觉醒技结束阶段开始时若你于此回合内造成过3点或更多伤害你加1点体力上限并回复1点体力失去〖虎啸〗然后从场上、牌堆或弃牌堆中获得【青龙偃月刀】',
xueji_info:'出牌阶段限一次你可以弃置一张红色牌然后选择至多X名角色横置这些角色并对其中一名角色造成1点火焰伤害。X为你已损失的体力值且至少为1',
huxiao_info:'锁定技,当你造成火属性伤害时,该角色摸一张牌。然后,你于此回合内对其使用牌没有次数和距离限制。',
huxiao_info:'锁定技,当你造成火属性伤害时,该角色摸一张牌。然后,你于此回合内对其使用牌没有次数限制。',
aocai_info:'当你于回合外需要使用或打出一张基本牌时,你可以观看牌堆顶的两张牌。若你观看的牌中有此牌,你可以使用打出之。',
hongyuan_info:'摸牌阶段,你可以少摸一张牌并指定至多两名其他角色。若如此做,这些角色各摸一张牌。',
hongyuan_info_combat:'摸牌阶段,你可以少摸一张牌。若如此做,其他友方角色各摸一张牌。',

View File

@ -1759,7 +1759,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
qixi:{
audio:2,
audioname:['re_ganning'],
audioname:['re_ganning','re_heqi'],
enable:'chooseToUse',
filterCard:function(card){
return get.color(card)=='black';

View File

@ -8311,9 +8311,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
player.syncStorage('quanji');
game.delayx();
"step 2"
"step 1"
target.draw(2);
"step 3"
"step 2"
if(target.countCards('h')>player.countCards('h')){
target.damage();
}
@ -8599,10 +8599,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target:function(card,player,target){
if(card.name!='sha') return;
var players=game.filterPlayer();
if(get.attitude(player,target)<=0){
for(var i=0;i<players.length;i++){
var target2=players[i];
if(player!=target2&&target!=target2&&player.canUse(card,target2,false)&&
get.effect(target2,{name:'shacopy',nature:card.nature,suit:card.suit},player,target)<0){
get.effect(target2,{name:'shacopy',nature:card.nature,suit:card.suit},player,target)>0&&
get.effect(target2,{name:'shacopy',nature:card.nature,suit:card.suit},player,player)<0){
if(target.hp==target.maxHp) return 0.3;
return 0.6;
}
}
}
else{
for(var i=0;i<players.length;i++){
var target2=players[i];
if(player!=target2&&target!=target2&&player.canUse(card,target2,false)&&
get.effect(target2,{name:'shacopy',nature:card.nature,suit:card.suit},player,player)>0){
if(player.canUse(card,target2)) return;
if(target.hp==target.maxHp) return [0,1];
return [0,0];
}
@ -8610,6 +8623,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
}
}
},
gongji:{
enable:'phaseUse',
@ -9826,7 +9840,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
xuanfeng:{
audio:2,
audioname:['boss_lvbu3'],
audioname:['boss_lvbu3','re_heqi'],
trigger:{player:['loseAfter','phaseDiscardEnd']},
direct:true,
filter:function(event,player){

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'My Song Special Ver',
'v1.9.98.6',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -551,6 +551,8 @@ window.noname_asset_list=[
'audio/die/jiakui.mp3',
'audio/die/ol_sp_zhugeliang.mp3',
'audio/die/ol_xiahouyuan.mp3',
'audio/die/chendeng.mp3',
'audio/die/yangbiao.mp3',
'audio/skill/anguo1.mp3',
'audio/skill/anguo2.mp3',
@ -2387,6 +2389,29 @@ window.noname_asset_list=[
'audio/skill/jianshu2.mp3',
'audio/skill/yongdi1.mp3',
'audio/skill/yongdi2.mp3',
'audio/skill/boss_bufo.mp3',
'audio/skill/boss_dayuan.mp3',
'audio/skill/boss_diting.mp3',
'audio/skill/boss_shiyou.mp3',
'audio/skill/boss_wanghun.mp3',
'audio/skill/boss_wangshi.mp3',
'audio/skill/boss_wuliang.mp3',
'audio/skill/fengji1.mp3',
'audio/skill/fengji2.mp3',
'audio/skill/qixi_re_heqi1.mp3',
'audio/skill/qixi_re_heqi2.mp3',
'audio/skill/rangjie1.mp3',
'audio/skill/rangjie2.mp3',
'audio/skill/reyingzi_re_heqi1.mp3',
'audio/skill/reyingzi_re_heqi2.mp3',
'audio/skill/xuanfeng_re_heqi1.mp3',
'audio/skill/xuanfeng_re_heqi2.mp3',
'audio/skill/yizheng1.mp3',
'audio/skill/yizheng2.mp3',
'audio/skill/zhaohan1.mp3',
'audio/skill/zhaohan2.mp3',
'audio/skill/zhouxuan1.mp3',
'audio/skill/zhouxuan2.mp3',
'font/huangcao.ttf',
'font/shousha.ttf',
@ -2890,6 +2915,10 @@ window.noname_asset_list=[
'image/character/key_iwasawa.jpg',
'image/character/key_kengo.jpg',
'image/character/ol_sp_zhugeliang.jpg',
'image/character/chendeng.jpg',
'image/character/re_heqi.jpg',
'image/character/re_zhangyi.jpg',
'image/character/yangbiao.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',
@ -3829,6 +3858,7 @@ window.noname_asset_list=[
'image/mode/boss/card/yihuajiemu.png',
'image/mode/boss/card/qicaishenlu.png',
'image/mode/boss/card/longfenghemingjian.png',
'image/mode/boss/card/boss_mengpohuihun.png',
'image/mode/boss/character/boss_bianchengwang.jpg',
'image/mode/boss/character/boss_chujiangwang.jpg',
@ -3840,6 +3870,8 @@ window.noname_asset_list=[
'image/mode/boss/character/boss_wuguanwang.jpg',
'image/mode/boss/character/boss_yanluowang.jpg',
'image/mode/boss/character/boss_zhuanlunwang.jpg',
'image/mode/boss/character/boss_dizangwang.jpg',
'image/mode/boss/character/boss_mengpo.jpg',
'image/mode/boss/character/boss_xiangliu.jpg',
'image/mode/boss/character/boss_zhuyan.jpg',

View File

@ -1490,6 +1490,8 @@
glass:'勾玉',
round:'国战',
ol:'手杀',
xinglass:'双鱼',
xinround:'OL',
custom:'自定',
},
visualBar:function(node,item,create,switcher){
@ -10226,6 +10228,7 @@
_status.currentPhase=player;
_status.discarded=[];
game.phaseNumber++;
player.phaseNumber++;
game.syncState();
game.addVideo('phaseChange',player);
if(game.phaseNumber==1&&lib.configOL.observe){
@ -13353,7 +13356,11 @@
var sgnatt=get.sgn(att);
if(ui.selected.targets.length==0){
if(att>0){
if(!_status.event.nojudge&&target.countCards('j')) return 14;
if(!_status.event.nojudge&&target.countCards('j',function(card){
return game.hasPlayer(function(current){
return !current.hasJudge(card);
})
})) return 14;
if(target.countCards('e',function(card){
return get.value(card,target)<0&&game.hasPlayer(function(current){
return current!=target&&get.attitude(player,current)<0&&current.isEmpty(get.subtype(card))
@ -13376,13 +13383,18 @@
}
var es=ui.selected.targets[0].getCards('e');
var i;
var att2=get.attitude(player,ui.selected.targets[0]);
var att2=get.sgn(get.attitude(player,ui.selected.targets[0]));
for(i=0;i<es.length;i++){
if(sgnatt!=0&&att2!=0&get.sgn(get.value(es[i]))==sgnatt&&target.isEmpty(get.subtype(es[i]))){
if(sgnatt!=0&&att2!=0&&
get.sgn(get.value(es[i],ui.selected.targets[0]))==-att2&&
get.sgn(get.value(es[i],target))==sgnatt&&
target.isEmpty(get.subtype(es[i]))){
return Math.abs(att);
}
}
if(i==es.length){
if(i==es.length&&(_status.event.nojudge||!ui.selected.targets[0].countCards('j',function(card){
return !target.hasJudge(card);
}))){
return 0;
}
return -att*get.attitude(player,ui.selected.targets[0]);
@ -13409,7 +13421,9 @@
var targets0=_status.event.targets0;
var targets1=_status.event.targets1;
if(get.attitude(player,targets0)>get.attitude(player,targets1)){
return (get.position(button.link)=='j'||get.value(button.link)<0)?10:0;
if(get.position(button.link)=='j') return 12;
if(get.value(button.link,targets0)<0) return 10;
return 0;
}
else{
if(get.position(button.link)=='j') return -10;
@ -13677,6 +13691,7 @@
}
}
"step 4"
if(event.all_excluded) return;
if(!event.triggeredTargets1) event.triggeredTargets1=[];
var target=event.getTriggerTarget(targets,event.triggeredTargets1);
if(target){
@ -13696,6 +13711,7 @@
event.redo();
}
"step 5"
if(event.all_excluded) return;
if(!event.triggeredTargets2) event.triggeredTargets2=[];
var target=event.getTriggerTarget(targets,event.triggeredTargets2);
if(target){
@ -13715,6 +13731,7 @@
event.redo();
}
"step 6"
if(event.all_excluded) return;
if(!event.triggeredTargets3) event.triggeredTargets3=[];
var target=event.getTriggerTarget(targets,event.triggeredTargets3);
if(target){
@ -13734,6 +13751,7 @@
event.redo();
}
"step 7"
if(event.all_excluded) return;
if(!event.triggeredTargets4) event.triggeredTargets4=[];
var target=event.getTriggerTarget(targets,event.triggeredTargets4);
if(target){
@ -13775,6 +13793,7 @@
if(event.forceDie) next.forceDie=true;
}
"step 9"
if(event.all_excluded) return;
if(num==0&&targets.length>1){
event.sortTarget(true);
}
@ -13838,6 +13857,7 @@
}
}
"step 10"
if(event.all_excluded) return;
if(!get.info(event.card,false).multitarget&&num<targets.length-1&&!event.cancelled){
event.num++;
event.goto(9);
@ -16068,6 +16088,7 @@
this.hiddenSkills=[];
this.awakenedSkills=[];
this.forbiddenSkills={};
this.phaseNumber=0;
this.stat=[{card:{},skill:{}}];
this.tempSkills={};
this.storage={};
@ -16261,6 +16282,7 @@
dead:this.isDead(),
linked:this.isLinked(),
turnedover:this.isTurnedOver(),
phaseNumber:this.phaseNumber,
}
for(var i=0;i<state.judges.length;i++){
state.views[i]=state.judges[i].viewAs;
@ -20958,7 +20980,7 @@
}
var range=get.subtype(name);
if(this.isDisabled(range)) return false;
if(['equip3','equip4'].contains(range)&&!this.isDisabled(6)) return false;
if(['equip3','equip4'].contains(range)&&(!this.isDisabled(6)||this.getEquip(6))) return false;
if(!replace&&!this.isEmpty(range)) return false;
return true;
},
@ -23526,7 +23548,7 @@
if(item.indexOf('###')==0){
var items=item.slice(3).split('###');
this.add(items[0],noclick,zoom);
this.addText(items[1],noclick,zoom);
this.addText(items[1],items[1].length<=20,zoom);
}
else if(noclick){
var strstr=item;
@ -25788,6 +25810,7 @@
player.hujia=info.hujia;
player.sex=info.sex;
player.side=info.side;
player.phaseNumber=info.phaseNumber,
player.setNickname();
if(info.dead){
player.classList.add('dead');
@ -28670,7 +28693,7 @@
}
},
prompt:function(){
var str,forced,callback,noinput=false;
var str,forced,callback,noinput=false,str2='';
for(var i=0;i<arguments.length;i++){
if(arguments[i]=='alert'){
forced=true;
@ -28678,7 +28701,12 @@
noinput=true;
}
else if(typeof arguments[i]=='string'){
str=arguments[i];
if(arguments[i].indexOf('###')==0){
var list=arguments[i].slice(3).split('###');
str=list[0];
str2=list[1];
}
else str=arguments[i];
}
else if(typeof arguments[i]=='boolean'){
forced=arguments[i];
@ -28690,14 +28718,14 @@
if(!callback){
return;
}
try{
if(noinput){
throw('e');
}
var result=prompt(str);
callback(result);
}
catch(e){
//try{
// if(noinput){
// throw('e');
// }
// var result=prompt(str);
// callback(result);
//}
//catch(e){
var promptContainer=ui.create.div('.popup-container',ui.window,function(){
if(this.clicked){
this.clicked=false;
@ -28712,6 +28740,7 @@
});
var strnode=ui.create.div('',str||'',dialog);
var input=ui.create.node('input',ui.create.div(dialog));
input.value=str2;
if(noinput){
input.style.display='none';
}
@ -28757,7 +28786,7 @@
}
input.focus();
}
}
//}
},
alert:function(str){
game.prompt(str,'alert');
@ -34732,8 +34761,10 @@
var nodexx=ui.background_music_setting;
var nodeyy=nodexx._link.menu;
var nodezz=nodexx._link.config;
var musicname=lib.device=='android'?prompt('请给这首音乐起个名字'):false;
lib.config.customBackgroundMusic[link]=musicname?musicname:link.slice(link.indexOf('_')+1);
var musicname=link.slice(link.indexOf('_')+1);
game.prompt('###请输入音乐的名称###'+musicname,true,function(str){
if(str) musicname=str;
lib.config.customBackgroundMusic[link]=musicname;
lib.config.background_music=link;
lib.config.all.background_music.add(link);
game.saveConfig('background_music',link);
@ -34744,6 +34775,7 @@
nodezz.updatex.call(nodexx,[]);
_status.music_importing=false;
if(!_status._aozhan) game.playBackgroundMusic();
});
};
if(game.writeFile){
game.writeFile(fileToLoad,'audio/background',link+'.mp3',callback);
@ -42493,6 +42525,7 @@
}
node.node.action=ui.create.div('.action',node.node.avatar);
node.phaseNumber=0;
node.skipList=[];
node.skills=[];
node.initedSkills=[];

View File

@ -128,6 +128,8 @@ window.noname_source_list=[
'theme/style/hp/official.css',
'theme/style/hp/ol.css',
'theme/style/hp/round.css',
'theme/style/hp/xinglass.css',
'theme/style/hp/xinround.css',
'theme/style/hp/image/emotion1.png',
'theme/style/hp/image/emotion2.png',
'theme/style/hp/image/emotion3.png',
@ -148,6 +150,14 @@ window.noname_source_list=[
'theme/style/hp/image/round2.png',
'theme/style/hp/image/round3.png',
'theme/style/hp/image/round4.png',
'theme/style/hp/image/xinglass1.png',
'theme/style/hp/image/xinglass2.png',
'theme/style/hp/image/xinglass3.png',
'theme/style/hp/image/xinglass4.png',
'theme/style/hp/image/xinround1.png',
'theme/style/hp/image/xinround2.png',
'theme/style/hp/image/xinround3.png',
'theme/style/hp/image/xinround4.png',
'node_modules/ws/index.js',
'node_modules/ws/package.json',
'node_modules/ws/lib/BufferPool.js',

View File

@ -1,14 +1,16 @@
window.noname_update={
version:'1.9.98.5.1',
update:'1.9.98.5',
version:'1.9.98.6',
update:'1.9.98.5.1',
changeLog:[
'The final...「My Song」...',
'杨彪,陈登,界张嶷',
'地藏王,孟婆',
'bug修复',
],
files:[
//'card/extra.js',
'card/extra.js',
//'card/huanlekapai.js',
//'card/sp.js',
//'card/standard.js',
'card/standard.js',
//'card/swd.js',
//'card/mtg.js',
//'card/guozhan.js',
@ -22,7 +24,7 @@ window.noname_update={
//'character/gujian.js',
//'character/gwent.js',
//'character/hearth.js',
//'character/mobile.js',
'character/mobile.js',
//'character/mtg.js',
//'character/old.js',
'character/refresh.js',
@ -38,8 +40,8 @@ window.noname_update={
//'extension/boss/extension.js',
//'layout/default/layout.css',
//'layout/nova/layout.css',
'mode/identity.js',
//'mode/doudizhu.js',
//'mode/identity.js',
'mode/doudizhu.js',
'mode/guozhan.js',
//'mode/chess.js',
//'mode/tafang.js',
@ -47,12 +49,22 @@ window.noname_update={
//'mode/stone.js',
//'mode/brawl.js',
//'mode/versus.js',
//'mode/boss.js',
'mode/boss.js',
'game/game.js',
//'game/NoSleep.js',
//'game/config.js',
//'game/package.js',
//'game/asset.js',
//'game/source.js',
'theme/style/hp/xinglass.css',
'theme/style/hp/xinround.css',
'theme/style/hp/image/xinglass1.png',
'theme/style/hp/image/xinglass2.png',
'theme/style/hp/image/xinglass3.png',
'theme/style/hp/image/xinglass4.png',
'theme/style/hp/image/xinround1.png',
'theme/style/hp/image/xinround2.png',
'theme/style/hp/image/xinround3.png',
'theme/style/hp/image/xinround4.png',
]
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
image/character/re_heqi.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -472,6 +472,45 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
},
card:{
"boss_mengpohuihun":{
mode:['boss'],
type:"trick",
modeimage:"boss",
fullskin:true,
selectTarget:-1,
enable:true,
toself:true,
multitarget:true,
global:['boss_mengpohuihun1'],
modTarget:true,
filterTarget:function(card,player,target){
return player==target;
},
content:function(){
game.countPlayer2(function(current){
current.enableSkill('boss_wanghun');
});
},
ai:{
basic:{
order:function(){
return 11;
},
useful:[3,1],
value:10
},
result:{
player:function(player,target){
if(player==game.boss){
return -2;
}
else{
return 5;
}
},
},
},
},
"wushuangfangtianji":{
type:"equip",
modeimage:'boss',
@ -849,7 +888,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
boss_wang:['male','shen',5,['boss_guimei','boss_luolei','huilei','boss_bianshen2'],['shu','hiddenboss','bossallowed']],
boss_liang:['female','shen',5,['boss_guimei','boss_guihuo','boss_minbao','boss_bianshen2'],['shu','hiddenboss','bossallowed']],
boss_qinguangwang:['male','qun',3,['boss_panguan','boss_juhun','boss_wangxiang','boss_xhuanren'],['shu','boss','bossallowed'],'shu'],
boss_qinguangwang:['male','qun',3,['boss_panguan','boss_juhun','boss_wangxiang','boss_newhuanren'],['shu','boss','bossallowed'],'shu'],
boss_chujiangwang:['male','qun',4,['weimu','refankui','boss_bingfeng'],['shu','hiddenboss','bossallowed']],
boss_songdiwang:['male','qun',4,['boss_heisheng','boss_shengfu','enyuan'],['shu','hiddenboss','bossallowed']],
boss_wuguanwang:['male','qun',4,['boss_zhiwang','boss_gongzheng','boss_xuechi'],['shu','hiddenboss','bossallowed']],
@ -859,6 +898,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
boss_dushiwang:['male','qun',4,['boss_remen','boss_zhifen','boss_huoxing'],['shu','hiddenboss','bossallowed']],
boss_pingdengwang:['male','qun',4,['boss_suozu','boss_abi','boss_pingdeng'],['shu','hiddenboss','bossallowed']],
boss_zhuanlunwang:['male','qun',6,['boss_modao','boss_lunhui','boss_wangsheng','boss_zlfanshi'],['shu','hiddenboss','bossallowed']],
boss_mengpo:['female','qun',3,['boss_shiyou','boss_wanghun','boss_wangshi'],['shu','hiddenboss','bossallowed']],
boss_dizangwang:['male','qun',8,['boss_bufo','boss_wuliang','boss_dayuan','boss_diting'],['shu','hiddenboss','bossallowed']],
boss_lvbu1:['male','shen',8,['mashu','wushuang','boss_baonu','boss_jingjia','boss_aozhan'],['qun','boss','bossallowed'],'wei'],
boss_lvbu2:['male','shen',6,['mashu','wushuang','xiuluo','shenwei','shenji'],['qun','hiddenboss','bossallowed'],'qun'],
@ -894,7 +935,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
},
cardPack:{
mode_boss:['honghuangzhili','sadouchengbing','yihuajiemu','guilongzhanyuedao','guofengyupao','chiyanzhenhunqin','qimenbagua','xuwangzhimian','juechenjinge','xiuluolianyuji','chixueqingfeng','longfenghemingjian','qicaishenlu','wushuangfangtianji','shufazijinguan','hongmianbaihuapao','linglongshimandai']
mode_boss:['honghuangzhili','sadouchengbing','yihuajiemu','guilongzhanyuedao','guofengyupao','chiyanzhenhunqin','qimenbagua','xuwangzhimian','juechenjinge','xiuluolianyuji','chixueqingfeng','longfenghemingjian','qicaishenlu','wushuangfangtianji','shufazijinguan','hongmianbaihuapao','linglongshimandai','boss_mengpohuihun']
},
init:function(){
for(var i in lib.characterPack.mode_boss){
@ -1683,10 +1724,17 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
init:function(){
_status.shidianyanluo_level=0;
lib.inpile.remove('muniu');
for(var i=0;i<ui.cardPile.childElementCount;i++){
if(ui.cardPile.childNodes[i].name=='muniu'){
ui.cardPile.childNodes[i].remove();
break;
}
}
_status.additionalReward=function(){
return 500;
}
}
},
},
boss_nianshou:{
chongzheng:0,
@ -1915,6 +1963,138 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
game.changeBoss(result.control);
}
},
boss_newhuanren:{
nobracket:true,
global:'boss_newhuanren2',
trigger:{global:'gameStart'},
popup:false,
forced:true,
superCharlotte:true,
charlotte:true,
fixed:true,
content:function(){
if(get.mode()!='boss') return;
//孟婆
if(!_status.shidianyanluo_mengpo&&Math.random()<=0.4){
if(game.me!=game.boss){
game.boss.changeSeat(6);
}
else{
game.boss.nextSeat.changeSeat(3);
game.boss.previousSeat.changeSeat(5);
}
// game.addBossFellow(game.me==game.boss?1:7,'boss_mengpo');
var fellow=game.addFellow(game.me==game.boss?1:7,'boss_mengpo','zoominanim');
if(_status.shidianyanluo_level!=0){
fellow.directgain(get.cards(4));
}
fellow.side=true;
fellow.identity='zhong';
fellow.setIdentity('zhong');
game.addVideo('setIdentity',fellow,'zhong');
_status.shidianyanluo_mengpo=true;
}
var list=['luxun','re_luxun','zhangchunhua','zuoci','re_zuoci','re_yuji','xin_yuji','jiangfei','kongrong'];//禁将
game.countPlayer(function(current){
if(current!=game.boss){
for(var i=0;i<list.length;i++){
if(current.name==list[i]||current.name2==list[i]){current.init('sunce');}
}
}
});
},
},
boss_newhuanren2:{
trigger:{global:['die']},
forced:true,
priority:-10,
fixed:true,
globalFixed:true,
charlotte:true,
silent:true,
popup:false,
forceDie:true,
filter:function(event,player){
if(lib.config.mode!='boss') return false;
if(_status.shidianyanluo_level==undefined) return false;
return player==game.boss&&event.player==player;
},
content:function(){
var next=game.createEvent('shidianyanluo_huanren',false,trigger.getParent());
next.player=player;
next.forceDie=true;
next.setContent(lib.skill.boss_newhuanren2.contentx);
},
contentx:function(){
'step 0'
game.delay();
var list=game.filterPlayer();
for(var x=0;x<list.length;x++){
list[x].removeSkill('diaohulishan');
list[x].removeSkill('guogong2');
}
var list=game.boss.getEnemies();
for(var x=0;x<list.length;x++){
list[x].removeSkill('boss_wangshi2');
}
'step 1'
var list=[
['boss_chujiangwang','boss_songdiwang','boss_wuguanwang','boss_yanluowang'],
['boss_bianchengwang','boss_taishanwang','boss_dushiwang','boss_pingdengwang'],
['boss_zhuanlunwang'],
][_status.shidianyanluo_level];
//如果mengpo死亡且50回合内通过第三关list[2]变成地藏王
if(game.phaseNumber<=50&&_status.shidianyanluo_level==2&&_status.shidianyanluo_mengpodie==true){
list=['boss_dizangwang'];
}
if(list.length==1) event._result={control:list[0]};
else{
player.chooseControl(list).set('forceDie',true).set('choice',list.randomGet()).set('ai',function(){return _status.event.choice}).prompt='选择下一个登场的武将';
}
'step 2'
_status.shidianyanluo_level++;
game.changeBoss(result.control);
//地藏王登场摸3
if(result.control=='boss_dizangwang'){game.boss.draw(3);}
//计回合数
var level=_status.shidianyanluo_level;
//孟婆
if(!_status.shidianyanluo_mengpo){
if(Math.random()<=0.5||level==2){
if(game.me!=game.boss){
game.boss.changeSeat(6);
}
else{
game.boss.nextSeat.changeSeat(3);
game.boss.previousSeat.changeSeat(5);
}
//game.addBossFellow();
var fellow=game.addFellow(game.me==game.boss?1:7,'boss_mengpo','zoominanim');
if(_status.shidianyanluo_level!=0){
fellow.directgain(get.cards(4));
}
fellow.side=true;
fellow.identity='zhong';
fellow.setIdentity('zhong');
game.addVideo('setIdentity',fellow,'zhong');
_status.shidianyanluo_mengpo=true;
}
}
else{
//移除孟婆
game.countPlayer2(function(current){
if(current.name=='boss_mengpo'){
current.removed=true;
current.classList.add('dead');
current.remove();
game.players.remove(current);
}
});
}
//然后是boss进行回合
game.phaseLoop(game.boss);
}
},
boss_bingfeng:{
trigger:{player:'die'},
forceDie:true,
@ -2116,7 +2296,33 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
},
boss_remen:{
inherit:'boss_manjia',
equipSkill:true,
trigger:{target:['useCardToBefore']},
forced:true,
priority:6,
audio:true,
filter:function(event,player){
if(!player.isEmpty('equip2')) return false;
if(event.card.name=='nanman') return true;
if(event.card.name=='wanjian') return true;
return event.card.name=='sha'&&!get.nature(event.card);
},
content:function(){
trigger.cancel();
},
ai:{
effect:{
target:function(card,player,target,current){
if(!target.isEmpty('equip2')) return;
if(card.name=='nanman'||card.name=='wanjian') return 'zerotarget';
if(card.name=='sha'){
var equip1=player.getEquip(1);
if(equip1&&equip1.name=='zhuque') return 1.9;
if(!card.nature) return 'zerotarget';
}
}
}
}
},
boss_zhifen:{
trigger:{player:'phaseZhunbeiBegin'},
@ -2261,7 +2467,610 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
},
boss_zlfanshi_terra:{charlotte:true},
//孟婆:
"boss_shiyou":{
audio:true,
trigger:{global:'loseEnd'},
filter:function(event,player){
var evt=event.getParent(3);
return event.type=='discard'&&evt.name=='phaseDiscard'&&evt.player==event.player&&evt.player!=player&&event.cards2&&event.cards2.filterInD('d').length>0;
},
content:function(){
"step 0"
event.cards=trigger.cards2.filterInD('d');
"step 1"
var next=player.chooseCardButton(get.prompt('boss_shiyou'),event.cards,[1,event.cards.length]).set('ai',function(button){
return get.value(button.link,player);
}).set('filterButton',function(button){
for(var i=0;i<ui.selected.buttons.length;i++){
if(get.suit(ui.selected.buttons[i].link)==get.suit(button.link)) return false;
}
return true;
});
"step 2"
if(result.bool){
player.gain(result.links,'gain2','log');
}
},
},
"boss_wangshi":{
trigger:{global:'phaseZhunbeiBegin'},
forced:true,
audio:true,
filter:function(event,player){
if(player.getEnemies().contains(event.player)){return true;}
return false;
},
logTarget:'player',
content:function(){
var list=['basic','trick','equip'].randomGet();
trigger.player.addTempSkill('boss_wangshi2');
trigger.player.storage.boss_wangshi2=[list];
game.log(trigger.player,'本回合不能使用或打出',list,'牌');
trigger.player.markSkill('boss_wangshi2');
},
},
"boss_wangshi2":{
unique:true,
charlotte:true,
intro:{
content:function(storage){
return '不能使用或打出'+get.translation(storage)+'牌';
}
},
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[];
},
//mark:true,
onremove:true,
mod:{
cardEnabled2:function(card,player){
if(player.storage.boss_wangshi2.contains(get.type(card,'trick'))) return false;
},
},
},
"boss_mengpohuihun1":{
mode:['boss'],
trigger:{
player:'loseEnd',
global:'cardsDiscardEnd',
},
filter:function(event,player){
for(var i=0;i<event.cards.length;i++){
if(event.cards[i].name=='boss_mengpohuihun'&&get.position(event.cards[i],true)=='d'){
return true;
}
}
return false;
},
forced:true,
popup:false,
content:function(){
var cards=[];
for(var i=0;i<trigger.cards.length;i++){
if(trigger.cards[i].name=='boss_mengpohuihun'&&get.position(trigger.cards[i])=='d'){
cards.push(trigger.cards[i]);
}
}
if(cards.length){
game.cardsGotoSpecial(cards);
game.log(cards,'已被移出游戏');
player.popup('回魂');
}
},
},
"boss_wanghun":{
audio:true,
forced:true,
trigger:{player:'die'},
forceDie:true,
content:function(){
_status.shidianyanluo_mengpodie=true;
var list=player.getEnemies();
if(list.length>0){
for(var x=0;x<list.length;x++){
list[x].removeSkill('boss_wangshi2');
}
var ran1=list.randomGet();//第一个角色
list.remove(ran1);//移除
var skills1=ran1.getSkills(true,false);
if(skills1.length){
for(var i=0;i<skills1.length;i++){
if(get.skills[i]||lib.skill[skills1[i]].charlotte||!lib.translate[skills1[i]+'_info']||lib.skill[skills1[i]].zhuSkill==true){
skills1.splice(i--,1);
}
}//排除技能,然后随机失去一个可以失去的技能
if(skills1.length>0){
skills1=skills1.randomGet();
ran1.disableSkill('boss_wanghun',skills1);
game.log(ran1,'失去了',skills1);
}
else{
game.log(ran1,'没有技能可失去');
}
}
if(list.length>0){
var ran2=list.randomGet();//第二个角色
list.remove(ran2);//移除
var skills2=ran2.getSkills(true,false);
if(skills2.length){
for(var i=0;i<skills2.length;i++){
if(get.skills[i]||lib.skill[skills2[i]].charlotte||!lib.translate[skills2[i]+'_info']||lib.skill[skills2[i]].zhuSkill==true){
skills2.splice(i--,1);
}
}//排除技能,然后随机失去一个可以失去的技能
if(skills2.length>0){
skills2=skills2.randomGet();
ran2.disableSkill('boss_wanghun',skills2);
game.log(ran2,'失去了',skills2);
}
else{
game.log(ran2,'没有技能可失去');
}
}
}
//添加两张回魂
if(get.mode()=='boss'){
var card1=game.createCard('boss_mengpohuihun','heart',3,null);
var card2=game.createCard('boss_mengpohuihun','club',4,null);
var a=[];
if(ui.cardPile.childElementCount<3){
game.boss.getCards(4);
}
for(var i=0;i<ui.cardPile.childElementCount;i++){
a.push(i);
}
ui.cardPile.insertBefore(card1,ui.cardPile.childNodes[a.randomGet()]);
a.push(a.length);
ui.cardPile.insertBefore(card2,ui.cardPile.childNodes[a.randomGet()]);
game.log('牌堆中添加了',card1,card2);
game.updateRoundNumber();
}
}
},
},
//地藏王:
"boss_bufo":{
audio:true,
forced:true,
trigger:{
player:['damageBegin4','phaseZhunbeiBegin'],
},
filter:function(event,player,name){
if(name=='damageBegin4'){return event.num&&event.num>1;}
return true;
},
content:function(){
var name=event.triggername;
if(name=='damageBegin4'){
trigger.num--;return;
}
else{
game.countPlayer(function(target){
if(player!=target&&get.distance(target,player)<=1){
target.damage(1,player,'fire');
}
});
}
},
},
"boss_wuliang":{
forced:true,
audio:true,
trigger:{
global:"gameDrawAfter",
player:['phaseZhunbeiBegin','phaseJieshuBegin','enterGame'],
},
filter:function(event,player,name){
if(name=='gameDrawAfter'||name=='enterGame'){
return true;
}
else if(name=='phaseZhunbeiBegin'){
return player.hp<3;
}
return true;
},
content:function(){
var name=event.triggername;
if(name=='phaseZhunbeiBegin'){
player.recover(3-player.hp);return;
}
else{
player.draw((name=='gameDrawAfter'||name=='enterGame')?3:2);
}
},
},
"boss_dayuan":{
trigger:{
global:"judge",
},
audio:true,
direct:true,
lastDo:true,
content:function (){
'step 0'
var card=trigger.player.judging[0];
var judge0=trigger.judge(card);
var judge1=0;
var choice='cancel2';
event.suitchoice='cancel2';
var attitude=get.attitude(player,trigger.player);
var list=[];
event.suitx=['heart','diamond','club','spade'];
for(var x=0;x<4;x++){
for(var i=1;i<14;i++){
list.add(i);
var judge2=(trigger.judge({
name:get.name(card),
suit:event.suitx[x],
number:i,
nature:get.nature(card),
})-judge0)*attitude;
if(judge2>judge1){
choice=i;
event.suitchoice=event.suitx[x];
judge1=judge2;
}
}
}
list.push('cancel2');
event.suitx.push('cancel2');
player.chooseControl(list).set('ai',function(){
return _status.event.choice;
}).set('choice',choice).prompt=get.prompt2(event.name);
'step 1'
if(result.control!='cancel2'){
if(!event.logged){
event.logged=true;
player.logSkill(event.name,trigger.player);
}
game.log(trigger.player,'判定结果点数为','#g'+result.control);
player.popup(result.control,'fire');
if(!trigger.fixedResult) trigger.fixedResult={};
trigger.fixedResult.number=result.control;
}
player.chooseControl(event.suitx).set('ai',function(){
return _status.event.choice;
}).set('choice',event.suitchoice).prompt=get.prompt2(event.name);
'step 2'
if(result.control!='cancel2'){
if(!event.logged){
event.logged=true;
player.logSkill(event.name,trigger.player);
}
game.log(trigger.player,'判定结果花色为','#g'+result.control);
player.popup(result.control,'fire');
if(!trigger.fixedResult) trigger.fixedResult={};
trigger.fixedResult.suit=result.control;
if(result.control=='club'||result.control=='spade'){
trigger.fixedResult.color='black';
}
else if(result.control=='heart'||result.control=='diamond'){
trigger.fixedResult.color='red';
}
}
},
},
"boss_diting":{
audio:true,
mod:{
globalFrom:function (from,to,distance){
return distance-1;
},
globalTo:function (from,to,distance){
return distance+1;
},
},
init:function(player){
player.$disableEquip('equip3');
player.$disableEquip('equip4');
},
enable:"phaseUse",
position:'h',
filter:function (event,player){
return player.countCards('he',{subtype:['equip3','equip4','equip6']})>0;
},
filterCard:function (card){
return get.subtype(card)=='equip3'||get.subtype(card)=='equip4'||get.subtype(card)=='equip6';
},
check:function (card){
if(_status.event.player.isDisabled(get.subtype(card))) return 5;
return 3-get.value(card);
},
content:function(){
player.draw();
},
discard:false,
visible:true,
loseTo:'discardPile',
prompt:"将一张坐骑牌置入弃牌堆并摸一张牌",
delay:0.5,
prepare:function (cards,player){
player.$throw(cards,1000);
game.log(player,'将',cards,'置入了弃牌堆');
},
ai:{
order:10,
result:{
player:1,
},
},
},
/*
"boss_sdyl_level":{
trigger:{global:'gameStart'},
forced:true,
superCharlotte:true,
charlotte:true,
fixed:true,
content:function(){},
contentplayer:function(player){
var list=[1,2,3,4,5];
var list2=["boss_sdyl_playerlevel1","boss_sdyl_playerlevel2","boss_sdyl_playerlevel3","boss_sdyl_playerlevel4","boss_sdyl_playerlevel5"];
player.removeAdditionalSkill('boss_sdyl_level');
var num=list.randomGet();
player.storage.boss_sdyl_level=num;
var list3=list2.concat();
list3.length=num;
player.addAdditionalSkill('boss_sdyl_level',list3);
game.log(player,'的等阶为',num);
if(num>1){
var a=function(card){
return get.type(card)=='equip';
};
for(var i=0;i<ui.cardPile.childNodes.length;i++){
if(a(ui.cardPile.childNodes[i])){
player.chooseUseTarget(ui.cardPile.childNodes[i],'noanimate','nopopup',true);
ui.cardPile.removeChild(ui.cardPile.childNodes[i]);
player.update();
game.delay(2);
break;
}
}
}
},
contentboss:function(boss){
var list=[1,2,3,4,5];
var list2=["boss_sdyl_bosslevel1","boss_sdyl_bosslevel2","boss_sdyl_bosslevel3","boss_sdyl_bosslevel4","boss_sdyl_bosslevel5"];
boss.removeAdditionalSkill('boss_sdyl_level');
var num=list.randomGet();
boss.storage.boss_sdyl_level=num;
var list3=list2.concat();
list3.length=num;
boss.addAdditionalSkill('boss_sdyl_level',list3);
game.log(boss,'的等阶为',num);
if(num>1){
var a=function(card){
return get.type(card)=='equip';
};
for(var i=0;i<ui.cardPile.childNodes.length;i++){
if(a(ui.cardPile.childNodes[i])){
boss.chooseUseTarget(ui.cardPile.childNodes[i],'noanimate','nopopup',true);
ui.cardPile.removeChild(ui.cardPile.childNodes[i]);
boss.update();
game.delay(2);
break;
}
}
}
},
},
"boss_sdyl_playerlevel1":{
fixed:true,
globalFixed:true,
charlotte:true,
silent:true,
popup:false,
forced:true,
},
"boss_sdyl_playerlevel3":{
fixed:true,
globalFixed:true,
charlotte:true,
silent:true,
popup:false,
forced:true,
init:function(player){
player.maxHp++;
player.hp++;
player.update();
},
mod:{
cardUsable:function (card,player,num){
if(card.name=='sha') return num+=1;
},
},
},
"boss_sdyl_playerlevel2":{
fixed:true,
globalFixed:true,
charlotte:true,
silent:true,
popup:false,
forced:true,
},
"boss_sdyl_playerlevel4":{
fixed:true,
globalFixed:true,
charlotte:true,
silent:true,
popup:false,
forced:true,
trigger:{player:'phaseDrawBegin2'},
forced:true,
filter:function (event,player){
return !event.numFixed;
},
content:function(){
trigger.num++;
},
},
"boss_sdyl_playerlevel5":{
init:function(player){
player.storage.boss_sdyl_playerlevel5=false;
player.maxHp++;
player.hp++;
player.update();
},
audio:'niepan',
unique:true,
enable:'chooseToUse',
mark:true,
skillAnimation:true,
animationStr:'重生',
limited:true,
animationColor:'orange',
filter:function(event,player){
if(player.storage.boss_sdyl_playerlevel5) return false;
if(event.type=='dying'){
if(player!=event.dying) return false;
return true;
}
return false;
},
content:function(){
'step 0'
player.awakenSkill('boss_sdyl_playerlevel5');
player.storage.boss_sdyl_playerlevel5=true;
player.discard(player.getCards('j'));
'step 1'
player.link(false);
'step 2'
player.turnOver(false);
'step 3'
player.drawTo(Math.min(5,player.maxHp));
'step 4'
player.recover(player.maxHp-player.hp);
},
ai:{
order:1,
skillTagFilter:function(player){
if(player.storage.boss_sdyl_playerlevel5) return false;
if(player.hp>0) return false;
},
save:true,
result:{
player:function(player){
if(player.hp<=0) return 10;
if(player.hp<=2&&player.countCards('he')<=1) return 10;
return 0;
}
},
threaten:function(player,target){
if(!target.storage.boss_sdyl_playerlevel5) return 0.6;
}
},
intro:{
content:'limited'
}
},
"boss_sdyl_bosslevel1":{
fixed:true,
globalFixed:true,
charlotte:true,
silent:true,
popup:false,
forced:true,
},
"boss_sdyl_bosslevel3":{
fixed:true,
globalFixed:true,
charlotte:true,
silent:true,
popup:false,
forced:true,
init:function(player){
player.maxHp++;
player.hp++;
player.update();
},
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
content:function(){
var card=get.cardPile('sha');
if(card){
player.gain(card);
}
},
mod:{
cardUsable:function (card,player,num){
if(card.name=='sha') return num+=1;
},
},
},
"boss_sdyl_bosslevel2":{
fixed:true,
globalFixed:true,
charlotte:true,
silent:true,
popup:false,
forced:true,
},
"boss_sdyl_bosslevel4":{
fixed:true,
globalFixed:true,
charlotte:true,
silent:true,
popup:false,
forced:true,
trigger:{player:'phaseDrawBegin2'},
forced:true,
filter:function (event,player){
return !event.numFixed;
},
content:function(){
trigger.num++;
},
mod:{
maxHandcard:function (player,num){
return num+=1;
},
},
},
"boss_sdyl_bosslevel5":{
fixed:true,
globalFixed:true,
charlotte:true,
silent:true,
popup:false,
forced:true,
init:function(player){
player.maxHp++;
player.hp++;
player.update();
if(_status.shidianyanluo_level&&_status.shidianyanluo_level>0){
var players=game.filterPlayer(function(current){return current!=player;});
player.useCard({name:'nanman'},false,players);
}
},
trigger:{
source:"damageBegin4",
player:"useCardAfter",
global:'gameDrawAfter',
},
filter:function (event,player,name){
if(name=='gameDrawAfter'){
if(!_status.shidianyanluo_level||_status.shidianyanluo_level==0){
var players=game.filterPlayer(function(current){return current!=player;});
player.useCard({name:'nanman'},false,players);
}
return false;
}
if(player.storage.boss_sdyl_bosslevel5) return false;
if(name=='damageBegin4'){
if(!event.card||event.card.name!='nanman') return false;
return true;
}else if(name=='useCardAfter'){
if(!event.card||event.card.name!='nanman') return false;
player.storage.boss_sdyl_bosslevel5=true;
return false;
}
},
content:function (){
trigger.num++;
},
},
*/
"boss_jingjia":{},
"boss_aozhan":{
forced:true,
@ -7783,14 +8592,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
charlotte:true,
locked:true,
init:function(player){
window.setInterval(function(){
var a=window.setInterval(function(){
if(player.hasSkill('boss_jiang')){
player.storage.boss_jiang=true;
}
else{
game.addGlobalSkill('boss_jiang');
game.addGlobalSkill('boss_jiang_use');
window.clearInterval(this);
window.clearInterval(a);
}
},1000);
},
@ -8096,7 +8905,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
longfenghemingjian_info:'你使用的【雷杀】或【火杀】指定目标后,可令对方选择弃置一张牌或令你摸一张牌',
qicaishenlu:'七彩神鹿',
qicaishenlu_info:'锁定技,你计算与其他角色的距离时-1当你造成属性伤害时你令此伤害+1。',
boss_mengpohuihun:'回魂',
boss_mengpohuihun_info:'若场上有角色在本局游戏中因孟婆的【忘魂】失去过技能,则令其恢复该技能;此牌进入弃牌堆后,会被销毁。',
honghuangzhili:'洪荒之力',
honghuangzhili_cbg:'洪',
honghuangzhili_info:'若该角色的势力是神,你获得其一张牌,其【神裔】无效直到其下家的回合(这个下家是动态变化的,会随着一个人的死或者复活而变化)开始;若该角色的势力不是神,其翻面。',
@ -8503,7 +9313,49 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
boss_wangsheng_info:'锁定技,你的出牌阶段开始时,视为你随机使用一张【南蛮入侵】或【万箭齐发】。',
boss_zlfanshi:'反噬',
boss_zlfanshi_info:'锁定技每个回合你受到第一次伤害后若再次受到伤害则对随机一名其他角色造成1点伤害。',
//孟婆:
"boss_mengpo":"孟婆",
"boss_shiyou":"拾忧",
"boss_shiyou_info":"其他角色于弃牌阶段弃置的牌进入弃牌堆前,你可以选择其中任意张花色各不相同的牌获得之。",
"boss_wanghun":"忘魂",
"boss_wanghun_info":"锁定技你死亡时令随机两名敌方角色各随机失去一个技能主公技除外并在牌堆中加入2张回魂。(回魂只能在挑战模式出现)",
"boss_wangshi":"往事",
"boss_wangshi_info":"锁定技,你存活时,敌方角色的回合开始时,令其于本回合不能使用或打出随机一种类型的牌(基本、锦囊、装备)。",
"boss_wangshi2":"往事",
"boss_wangshi2_info":"",
//地藏王:
"boss_dizangwang":"地藏王",
"boss_bufo":"不佛",
"boss_bufo_info":"锁定技你的回合开始时你对所有至你距离为1的其他角色造成1点火焰伤害你受到大于等于2的伤害时令此伤害-1。",
"boss_wuliang":"无量",
"boss_wuliang_info":"锁定技你登场时额外摸3张牌结束阶段开始时你摸两张牌你的回合开始时若你当前体力小于3则回复至3。",
"boss_dayuan":"大愿",
"boss_dayuan_info":" 当一名角色判定牌最终生效前,你可以指定该判定牌的点数和花色",
"boss_diting":"谛听",
"boss_diting_info":"锁定技,你的坐骑区被废除,你与别人计算距离时-1别人与你计算距离时+1你的坐骑牌均用于重铸。",
/* //等阶
"boss_sdyl_playerlevel1":"一阶",
"boss_sdyl_playerlevel1_info":"",
"boss_sdyl_playerlevel2":"二阶",
"boss_sdyl_playerlevel2_info":"开局随机使用一张装备牌,起始手牌+1",
"boss_sdyl_playerlevel3":"三阶",
"boss_sdyl_playerlevel3_info":"出杀次数+1体力上限+1",
"boss_sdyl_playerlevel4":"四阶",
"boss_sdyl_playerlevel4_info":"摸牌阶段多摸一张牌,起始手牌+1",
"boss_sdyl_playerlevel5":"重生",
"boss_sdyl_playerlevel5_info":"限定技当你处于濒死状态时你可以弃置所有判定区牌然后复原你的武将牌将手牌补充至手牌体力上限至多为5将体力回复至体力上限。",
"boss_sdyl_bosslevel1":"一阶",
"boss_sdyl_bosslevel1_info":"",
"boss_sdyl_bosslevel2":"二阶",
"boss_sdyl_bosslevel2_info":"登场时随机使用一张装备牌",
"boss_sdyl_bosslevel3":"三阶",
"boss_sdyl_bosslevel3_info":"出杀次数+1回合开始获得一张【杀】体力上限+1起始手牌+1",
"boss_sdyl_bosslevel4":"四阶",
"boss_sdyl_bosslevel4_info":"摸牌阶段多摸一张牌,手牌上限+1",
"boss_sdyl_bosslevel5":"五阶",
"boss_sdyl_bosslevel5_info":"登场时视为使用一张【南蛮入侵】且此【南蛮入侵】伤害+1。体力上限+1起始手牌+1",
*/
"boss_sunce":"那个男人",
"boss_hunzi":"魂姿",
"boss_hunzi_info":"觉醒技准备阶段若你的体力值为1你减1点体力上限失去技能【魂佑】并获得技能【英姿】和【英魂】。",
@ -8518,6 +9370,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
boss_xhuanren_info:'',
boss_xhuanren_info_boss:'第一关:挑战秦广王。<br>第二关:挑战楚江王,宋帝王,五官王,阎罗王中的一个。<br>第三关:挑战卞城王,泰山王,都市王,平等王中的一个。<br>第四关:挑战转轮王。',
boss_newhuanren:'关卡说明',
boss_newhuanren_info:'',
boss_newhuanren_info_boss:'第一关:挑战秦广王。<br>第二关:挑战楚江王,宋帝王,五官王,阎罗王中的一个。<br>第三关:挑战卞城王,泰山王,都市王,平等王中的一个。<br>第四关:挑战转轮王。<br>注:孟婆将在每局前三个阶段随机一个阶段登场<br>地藏王登场规则为50回合内通过第三关并且在前三关中成功击杀孟婆。<li>选陆逊左慈张春华于吉蒋费孔融自动变孙笨',
mode_boss_card_config:'挑战卡牌',
mode_boss_character_config:'挑战武将',
},

View File

@ -80,6 +80,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
game.gameDraw(game.zhu||_status.firstAct||game.me);
if(_status.connectMode&&lib.configOL.change_card) game.replaceHandcards(game.players.slice(0));
game.phaseLoop(game.zhu||_status.firstAct||game.me);
game.zhu.showGiveup();
},
game:{
addRecord:function(bool){
@ -830,6 +831,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
content:function(){
player.chooseDrawRecover(2);
player.showGiveup();
},
},
},

View File

@ -2277,62 +2277,24 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
},
"new_keji":{
audio:"keji",
group:["new_keji_count","new_keji_reset","new_keji_judge"],
subSkill:{
reset:{
trigger:{
player:"phaseAfter",
},
priority:1,
silent:true,
content:function (){
player.storage.keji_type=[];
player.storage.keji_color=[];
player.storage.keji_suit=[];
},
sub:true,
forced:true,
popup:false,
},
count:{
trigger:{
player:"useCard",
},
silent:true,
content:function (){
if(!player.storage.keji_type){
player.storage.keji_type=[];
}
if(!player.storage.keji_color){
player.storage.keji_color=[];
}
if(!player.storage.keji_suit){
player.storage.keji_suit=[];
}
player.storage.keji_type.add(get.type(trigger.card));
player.storage.keji_color.add(get.color(trigger.card));
player.storage.keji_suit.add(get.suit(trigger.card));
},
sub:true,
forced:true,
popup:false,
},
judge:{
audio:"keji",
forced:true,
trigger:{
player:"phaseDiscardBefore",
player:"phaseDiscardBegin",
},
filter:function (event,player){
return !player.storage.keji_color||player.storage.keji_color.length<2;
var list=[];
player.getHistory('useCard',function(evt){
if(evt.isPhaseUsing(player)){
var color=get.color(evt.card);
if(color!='nocolor') list.add(color);
}
});
return list.length<=1;
},
content:function (){
player.addTempSkill('keji_add','phaseAfter');
},
sub:true,
},
},
},
"keji_add":{
mod:{
@ -6230,6 +6192,18 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
player.reinit(from,to,4);
if(lib.skill[to]) game.trySkillAudio(to,player);
player.showCharacter(0);
var yelist=[];
for(var i=0;i<game.players.length;i++){
if(game.players[i].identity=='ye'&&game.players[i]._group==player.group){
yelist.push(game.players[i]);
}
}
game.broadcastAll(function(list,group){
for(var i=0;i<list.length;i++){
list[i].identity=group;
list[i].setIdentity();
}
},yelist,player.group);
}
else event.finish();
'step 2'
@ -8076,18 +8050,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
this.group=lib.character[this.name1][1];
if(get.is.jun(this.name1)&&this.isAlive()){
this.identity=this.group;
var yelist=[];
for(var i=0;i<game.players.length;i++){
if(game.players[i].identity=='ye'&&game.players[i]._group==this.group){
yelist.push(game.players[i]);
}
}
game.broadcastAll(function(list,group){
for(var i=0;i<list.length;i++){
list[i].identity=group;
list[i].setIdentity();
}
},yelist,this.group);
}
else if(this.wontYe()){
this.identity=this.group;

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 963 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,52 @@
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){
background: url('image/xinglass1.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
-webkit-filter:none;
border-radius: 0px;
}
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){
background: url('image/xinglass2.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
-webkit-filter:none;
border-radius: 0px;
}
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){
background: url('image/xinglass3.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
-webkit-filter:none;
border-radius: 0px;
}
.hp:not(.text):not(.actcount):not(.treasure)>.lost{
background: url('image/xinglass4.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
border-radius: 0px;
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){
transform: scale(1.6);
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){
transform: scale(1.6);
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){
transform: scale(1.6);
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{
transform: scale(1.6);
}
.button.newstyle>.hp>.text{
margin-left: 5px;
}

View File

@ -0,0 +1,52 @@
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){
background: url('image/xinround1.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
-webkit-filter:none;
border-radius: 0px;
}
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){
background: url('image/xinround2.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
-webkit-filter:none;
border-radius: 0px;
}
.hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){
background: url('image/xinround3.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
-webkit-filter:none;
border-radius: 0px;
}
.hp:not(.text):not(.actcount):not(.treasure)>.lost{
background: url('image/xinround4.png');
box-shadow: none;
border: none;
background-size: 100% 100%;
transform: scale(1.4);
border-radius: 0px;
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="high"]>div:not(.lost){
transform: scale(1.6);
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="mid"]>div:not(.lost){
transform: scale(1.6);
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)[data-condition="low"]>div:not(.lost){
transform: scale(1.6);
}
#arena.oldlayout .player .hp:not(.text):not(.actcount):not(.treasure)>.lost{
transform: scale(1.6);
}
.button.newstyle>.hp>.text{
margin-left: 5px;
}