This commit is contained in:
libccy 2017-09-11 16:59:26 +08:00
parent 93f9371093
commit b26a43ad3f
5 changed files with 488 additions and 28 deletions

View File

@ -58,7 +58,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
hs_zhanzhenggushu:['male','wei',6,['biri']],
hs_ronghejuren:['male','shu',8,['ronghuo']],
hs_shanlingjuren:['male','wu',8,['luoshi']],
hs_aedwin:['male','wu',3,['lianzhan']],
hs_aedwin:['male','wu',4,['lianzhan']],
hs_mijiaojisi:['female','wu',3,['kuixin']],
hs_huzhixiannv:['female','wu',3,['jingmeng','qingliu']],
hs_totemic:['male','wu',3,['peiyu']],

View File

@ -1202,6 +1202,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
else{
game.trySkillAudio('zhaxiang',player);
}
},
ai:{
maihp:true
}
},
zhaxiang2:{

View File

@ -8,7 +8,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
caoren:['male','wei',4,['xinjushou','xinjiewei']],
huangzhong:['male','shu',4,['xinliegong']],
weiyan:['male','shu',4,['xinkuanggu','qimou']],
xiaoqiao:['female','wu',3,['xintianxiang','hongyan']],
xiaoqiao:['female','wu',3,['retianxiang','hongyan']],
zhoutai:['male','wu',4,['buqu','fenji']],
sp_zhangjiao:['male','qun',3,['releiji','guidao','huangtian'],['zhu']],
// yuji:['male','qun',3,['guhuo']],
@ -2570,7 +2570,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
wansha:{
locked:true,
global:'wansha2'
global:'wansha2',
trigger:{global:'dying'},
priority:15,
forced:true,
filter:function(event,player){
return _status.currentPhase==player&&event.player!=player;
},
content:function(){}
},
wansha2:{
mod:{
@ -3566,6 +3573,134 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.popup('tianxiang');
}
},
retianxiang:{
audio:'tianxiang',
trigger:{player:'damageBefore'},
direct:true,
filter:function(event,player){
return player.countCards('he',{suit:'heart'})>0&&event.num>0;
},
content:function(){
"step 0"
player.chooseCardTarget({
filterCard:function(card,player){
return get.suit(card)=='heart'&&lib.filter.cardDiscardable(card,player);
},
filterTarget:function(card,player,target){
return player!=target;
},
position:'he',
ai1:function(card){
return 10-get.value(card);
},
ai2:function(target){
var att=get.attitude(_status.event.player,target);
var trigger=_status.event.getTrigger();
var da=0;
if(_status.event.player.hp==1){
da=10;
}
var eff=get.damageEffect(target,trigger.source,target);
if(att==0) return 0.1+da;
if(eff>=0&&att>0){
return att+da;
}
if(att>0&&target.hp>1){
if(target.maxHp-target.hp>=3) return att*1.1+da;
if(target.maxHp-target.hp>=2) return att*0.9+da;
}
return -att+da;
},
prompt:get.prompt('retianxiang'),
prompt2:lib.translate.retianxiang_info
});
"step 1"
if(result.bool){
player.discard(result.cards,ui.special);
var target=result.targets[0];
player.chooseControlList(true,function(event,player){
var target=_status.event.target;
var att=get.attitude(player,target);
if(target.hasSkillTag('maihp')) att=-att;
if(att>0){
return 0;
}
else{
return 1;
}
},
['令'+get.translation(target)+'受到伤害来源对其造成的1点伤害然后摸X张牌X为其已损失体力值且至多为5',
'令'+get.translation(target)+'失去1点体力然后获得'+get.translation(result.cards)]).set('target',target);
player.logSkill(event.name,target);
trigger.untrigger();
trigger.finish();
event.target=target;
event.card=result.cards[0];
}
else{
event.finish();
}
"step 2"
if(typeof result.index=='number'){
if(result.index){
event.target.loseHp().type='retianxiang';
event.target.addSkill('retianxiang3');
event.target.storage.retianxiang3=event.card;
}
else{
event.target.damage(trigger.source).type='retianxiang';
event.target.addSkill('retianxiang2');
if(get.position(event.card)=='s'){
event.card.discard();
}
}
}
},
ai:{
maixie_fake:true,
effect:{
target:function(card,player,target){
if(player.hasSkillTag('jueqing',false,target)) return;
if(get.tag(card,'damage')&&target.countCards('he')>1) return 0.7;
}
},
}
},
retianxiang3:{
trigger:{player:'loseHpAfter'},
forced:true,
popup:false,
filter:function(event){
return event.type=='retianxiang';
},
vanish:true,
content:function(){
player.gain(player.storage.retianxiang3,'gain2');
player.removeSkill('retianxiang3');
},
onremove:function(player){
var card=player.storage.retianxiang3;
if(get.position(card)=='s'){
card.discard();
}
delete player.storage.retianxiang3;
}
},
retianxiang2:{
trigger:{player:'damageAfter'},
forced:true,
popup:false,
filter:function(event){
return event.type=='retianxiang';
},
vanish:true,
content:function(){
if(player.isDamaged()){
player.draw(player.maxHp-player.hp);
}
player.removeSkill('retianxiang2');
},
},
xintianxiang:{
audio:'tianxiang',
trigger:{player:'damageBefore'},
@ -4181,6 +4316,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xinqiangxi:'强袭',
xinjushou:'据守',
xinjiewei:'解围',
retianxiang:'天香',
retianxiang_info:'当你受到伤害时你可以弃置一张红桃手牌防止此次伤害并选择一名其他角色然后你选择一项1.令其受到伤害来源对其造成的1点伤害然后摸X张牌X为其已损失体力值且至多为52.令其失去1点体力然后获得你弃置的牌。',
xinjiewei_info:'你可以将装备区里的牌当【无懈可击】使用;当你从背面翻至正面时,你可以弃置一张牌,然后移动场上的一张牌',
xinjushou_info:'结束阶段,你可以翻面并摸四张牌,然后弃置一张手牌,若以此法弃置的是装备牌,则你改为使用之',
jixi_info:'出牌阶段,你可以把任意一张田当【顺手牵羊】使用',

View File

@ -11919,7 +11919,7 @@
discard:function(){
"step 0"
game.log(player,'弃置了',cards);
player.lose(cards);
player.lose(cards,event.position);
if(event.animate!=false){
event.discardid=lib.status.videoId++;
game.broadcastAll(function(player,cards,id){
@ -15332,6 +15332,9 @@
else if(typeof arguments[i]=='boolean'){
next.animate=arguments[i];
}
else if(get.objtype(arguments[i])=='div'){
next.position=arguments[i];
}
}
if(next.cards==undefined) _status.event.next.remove(next);
next.setContent('discard');
@ -18478,9 +18481,9 @@
},
$skill:function(name,type,color,avatar){
if(typeof type!='string') type='legend';
game.delay(2);
if(!avatar){
this.playerfocus(1500);
game.delay(2);
}
else{
game.addVideo('playerfocus2');
@ -18488,8 +18491,9 @@
ui.arena.classList.add('playerfocus');
setTimeout(function(){
ui.arena.classList.remove('playerfocus');
},1500)
},1800)
});
game.delay(3);
}
var that=this;
setTimeout(function(){
@ -18676,19 +18680,16 @@
ui.create.div('','<div>'+str.split('').join('</div><br><div>')+'</div>',ui.create.div('.text',node));
node.firstChild.firstChild.style.backgroundImage=this.node.avatar.style.backgroundImage;
node.dataset.nature=nature||'unknown';
setTimeout(function(){
// node.lastChild.firstChild.firstChild.classList.add('flashtext');
var num=0;
var nodes=node.lastChild.firstChild.querySelectorAll('div');
var interval=setInterval(function(){
if(num<nodes.length){
nodes[num].classList.add('flashtext');
num++;
}
else{
clearInterval(interval);
}
},100);
var num=0;
var nodes=node.lastChild.firstChild.querySelectorAll('div');
var interval=setInterval(function(){
if(num<nodes.length){
nodes[num].classList.add('flashtext');
num++;
}
else{
clearInterval(interval);
}
},100);
}
else{
@ -18714,7 +18715,7 @@
setTimeout(function(){
node.delete();
node.style.transform='scale(1.5)'
},avatar?1300:1000);
},avatar?1600:1000);
},
$damagepop:function(num,nature,font){
if(typeof num=='number'||typeof num=='string'){
@ -42510,7 +42511,7 @@
for(var j=0;j<lib.character[i][3].length;j++){
var skill=lib.character[i][3][j];
var info=lib.skill[skill];
if(info&&!info.unique&&!info.temp&&!info.sub){
if(info&&!info.unique&&!info.temp&&!info.sub&&!info.fixed){
if(func&&!func(info,skill)) continue;
list.add(skill);
}

View File

@ -114,7 +114,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(lib.storage.current==i){
event.current=player;
player.classList.add('highlight');
if(lib.boss[i]&&lib.boss[i].control){
if(!lib.config.continue_name_boss&&lib.boss[i]&&lib.boss[i].control){
_status.bosschoice=lib.boss[i].control();
_status.bosschoice.name=i;
_status.bosschoice.link=lib.boss[i].controlid||i;
@ -709,11 +709,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
characterPack:{
mode_boss:{
boss_hundun:['male','shen',20,['boss_xiongshou'],['qun','boss','bossallowed'],'qun'],
boss_qiongqi:['male','shen',20,['boss_xiongshou'],['qun','boss','bossallowed'],'qun'],
boss_taotie:['male','shen',20,['boss_xiongshou'],['qun','boss','bossallowed'],'qun'],
boss_taowu:['male','shen',20,['boss_xiongshou'],['qun','boss','bossallowed'],'qun'],
boss_zhuyin:['male','shen',20,['boss_xiongshou'],['qun','hiddenboss','bossallowed'],'qun'],
boss_hundun:['male','shen',20,['boss_xiongshou','boss_wuzang','boss_xiangde','boss_yinzei'],['qun','boss','bossallowed'],'qun'],
boss_qiongqi:['male','shen',16,['boss_xiongshou','boss_zhue','boss_futai','boss_yandu'],['qun','boss','bossallowed'],'qun'],
boss_taotie:['male','shen',20,['boss_xiongshou','boss_tanyu','boss_cangmu','boss_jicai'],['qun','boss','bossallowed'],'qun'],
boss_taowu:['male','shen',16,['boss_xiongshou','boss_minwan','boss_nitai','boss_luanchang'],['qun','boss','bossallowed'],'qun'],
boss_zhuyin:['male','shen',4,['boss_xiongshou'],['qun','hiddenboss','bossallowed'],'qun'],
boss_chiyanshilian:['male','',0,['boss_chiyan','boss_chiyan_intro1','boss_chiyan_intro2','boss_chiyan_intro3'],['boss'],'zhu'],
boss_zhuque:['female','shen',4,['boss_shenyi','boss_fentian','boss_chiyan2'],['shu','hiddenboss','bossallowed']],
@ -1119,7 +1119,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
event.list.remove(ui.selected.buttons[i].link);
}
while(event.enemy.length<3){
event.enemy.push(event.list.randomRemove());
var name=event.list.randomRemove();
if(lib.boss[lib.storage.current].randchoice){
name=lib.boss[lib.storage.current].randchoice(name,event.enemy);
}
event.enemy.push(name);
}
game.uncheck();
if(ui.confirm){
@ -1168,6 +1172,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'2':'boss_zhuyin',
'8':'boss_zhuyin',
},
randchoice:function(){
return lib.boss.boss_taowu.randchoice.apply(this,arguments);
},
controlid:'shenwuzaishi',
control:function(){
return lib.boss.boss_taowu.control.apply(this,arguments);
@ -1185,6 +1192,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'2':'boss_zhuyin',
'8':'boss_zhuyin',
},
randchoice:function(){
return lib.boss.boss_taowu.randchoice.apply(this,arguments);
},
controlid:'shenwuzaishi',
control:function(){
return lib.boss.boss_taowu.control.apply(this,arguments);
@ -1202,6 +1212,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'2':'boss_zhuyin',
'8':'boss_zhuyin',
},
randchoice:function(){
return lib.boss.boss_taowu.randchoice.apply(this,arguments);
},
controlid:'shenwuzaishi',
control:function(){
return lib.boss.boss_taowu.control.apply(this,arguments);
@ -1219,6 +1232,16 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'2':'boss_zhuyin',
'8':'boss_zhuyin',
},
randchoice:function(name,list){
if(Math.random()>1/3){
return name;
}
else{
var arr=['shen_caocao','shen_simayi','shen_guanyu','shen_zhugeliang','shen_zhaoyun','shen_zhouyu','shen_lvmeng','shen_lvbu'];
arr.removeArray(list);
return arr.randomGet();
}
},
controlid:'shenwuzaishi',
control:function(type,control){
if(type=='cancel'){
@ -1478,6 +1501,276 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
},
skill:{
boss_wuzang:{
trigger:{player:'phaseDrawBegin'},
forced:true,
content:function(){
trigger.num+=Math.max(5,Math.floor(player.hp/2))-2;
},
mod:{
maxHandcard:function(player,num){
return num-player.hp;
}
}
},
boss_xiangde:{
trigger:{player:'damageBegin'},
forced:true,
filter:function(event,player){
return event.source&&event.source.isIn()&&event.source!=player&&event.source.getEquip(1);
},
content:function(){
trigger.num++;
}
},
boss_yinzei:{
trigger:{player:'damageAfter'},
forced:true,
logTarget:'source',
filter:function(event,player){
return event.source&&event.source.isIn()&&event.source!=player&&event.source.countCards('he')&&!player.countCards('h');
},
content:function(){
trigger.source.randomDiscard();
}
},
boss_zhue:{
trigger:{global:'damageAfter'},
forced:true,
filter:function(event,player){
return event.source&&event.source.isIn()&&event.source!=player;
},
logTarget:'source',
content:function(){
game.asyncDraw([player,trigger.source]);
}
},
boss_yandu:{
trigger:{global:'phaseAfter'},
filter:function(event,player){
return event.player!=player&&!event.player.getStat('damage')&&event.player.countCards('he');
},
logTarget:'player',
forced:true,
content:function(){
player.gainPlayerCard(trigger.player,true);
}
},
boss_futai:{
global:'boss_futai2',
trigger:{player:'phaseBegin'},
logTarget:function(event,player){
return game.filterPlayer(function(current){
return current.isDamaged();
});
},
forced:true,
content:function(){
'step 0'
var list=game.filterPlayer(function(current){
return current.isDamaged();
}).sortBySeat();
event.list=list;
'step 1'
if(event.list.length){
event.list.shift().recover();
event.redo();
}
}
},
boss_futai2:{
mod:{
cardSavable:function(card,player){
if(card.name=='tao'&&game.hasPlayer(function(current){
return current!=player&&current.hasSkill('boss_futai')&&_status.currentPhase!=current;
})){
return false;
}
},
cardEnabled:function(card,player){
if(card.name=='tao'&&game.hasPlayer(function(current){
return current!=player&&current.hasSkill('boss_futai')&&_status.currentPhase!=current;
})){
return false;
}
},
}
},
boss_luanchang:{
group:['boss_luanchang_begin','boss_luanchang_end'],
subSkill:{
begin:{
trigger:{player:'phaseBegin'},
forced:true,
content:function(){
var list=game.filterPlayer(function(current){
return player.canUse('nanman',current);
}).sortBySeat();
if(list.length){
player.useCard({name:'nanman'},list);
}
}
},
end:{
trigger:{player:'phaseEnd'},
forced:true,
content:function(){
var list=game.filterPlayer(function(current){
return player.canUse('wanjian',current);
}).sortBySeat();
if(list.length){
player.useCard({name:'wanjian'},list);
}
}
}
}
},
boss_nitai:{
group:['boss_nitai_in','boss_nitai_out'],
subSkill:{
in:{
trigger:{player:'damageBefore'},
forced:true,
filter:function(event,player){
return _status.currentPhase==player;
},
content:function(){
trigger.untrigger();
trigger.finish();
}
},
out:{
trigger:{player:'damageBegin'},
forced:true,
filter:function(event,player){
return _status.currentPhase!=player&&event.nature=='fire';
},
content:function(){
trigger.num++;
}
}
}
},
boss_minwan:{
group:['boss_minwan_clear','boss_minwan_draw','boss_minwan_add'],
subSkill:{
clear:{
trigger:{player:'phaseAfter'},
silent:true,
content:function(){
delete player.storage.boss_minwan;
}
},
draw:{
trigger:{player:'useCard'},
forced:true,
filter:function(event,player){
return _status.currentPhase==player&&Array.isArray(player.storage.boss_minwan);
},
content:function(){
player.draw();
}
},
add:{
trigger:{source:'damageAfter'},
filter:function(event,player){
return _status.currentPhase==player;
},
forced:true,
content:function(){
if(!player.storage.boss_minwan){
player.storage.boss_minwan=[player];
}
player.storage.boss_minwan.add(trigger.player);
}
}
},
mod:{
playerEnabled:function(card,player,target){
if(_status.currentPhase==player&&Array.isArray(player.storage.boss_minwan)&&!player.storage.boss_minwan.contains(target)){
return false;
}
}
}
},
boss_tanyu:{
trigger:{player:'phaseDiscardBefore'},
forced:true,
content:function(){
trigger.untrigger();
trigger.finish();
},
group:'boss_tanyu_hp',
subSkill:{
hp:{
trigger:{player:'phaseEnd'},
forced:true,
popup:false,
filter:function(event,player){
return player.isMaxHandcard();
},
content:function(){
player.loseHp();
}
}
}
},
boss_cangmu:{
trigger:{player:'phaseDrawBegin'},
forced:true,
content:function(){
trigger.num+=game.countPlayer()-2;
}
},
boss_jicai:{
trigger:{global:'recoverAfter'},
forced:true,
logTarget:'player',
content:function(){
if(trigger.player==player){
player.draw(2);
}
else{
game.asyncDraw([player,trigger.player]);
}
}
},
boss_xiongshou:{
group:['boss_xiongshou_turn','boss_xiongshou_damage'],
subSkill:{
damage:{
trigger:{source:'damageBegin'},
forced:true,
filter:function(event,player){
return event.notLink()&&event.card&&event.card.name=='sha'&&event.player.hp<player.hp;
},
content:function(){
trigger.num++;
}
},
turn:{
trigger:{player:'turnOverBefore'},
priority:20,
forced:true,
filter:function(event,player){
return !player.isTurnedOver();
},
content:function(){
trigger.untrigger();
trigger.finish();
game.log(player,'取消了翻面');
},
}
},
mod:{
globalFrom:function(from,to,distance){
return distance-1;
}
},
ai:{
noturn:true,
}
},
xuwangzhimian:{
trigger:{player:'phaseDrawBegin'},
forced:true,
@ -5273,6 +5566,32 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
boss_taotie:'饕餮',
boss_zhuyin:'烛阴',
boss_wuzang:'无脏',
boss_wuzang_info:'锁定技摸牌阶段你的摸牌基数改为XX为你的体力值一半且至少为5你的手牌上限基数为0',
boss_xiangde:'相德',
boss_xiangde_info:'锁定技,其他角色对你造成伤害时,若其装备区内有武器牌,此伤害+1',
boss_yinzei:'隐贼',
boss_yinzei_info:'锁定技,若你没有手牌,其他角色对你造成伤害后,随机弃置一张牌',
boss_zhue:'助恶',
boss_zhue_info:'锁定技,每当一名其他角色造成伤害后,你与伤害来源各摸一张牌',
boss_futai:'复态',
boss_futai_info:'锁定技你的回合外其他角色不能使用【桃】你的回合开始时你令所有角色回复1点体力',
boss_yandu:'厌笃',
boss_yandu_info:'锁定技,其他角色回合结束后,若其未造成过伤害,你获得其一张牌',
boss_minwan:'冥顽',
boss_minwan_info:'锁定技,当你于回合内使用牌对其他角色造成伤害后,你于此回合内使用牌只能指定你与这些角色为目标,且你每使用一张牌,摸一张牌',
boss_nitai:'拟态',
boss_nitai_info:'锁定技,防止你于回合内受到的伤害;你于回合外受到火属性伤害+1',
boss_luanchang:'乱常',
boss_luanchang_info:'锁定技,回合开始时,你视为使用【南蛮入侵】;回合结束时,你视为使用【万箭齐发】',
boss_tanyu:'贪欲',
boss_tanyu_info:'锁定技跳过你的弃牌阶段结束阶段若你的手牌数为全场最多失去1点体力',
boss_cangmu:'藏目',
boss_cangmu_info:'锁定技你令摸牌阶段摸牌基数改为XX为存活角色数',
boss_jicai:'积财',
boss_jicai_info:'锁定技,一名角色回复体力后,你与其各摸一张牌',
boss_xiongshou:'凶兽',
boss_xiongshou_info:'锁定技,你使用【杀】对体力值小于你的角色造成的伤害+1你与其他角色距离-1你不能被翻面',
sadouchengbing:'撒豆成兵',
sadouchengbing_info:'出牌阶段对自己使用若你的势力为“神”摸X张牌否则将你手牌补至XX为你的体力上限且至多为5',
yihuajiemu:'移花接木',