This commit is contained in:
Spmario233 2021-12-26 22:29:48 +08:00
parent 1f81d82fa2
commit 37e8712d98
90 changed files with 1543 additions and 488 deletions

BIN
audio/die/liuyong.mp3 Normal file

Binary file not shown.

BIN
audio/die/mayuanyi.mp3 Normal file

Binary file not shown.

BIN
audio/die/re_xunchen.mp3 Normal file

Binary file not shown.

BIN
audio/die/simafu.mp3 Normal file

Binary file not shown.

BIN
audio/die/sp_gaolan.mp3 Normal file

Binary file not shown.

BIN
audio/die/sp_huaman.mp3 Normal file

Binary file not shown.

BIN
audio/die/sp_wangshuang.mp3 Normal file

Binary file not shown.

BIN
audio/die/sunyi.mp3 Normal file

Binary file not shown.

BIN
audio/die/tongyuan.mp3 Normal file

Binary file not shown.

Binary file not shown.

BIN
audio/die/yanpu.mp3 Normal file

Binary file not shown.

BIN
audio/die/zuofen.mp3 Normal file

Binary file not shown.

BIN
audio/skill/anyong1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/anyong2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/bihuo1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/bihuo2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/binghuo1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/binghuo2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/chaofeng1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/chaofeng2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/chenjie1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/chenjie2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/chuanshu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/chuanshu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/chuanyun.mp3 Normal file

Binary file not shown.

BIN
audio/skill/fengxiang1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/fengxiang2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/huantu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/huantu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/jibing1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/jibing2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/lisi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/lisi2.mp3 Normal file

Binary file not shown.

Binary file not shown.

BIN
audio/skill/moucuan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/moucuan2.mp3 Normal file

Binary file not shown.

Binary file not shown.

BIN
audio/skill/refenglve1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/refenglve2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/shanxie1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/shanxie2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/spdengli1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/spdengli2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/spfangzong1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/spfangzong2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/spjungong1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/spjungong2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/spxizhan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/spxizhan2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/wangjing1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/wangjing2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xinghan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xinghan2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xunde1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xunde2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/yiyong1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/yiyong2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zaoli1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zaoli2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhaosong1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhaosong2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhenge1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhenge2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhuning1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhuning2.mp3 Normal file

Binary file not shown.

View File

@ -3282,7 +3282,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
var num=player.getHistory('skipped').length;
event.num=num;
player.chooseToMove(num,'瞬影:移动至多'+get.cnNumber(num)+'格或失去1点体力');
player.chooseToMoveChess(num,'瞬影:移动至多'+get.cnNumber(num)+'格或失去1点体力');
'step 1'
if(!result.bool) player.loseHp();
else player.draw(num);

View File

@ -307,6 +307,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.loseMaxHp();
},
locked:false,
global:'yingba_mark',
mod:{
cardUsableTarget:function(card,player,target){
if(target.hasMark('yingba_mark')) return true;
@ -331,6 +332,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:'mark',
onunmark:true,
},
mod:{
maxHandcard:function(player,numx){
var num=player.countMark('yingba_mark');
if(num) return numx+num*game.countPlayer(function(current){
return current.hasSkill('yingba');
});
},
},
},
},
},
@ -400,14 +409,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'damageBegin2'},
direct:true,
filter:function(event,player){
return event.source&&event.source!=player&&event.num<player.countCards('h');
return event.source&&event.source!=player&&player.maxHp>1&&player.countCards('h')>0;
},
content:function(){
'step 0'
player.chooseCardTarget({
prompt:get.prompt('pinghe'),
prompt2:'将'+get.cnNumber(trigger.num)+'张手牌交给一名其他角色并防止伤害'+(player.hasSkill('yingba')?',然后令伤害来源获得等量“平定”标记':''),
selectCard:trigger.num,
prompt2:'将一张手牌交给一名其他角色并防止伤害'+(player.hasSkill('yingba')?',然后令伤害来源获得一个“平定”标记':''),
filterCard:true,
filterTarget:lib.filter.notMe,
ai1:function(card){
@ -428,9 +436,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.logSkill('pinghe',target);
target.gain(result.cards,player,'giveAuto');
trigger.cancel();
player.loseMaxHp(trigger.num);
player.loseMaxHp();
if(player.hasSkill('yingba')){
trigger.source.addMark('yingba_mark',trigger.num);
trigger.source.addMark('yingba_mark',1);
}
}
},
@ -750,8 +758,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
player.draw();
player.addTempSkill('shenzhu_less');
player.addMark('shenzhu_less',1,false);
//player.addTempSkill('shenzhu_less');
//player.addMark('shenzhu_less',1,false);
},
subSkill:{
less:{
@ -4835,7 +4843,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tspowei:'破围',
tspowei_info:'使命技。①当你因使用【杀】而对有“围”的角色造成伤害时你防止此伤害并移去该角色的“围”。②使命当你使用【杀】结算完成后若场上没有“围”则你获得技能〖神著〗。③失败当你进入濒死状态时你将体力值回复至1点然后弃置装备区的所有牌。',
shenzhu:'神著',
shenzhu_info:'你使用【杀】无次数限制。当你使用有对应实体牌的非转化【杀】结算结束后,你摸一张牌,且本回合的手牌上限-1。',
shenzhu_info:'你使用【杀】无次数限制。当你使用有对应实体牌的非转化【杀】结算结束后,你摸一张牌。',
dangmo:'荡魔',
dangmo_info:'当你于出牌阶段内使用第一张【杀】选择目标后你可以为此牌增加至多Y-1个目标Y为你的体力值。',
reshuishi:'慧识',
@ -4853,11 +4861,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dinghan_info:'①当你成为未记录过的锦囊牌的目标时,你记录此牌名并取消之。②准备阶段,你可在〖定汉①〗的记录中添加或减少一种锦囊牌的牌名。',
shen_sunce:'神孙策',
yingba:'英霸',
yingba_info:'①出牌阶段限一次你可令一名体力上限大于1的其他角色减少1点体力上限并获得“平定”标记然后你减少1点体力上限。②你对拥有“平定”标记的角色使用牌没有次数限制。',
yingba_info:'①出牌阶段限一次你可令一名体力上限大于1的其他角色减少1点体力上限并获得“平定”标记然后你减少1点体力上限。②你对拥有“平定”标记的角色使用牌没有次数限制。③拥有“平定”标记的角色的手牌上限+XX为其“平定”数',
scfuhai:'覆海',
scfuhai_info:'锁定技。①当你使用牌指定目标后若目标角色有“平定”标记则其不可响应此牌。②当你使用牌结算结束后你移除所有目标角色的“平定”标记并增加等量的体力上限。③拥有“平定”标记的角色死亡时你增加X点体力上限并摸X张牌。X为其拥有的“平定”标记数。',
pinghe:'冯河',
pinghe_info:'①你的手牌上限基数等于你已损失的体力值。②当你受到其他角色造成的伤害时,若你的手牌数大于X则你可以防止此伤害减少X点体力值上限并将X张手牌交给一名其他角色X为伤害值。然后若你拥有〖英霸〗则伤害来源获得X个“平定”标记。',
pinghe_info:'①你的手牌上限基数等于你已损失的体力值。②当你受到其他角色造成的伤害时,若你有牌且你的体力上限大于1则你可以防止此伤害减少一点体力上限并将一张手牌交给一名其他角色。然后若你拥有〖英霸〗则伤害来源获得一个“平定”标记。',
key_kagari:'篝',
kagari_zongsi:'纵丝',
@ -4872,7 +4880,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
hina_shenshi_yingbian:'神视',
hina_shenshi_info:'神势力技。出牌阶段开始时/结束时,你可摸两张牌,然后将其中一张牌置于牌堆顶。你以此法获得的牌视为拥有全部应变效果,且可以无条件发动。',
hina_xingzhi:'幸凪',
hina_xingzhi_info:'键势力技。每回合限一次,你可以通过“助战”触发一张牌的全部助战效果,且响应助战的角色摸两张牌。',
hina_xingzhi_info:'键势力技。每回合限一次,你可以通过“助战”触发一张牌的全部应变效果,且响应助战的角色摸两张牌。',
extra_feng:'神话再临·风',
extra_huo:'神话再临·火',

File diff suppressed because it is too large Load Diff

View File

@ -714,6 +714,10 @@ window.noname_character_rank={
'zhouyi',
'yangzhi',
'wanniangongzhu',
'sunyi',
'sp_gaolan',
'simafu',
'mayuanyi',
],
b:[
'diy_feishi',
@ -916,6 +920,9 @@ window.noname_character_rank={
're_kanze',
'tongyuan',
'zhangning',
'sp_huaman',
'sp_wangshuang',
'yanpu',
],
bm:[
'diy_xizhenxihong',
@ -1775,6 +1782,9 @@ window.noname_character_rank={
'wanniangongzhu',
're_xunchen',
'tongyuan',
'simafu',
'mayuanyi',
'sp_huaman',
],
junk:[
'sunshao',

View File

@ -10,7 +10,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
refresh_lin:['re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo','ol_zhurong','re_jiaxu','ol_lusu'],
refresh_shan:['ol_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai'],
refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua'],
refresh_yijiang2:['old_madai','wangyi','guanzhang','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_bulianshi','xin_liubiao'],
refresh_yijiang2:['old_madai','re_wangyi','guanzhang','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_bulianshi','xin_liubiao'],
refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','re_yufan','re_liru','re_manchong','re_fuhuanghou','re_guanping'],
refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan','re_caozhen','re_zhoucang','re_chenqun','re_caifuren','re_guyong'],
refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu','re_gongsunyuan','re_guotufengji'],
@ -45,7 +45,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_bulianshi:['female','wu',3,['reanxu','zhuiyi']],
re_hanhaoshihuan:['male','wei',4,['reshenduan','reyonglve']],
re_panzhangmazhong:['male','wu',4,['reduodao','reanjian']],
wangyi:['female','wei',3,['zhenlie','miji']],
re_wangyi:['female','wei',4,['zhenlie','miji']],
old_madai:['male','shu',4,['mashu','qianxi']],
guanzhang:['male','shu',4,['fuhun']],
xin_xusheng:['male','wu',4,['decadepojun']],
@ -10211,7 +10211,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
decadepojun2:'破军',
decadepojun_info:'当你使用【杀】指定目标后你可以将其的至多X张牌置于其武将牌上X为其体力值。若这些牌中有装备牌你将这些装备牌中的一张置于弃牌堆有锦囊牌你摸一张牌。其于回合结束时获得其武将牌上的这些牌。',
old_madai:'界马岱',
wangyi:'界王异',
re_wangyi:'界王异',
wangyi:'王异',
guanzhang:'界关兴张苞',
rezishou:'自守',
rezishou2:'自守',

View File

@ -2309,7 +2309,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
preHidden:true,
check:function(event,player){
return get.attitude(player,event.player)<=0;
return get.attitude(player,target.player)<=0;
},
logTarget:'target',
content:function(){

View File

@ -313,7 +313,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{global:'useCardAfter'},
direct:true,
filter:function(event,player){
return player!=event.player&&event.player.isIn()&&get.suit(event.card)=='spade'&&event.player.hasHistory('lose',function(evt){
return player!=event.player&&event.player.isIn()&&get.color(event.card)=='black'&&event.player.hasHistory('lose',function(evt){
return evt&&evt.hs.length&&evt.getParent()==event;
})&&event.player.isPhaseUsing()&&!player.hasSkill('tianze_block');
},
@ -332,6 +332,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).set('goon',get.damageEffect(trigger.player,player,player)>0).logSkill=['tianze',trigger.player];
'step 1'
if(result.bool) trigger.player.damage();
else event.finish();
'step 2'
game.delayx();
},
group:'tianze_draw',
subSkill:{
@ -341,7 +344,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
forced:true,
locked:false,
filter:function(event,player){
return event.player!=player&&event.result&&event.result.suit=='spade';
return event.player!=player&&event.result&&event.result.color=='black';
},
content:function(){
player.draw();
@ -356,15 +359,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var hs=player.getCards('h');
if(!hs.length) return false;
for(var i of event.cards){
if(hs.contains(i)&&get.suit(i,hs)=='heart'&&lib.filter.cardDiscardable(i,player,'difa')) return true;
if(hs.contains(i)&&get.color(i,player)=='red'&&lib.filter.cardDiscardable(i,player,'difa')) return true;
}
return false;
},
usable:1,
check:()=>false,
content:function(){
'step 0'
var hs=player.getCards('h'),cards=trigger.cards.filter(function(i){
return (hs.contains(i)&&get.suit(i,hs)=='heart'&&lib.filter.cardDiscardable(i,player,'difa'));
return (hs.contains(i)&&get.color(i,player)=='redt'&&lib.filter.cardDiscardable(i,player,'difa'));
});
if(!cards.length) event.finish();
else{
@ -531,51 +535,52 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{source:'damageBegin1'},
direct:true,
filter:function(event,player){
return player.isPhaseUsing()&&!player.hasSkill('chaofeng2');
return player.countCards('he')>0&&player.isPhaseUsing()&&!player.hasSkill('chaofeng2');
},
content:function(){
'step 0'
var str='弃置一张牌并摸一张牌',num,suit;
var str='弃置一张牌并摸一张牌',color,type;
if(trigger.card){
num=get.number(trigger.card);
suit=get.suit(trigger.card);
if(lib.suit.contains(suit)) str+=';若弃置'+get.translation(suit)+'牌则改为摸两张牌';
if(typeof num=='number') str+=';若弃置点数为'+get.strNumber(num)+'的牌则伤害+1';
type=get.type2(trigger.card,false);
color=get.color(trigger.card,false);
if(color!='nocolor') str+=';若弃置'+get.translation(color)+'牌则改为摸两张牌';
if(type) str+=';若弃置类型为'+get.translation(type)+'的牌则伤害+1';
}
var next=player.chooseToDiscard('he',get.prompt('chaofeng',trigger.player),str);
next.set('ai',function(card){
var player=_status.event.player,suit=_status.event.suit,number=_status.event.number;
var player=_status.event.player,suit=_status.event.color,number=_status.event.type;
var val=4-get.value(card);
if(get.suit(card,player)==suit) val+=3;
if(get.number(card,player)==number) val+=4;
if(get.color(card)==suit) val+=3;
if(get.type2(card)==number) val+=4;
return val;
});
next.logSkill=['chaofeng',trigger.player];
if(lib.suit.contains(suit)){
event.suit=suit;
next.set('suit',suit);
if(color!='nocolor'){
event.color=color;
next.set('color',color);
}
if(typeof num=='number'){
event.number=num;
next.set('number',num);
if(type){
event.type=type;
next.set('type',type);
}
'step 1'
if(result.bool){
player.addTempSkill('chaofeng2','phaseUseEnd');
var card=result.cards[0];
player.draw((event.suit&&get.suit(card,player)==event.suit)?2:1);
if(event.number&&get.number(card,player)==event.number) trigger.num++;
player.draw((event.color&&get.color(card,card.original=='h'?player:false)==event.color)?2:1);
if(event.type&&get.type2(card,card.original=='h'?player:false)==event.type) trigger.num++;
}
},
},
chaofeng2:{},
chuanshu:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
trigger:{player:['phaseZhunbeiBegin','die']},
direct:true,
juexingji:true,
limited:true,
forceDie:true,
filter:function(event,player){
return player.isMinHp();
return player.isDamaged()&&(event.name=='die'||player.isAlive());
},
skillAnimation:true,
animationColor:'gray',
@ -583,42 +588,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
player.chooseTarget(lib.filter.notMe,get.prompt('chuanshu'),'令一名其他角色获得〖朝凤〗').set('ai',function(target){
return get.attitude(_status.event.player,target)
});
}).set('forceDie',true);
'step 1'
if(result.bool){
var target=result.targets[0];
player.awakenSkill('chuanshu');
player.logSkill('chuanshu',target);
target.addSkillLog('chaofeng');
if(player.isDead()) event.finish();
}
else event.finish();
'step 2'
player.loseMaxHp();
'step 3'
for(var i of lib.skill.chuanshu.derivation) player.addSkillLog(i);
},
group:'chuanshu_die',
derivation:['ollongdan','drlt_congjian','chuanyun'],
subSkill:{
die:{
trigger:{player:'die'},
direct:true,
forceDie:true,
content:function(){
'step 0'
player.chooseTarget(lib.filter.notMe,'是否令一名其他角色获得〖朝凤〗?').set('forceDie',true).set('ai',function(target){
return get.attitude(_status.event.player,target)
});
'step 1'
if(result.bool){
player.awakenSkill('chuanshu');
var target=result.targets[0];
player.logSkill('chuanshu',target);
target.addSkillLog('chaofeng');
}
},
},
},
},
chuanyun:{
audio:2,
@ -982,22 +965,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'zhukou',
trigger:{player:'phaseJieshuBegin'},
filter:function(event,player){
return game.hasPlayer((current)=>(current!=player)&&!player.getHistory('sourceDamage').length);
},
prompt:'是否发动【逐寇】?',
prompt2:'对所有其他角色各造成1点伤害',
logTarget:(event,player)=>(game.filterPlayer((current)=>(current!=player))),
check:function(event,player){
return game.countPlayer(function(current){
if(current==player) return false;
var num=get.damageEffect(current,player,player);
if(num<0&&current.hp>2) num/=3;
return num+0.01;
})>0;
return game.countPlayer((current)=>(current!=player))>1&&!player.getHistory('sourceDamage').length;
},
direct:true,
content:function(){
var list=game.filterPlayer((current)=>(current!=player)).sortBySeat();
for(var i of list) i.damage();
'step 0'
player.chooseTarget(get.prompt('zhukou'),'对两名其他角色各造成1点伤害',2,lib.filter.notMe).set('ai',function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player);
});
'step 1'
if(result.bool){
var targets=result.targets.sortBySeat();
player.logSkill('zhukou',targets);
for(var i of targets) i.damage();
}
},
},
},
@ -1006,7 +988,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
return game.hasPlayer((current)=>(current!=player))&&!game.hasPlayer((current)=>(current!=player&&current.isHealthy()));
return game.countPlayer((current)=>current.isDamaged())>player.hp;
},
juexingji:true,
skillAnimation:true,
@ -1043,12 +1025,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var func=function(player,id){
var list=[
'选项一:摸两张牌',
'选项二:本回合使用黑色【杀】无距离和次数限制',
'选项二:对一名其他角色造成1点伤害本回合对其使用【杀】无距离和次数限制',
'选项三:本回合手牌上限视为无限',
'选项四:弃置一名其他角色的一张手牌和一张装备区的牌',
'选项五:令一名手牌最少的角色将手牌数摸至体力上限(至多摸至五张)',
'选项四:获得一名其他角色区域内的一张牌',
'选项五:令一名其他角色将手牌数摸至体力上限(至多摸至五张)',
];
var choiceList=ui.create.dialog('玉陨:请选择一'+(player.getDamagedHp()>1?'至两':'')+'项');
var choiceList=ui.create.dialog('玉陨:请选择一'+(player.getDamagedHp()>0?('至'+get.cnNumber(player.getDamagedHp()+1)):'')+'项');
choiceList.videoId=id;
for(var i=0;i<list.length;i++){
var str='<div class="popup text" style="width:calc(100% - 10px);display:inline-block">';
@ -1082,31 +1064,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
break;
case 1:
return Math.max(0.5,player.countCards('hs',function(card){
return get.name(card)=='sha'&&get.color(card)=='black'&&player.hasValueTarget(card);
})-player.getCardUsable({name:'sha'}));
return get.name(card)=='sha'&&player.hasValueTarget(card);
})-player.getCardUsable({name:'sha'}))+Math.max.apply(Math,game.filterPlayer(function(current){
return current!=player;
}).map(function(target){
return get.damageEffect(target,player,player);
}));
break;
case 2:
return player.needsToDiscard()/4;
break;
case 3:
var num=0;
game.countPlayer(function(current){
if(current!=player&&get.attitude(player,current)<0){
var num2=0;
current.countDiscardableCards(player,'e',function(card){
var val=get.value(card,current);
if(val>num2) num2=val;
});
if(current.countCards('h')>0&&!current.hasSkillTag('noh')) num2++;
if(num2>num) num=num2;
}
});
return num/4;
return 0.8*Math.max.apply(Math,game.filterPlayer(function(current){
return current!=player&&current.hasCard((card)=>lib.filter.canBeGained(card,current,player),'hej');
}).map(function(target){
return get.effect(target,{name:'shunshou_copy'},player,player);
}));
break;
case 4:
var num=0;
game.countPlayer(function(current){
if(current!=player&&get.attitude(player,current)>0&&current.isMinHandcard()){
if(current!=player&&get.attitude(player,current)>0){
var num2=Math.min(5,current.maxHp)-current.countCards('h');
if(num2>num) num=num2;
}
@ -1115,7 +1094,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
break;
}
});
if(player.getDamagedHp()>1) next.set('selectButton',[1,2]);
if(player.getDamagedHp()>0) next.set('selectButton',[1,1+player.getDamagedHp()]);
'step 3'
if(player.isOnline2()){
player.send('closeDialog',event.videoId);
@ -1125,53 +1104,54 @@ game.import('character',function(lib,game,ui,get,ai,_status){
for(var i of result.links) game.log(player,'选择了','#g【玉陨】','的','#y选项'+get.cnNumber(1+i,true))
event.links=result.links;
if(result.links.contains(0)) player.draw(2);
if(result.links.contains(1)) player.addTempSkill('yuyun_sha');
if(result.links.contains(2)) player.addTempSkill('yuyun_114514');
if(!result.links.contains(3)){
if(result.links.contains(4)) event.goto(6);
else event.finish();
}
'step 4'
if(game.hasPlayer(function(current){
return current!=player&&current.hasCard((card)=>lib.filter.canBeDiscarded(card,current,player),'he');
})){
player.chooseTarget(true,'弃置一名其他角色手牌区和装备区内的各一张牌',function(card,player,current){
return current!=player&&current.hasCard((card)=>lib.filter.canBeDiscarded(card,current,player),'he');
}).set('ai',function(current){
var num2=0,player=_status.event.player;
if(get.attitude(player,current)>=0) return 0;
current.countDiscardableCards(player,'e',function(card){
var val=get.value(card,current);
if(val>num2) num2=val;
});
if(current.countCards('h')>0&&!current.hasSkillTag('noh')) num2++;
});
}
else if(event.links.contains(4)) event.goto(6);
if(event.links.contains(1)&&game.hasPlayer(function(current){
return current!=player;
})) player.chooseTarget(lib.filter.notMe,true,'对一名其他角色造成1点伤害').set('ai',function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player);
});
else if(event.links.contains(3)) event.goto(6);
else if(event.links.contains(4)) event.goto(8);
else event.finish();
'step 5'
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
var num=0;
if(target.hasCard((card)=>lib.filter.canBeDiscarded(card,target,player),'h')) num++;
if(target.hasCard((card)=>lib.filter.canBeDiscarded(card,target,player),'e')) num++;
if(num){
player.discardPlayerCard(target,num,'he',true).set('filterButton',function(button){
for(var i=0;i<ui.selected.buttons.length;i++){
if(get.position(button.link)==get.position(ui.selected.buttons[i].link)) return false;
}
return true;
});
}
target.damage();
player.markAuto('yuyun_sha',[target]);
player.addTempSkill('yuyun_sha');
}
if(event.links.contains(3)) event.goto(6);
else if(event.links.contains(4)) event.goto(8);
else event.finish();
'step 6'
if(event.links.contains(3)&&game.hasPlayer(function(current){
return current!=player&&current.hasCard((card)=>lib.filter.canBeGained(card,current,player),'hej');
})){
player.chooseTarget(true,'获得一名其他角色区域内的一张牌',function(card,player,current){
return current!=player&&current.hasCard((card)=>lib.filter.canBeGained(card,current,player),'hej');
}).set('ai',function(target){
var player=_status.event.player;
return get.effect(target,{name:'shunshou_copy'},player,player);
});
}
else if(event.links.contains(4)) event.goto(8);
else event.finish();
'step 7'
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
player.gainPlayerCard(target,'hej',true);
}
if(!event.links.contains(4)) event.finish();
'step 6'
if(game.hasPlayer(function(current){
return current.isMinHandcard()&&current.countCards('h')<Math.min(5,current.maxHp);
'step 8'
if(event.links.contains(4)&&game.hasPlayer(function(current){
return current!=player&&current.countCards('h')<Math.min(5,current.maxHp);
})){
player.chooseTarget(true,'令一名手牌数最少的角色将手牌数摸至体力上限',function(card,player,current){
return current.isMinHandcard()&&current.countCards('h')<Math.min(5,current.maxHp);
player.chooseTarget(true,'令一名其他角色将手牌数摸至体力上限',function(card,player,current){
return current!=player&&current.countCards('h')<Math.min(5,current.maxHp);
}).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(target.hasSkillTag('nogain')) att/=6;
@ -1182,7 +1162,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
});
}
else event.finish();
'step 7'
'step 9'
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
@ -1200,14 +1180,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
sha:{
mod:{
cardUsable:function(card){
if(card.name=='sha'&&get.color(card)=='black') return Infinity;
cardUsableTarget:function(card,player,target){
if(card.name=='sha'&&player.getStorage('yuyun_sha').contains(target)) return Infinity;
},
targetInRange:function(card){
if(card.name=='sha'&&get.color(card)=='black') return true;
targetInRange:function(card,player,target){
if(card.name=='sha'&&player.getStorage('yuyun_sha').contains(target)) return true;
},
},
charlotte:true,
onremove:true,
},
},
},
@ -1358,18 +1339,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(list.length){
str+='获得一名角色装备区或判定区内的一张点数为'+nums+'的牌,或直接从牌堆中获得一张点数为'+nums+'的牌';
player.chooseTarget(get.prompt('rexingluan'),str,[0,1],function(card,player,target){
return _status.event.targets.contains(target);
}).set('targets',list).set('ai',function(target){
if(!target) return 1;
var player=_status.event.player,num=get.number(_status.event.getTrigger().card,false),att=-get.sgn(get.attitude(player,target));
if(target.hasCard(function(card){
return get.number(card)==num&&get.effect(target,card,target,player)<0;
},'j')) return 1.2*Math.abs(get.attitude(player,target));
if(target.hasCard(function(card){
return get.number(card)==num&&get.sgn(get.value(card,target)+0.1)==att;
},'e')) return Math.abs(get.attitude(player,target));
return 0;
});
return _status.event.targets.contains(target);
}).set('targets',list).set('ai',function(target){
if(!target) return 1;
var player=_status.event.player,num=get.number(_status.event.getTrigger().card,false),att=-get.sgn(get.attitude(player,target));
if(target.hasCard(function(card){
return get.number(card)==num&&get.effect(target,card,target,player)<0;
},'j')) return 1.2*Math.abs(get.attitude(player,target));
if(target.hasCard(function(card){
return get.number(card)==num&&get.sgn(get.value(card,target)+0.1)==att;
},'e')) return Math.abs(get.attitude(player,target));
return 0;
});
}
else{
player.chooseBool(get.prompt('rexingluan'),'从牌堆中获得一张点数为'+nums+'的牌').ai=()=>true;
@ -1643,14 +1624,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
var hs=target.getCards('h','shan');
if(hs.length){
var card=target.getEquip(2);
if(card) hs.push(card);
hs.addArray(target.getCards('he',function(card){
return get.subtype(card)=='equip2';
}))
player.gain(hs,target,'give');
event.num=(player.hasMark('zhtongyuan_tao')?1:hs.length);
if(player.hasMark('zhtongyuan_basic')) event.finish();
else event.num=hs.length;
}
else{
if(player.hasMark('zhtongyuan_wuxie')) player.draw();
else if(player.countCards('h')) player.chooseToDiscard('h',true);
if(player.hasMark('zhtongyuan_trick')) player.draw(2);
event.finish();
}
'step 1'
@ -1665,7 +1647,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
order:4,
result:{
player:function(player,target){
if(!target.countCards('h','shan')) return player.hasMark('zhtongyuan_wuxie')?1:-1;
if(!target.countCards('h','shan')) return player.hasMark('zhtongyuan_trick')?2:0;
return 0;
},
target:function(player,target){
@ -1675,7 +1657,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(card) num-=(get.value(card,target)/2);
return num;
}
return 0;
return -0.01;
},
},
},
@ -1683,23 +1665,80 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tongyuan:{audio:2},
zhtongyuan:{
audio:'tongyuan',
trigger:{player:'useCard'},
trigger:{player:['useCardAfter','respondAfter']},
forced:true,
filter:function(event,player){
return (event.card.name=='tao'||event.card.name=='wuxie')&&((player!=_status.currentPhase&&!player.hasMark('zhtongyuan_'+event.card.name))||(player.hasMark('zhtongyuan_tao')&&player.hasMark('zhtongyuan_wuxie')));
var type=get.type2(event.card,false);
return (type=='basic'||type=='trick')&&get.color(event.card,false)=='red'&&!player.hasMark('zhtongyuan_'+type);
},
content:function(){
if(!player.hasMark('zhtongyuan_'+trigger.card.name)){
player.addMark('zhtongyuan_'+trigger.card.name,1,false);
var type=get.type2(trigger.card,false);
if(!player.hasMark('zhtongyuan_'+type)){
player.addMark('zhtongyuan_'+type,1,false);
game.log(player,'修改了技能','#g【摧坚】');
}
else{
if(trigger.card.name=='wuxie') trigger.directHit.addArray(game.players);
else{
if(typeof trigger.baseDamage!='number') trigger.baseDamage=1;
trigger.baseDamage++;
}
}
},
group:['zhtongyuan_basic','zhtongyuan_trick'],
subSkill:{
basic:{
trigger:{player:'useCard2'},
direct:true,
locked:true,
filter:function(event,player){
if(!player.hasMark('zhtongyuan_basic')||!player.hasMark('zhtongyuan_trick')) return false;
var card=event.card;
if(get.color(card,false)!='red'||get.type(card,null,true)!='basic') return false;
var info=get.info(card);
if(info.allowMultiple==false) return false;
if(event.targets&&!info.multitarget){
if(game.hasPlayer(function(current){
return !event.targets.contains(current)&&lib.filter.targetEnabled2(card,player,current);
})){
return true;
}
}
return false;
},
content:function(){
'step 0'
var prompt2='为'+get.translation(trigger.card)+'增加一个目标'
player.chooseTarget(get.prompt('zhtongyuan'),function(card,player,target){
var player=_status.event.player;
return !_status.event.targets.contains(target)&&lib.filter.targetEnabled2(_status.event.card,player,target);
}).set('prompt2',prompt2).set('ai',function(target){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
return get.effect(target,trigger.card,player,player);
}).set('card',trigger.card).set('targets',trigger.targets);
'step 1'
if(result.bool){
if(!event.isMine()&&!event.isOnline()) game.delayx();
event.targets=result.targets;
}
else{
event.finish();
}
'step 2'
if(event.targets){
player.logSkill('zhtongyuan',event.targets);
trigger.targets.addArray(event.targets);
}
},
},
trick:{
audio:'zhtongyuan',
trigger:{player:'useCard'},
forced:true,
filter:function(event,player){
if(!player.hasMark('zhtongyuan_basic')||!player.hasMark('zhtongyuan_trick')) return false;
var card=event.card;
return (get.color(card,false)=='red'&&get.type(card,null,false)=='trick');
},
content:function(){
trigger.directHit.addArray(game.filterPlayer());
game.log(trigger.card,'不可被响应');
},
},
},
},
xianwei:{
@ -2498,32 +2537,35 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
'step 0'
var target=trigger.source;
var target=trigger.source,str=get.translation(player);
event.target=target;
var th=target.countCards('h');
if(th>0){
event.num=Math.ceil(th/2);
var list=[
'本回合不能使用或打出手牌',
'展示所有手牌并弃置其中一种花色的所有牌',
],ph=player.countCards('h');
if(ph!=th){
var num=Math.ceil(Math.abs(ph-th)/2);
event.num=num;
list.push('交给'+get.translation(player)+get.cnNumber(num)+'张手牌');
}
target.chooseControl().set('choiceList',list);
'本回合不能使用或打出手牌,然后'+str+'摸两张牌',
'展示所有手牌,并将其中一种花色的所有牌交给'+str,
'弃置'+get.cnNumber(event.num)+'张手牌',
];
target.chooseControl().set('choiceList',list).set('ai',function(){
return get.rand(0,2);
});
}
else event._result={index:0};
'step 1'
switch(result.index){
case 0:target.addTempSkill('yachai_block');event.finish();break;
case 0:
target.addTempSkill('yachai_block');
player.draw(2);
event.finish();
break;
case 1:target.showHandcards();break;
case 2:event.goto(4);break;
}
'step 2'
var map={},hs=target.getCards('h');
for(var i of hs){
if(lib.filter.cardDiscardable(card,target,'yachai')) map[get.suit(i,target)]=true;
map[get.suit(i,target)]=true;
}
var list=[];
for(var i of lib.suit){
@ -2531,17 +2573,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
if(!list.length) event.finish();
else if(list.length==1) event._result={control:list[0]};
else target.chooseControl(list).set('prompt','选择弃置一种花色');
else target.chooseControl(list).set('prompt','将一种花色的牌交给'+get.translation(player));
'step 3'
var cards=target.getCards('h',function(card){
return get.suit(card,target)==result.control&&lib.filter.cardDiscardable(card,target,'yachai');
});
if(cards.length) target.discard(cards);
if(cards.length) player.gain(cards,target,'give');
event.finish();
'step 4'
target.chooseCard('h',true,'交给'+get.translation(player)+get.cnNumber(num)+'张手牌',num);
'step 5'
if(result.bool) player.gain(result.cards,target,'giveAuto');
target.chooseToDiscard('h',true,num);
},
subSkill:{
block:{
@ -2602,29 +2642,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.delay(4);
'step 2'
game.broadcastAll('closeDialog',event.videoId);
var max=0,max_suit=null,map={};
var list=[],map={};
for(var i of cards){
var suit=get.suit(i);
if(!map[suit]) map[suit]=0;
map[suit]++;
if(!map[suit]) map[suit]=[];
map[suit].push(i);
}
for(var i in map){
if(map[i]>max){
max_suit=i;
max=map[i];
var dialog=['选择获得一种花色的所有牌'];
for(var suit of lib.suit){
if(map[suit]){
var targetsx=map[suit].map(function(card){
return targets[cards.indexOf(card)];
});
dialog.push('<div class="text center">'+get.translation(targetsx)+'</div>');
dialog.push(map[suit]);
list.push(suit);
}
else if(map[i]==max) max_suit=null;
}
if(max_suit){
var cards=cards.filter(function(card){
return get.suit(card)==max_suit;
});
event.cards2=cards;
player.chooseBool('是否获得所有'+get.translation(max_suit)+'牌?','可获得:'+get.translation(cards));
if(list.length){
player.chooseControl(list,'cancel2').set('dialog',dialog);
}
else event.finish();
'step 3'
if(result.bool){
if(result.control!='cancel2'){
event.cards2=cards.filter(function(i){
return get.suit(i)==result.control;
})
for(var i=0;i<cards.length;i++){
if(event.cards2.contains(cards[i])){
targets[i].$give(cards[i],player,false);
@ -11205,7 +11248,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return '当你于'+(player.hasSkill('yaner_zhiren')?'一':'你的')+'回合内使用第一张非转化牌时你可依次执行以下选项中的前X项①卜算X。②可弃置场上的一张装备牌和延时锦囊牌。③回复1点体力。④摸三张牌。X为此牌的名称的字数';
},
cuijian:function(player){
return '出牌阶段限一次,你可以选择一名有手牌的其他角色。若其手牌中有【闪】,其将装备区内的防具牌和所有【闪】交给你,然后你交给其'+(player.hasMark('zhtongyuan_tao')?'一张':'等量的')+'牌;没有【闪】,你'+(player.hasMark('zhtongyuan_wuxie')?'摸一张':'弃置一张手')+'牌。';
return '出牌阶段限一次,你可以选择一名有手牌的其他角色。若其手牌中有【闪】,其将所有【闪】和防具牌交给你'+(player.hasMark('zhtongyuan_basic')?'':',然后你交给其等量的牌')+'。'+(player.hasMark('zhtongyuan_trick')?'若其手牌中没有【闪】,则你摸两张牌。':'');
},
},
perfectPair:{
@ -11701,9 +11744,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
fuzhong_info:'锁定技当你于回合外获得牌后你获得一枚“重”标记。若X大于0你的手牌上限+1大于1你至其他角色的距离-1大于2你于摸牌阶段开始时令额定摸牌数+1大于3准备阶段你对一名其他角色造成1点伤害然后移去X枚“重”X为“重”数。',
heyan:'何晏',
yachai:'崖柴',
yachai_info:'当你受到伤害后,你可令伤害来源选择一项:①其本回合不能再使用手牌;②其展示所有手牌,然后弃置手牌中一种花色的所有牌;③交给你与你手牌数差值一半数量的手牌(向上取整)。',
yachai_info:'当你受到伤害后,你可令伤害来源选择一项:①其本回合不能再使用手牌,然后你摸两张牌;②其展示所有手牌,然后将其手牌中一种花色的所有牌交给你;③弃置一半数量的手牌(向上取整)。',
qingtan:'清谈',
qingtan_info:'出牌阶段限一次,你可令所有有手牌的角色同时选择一张手牌并同时展示。你可以获得其中花色唯一最多的牌,然后展示此花色牌的角色各摸一张牌。若如此做,弃置其他的牌。',
qingtan_info:'出牌阶段限一次,你可令所有有手牌的角色同时选择一张手牌并同时展示。你可以获得其中一种花色的牌,然后展示此花色牌的角色各摸一张牌。若如此做,弃置其他的牌。',
qiuliju:'丘力居',
koulve:'寇略',
koulve_info:'当你于出牌阶段内对其他角色造成伤害后你可以展示其一张手牌。若此牌为带有伤害标签的基本牌或锦囊牌则你获得之为红色牌你失去1点体力若已受伤则改为减1点体力上限然后摸两张牌。',
@ -11746,9 +11789,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xianwei_info:'锁定技准备阶段你废除一个装备栏并摸X张牌X为你未废除的装备栏数然后令一名其他角色对其自己使用一张牌堆中的一张与此装备栏副类别相同的装备牌没有可使用的牌则改为摸一张牌。当你废除所有装备栏后你加2点体力上限然后你与所有其他角色视为在彼此的攻击范围内。',
zhanghu:'张虎',
cuijian:'摧坚',
cuijian_info:'出牌阶段限一次,你可以选择一名有手牌的其他角色。若其手牌中有【闪】,其将装备区内的防具牌和所有【闪】交给你,然后你交给其等量的牌;没有【闪】,你弃置一张手牌。',
cuijian_info:'出牌阶段限一次,你可以选择一名有手牌的其他角色。若其手牌中有【闪】,其将所有【闪】和防具牌交给你,然后你交给其等量的牌。',
zhtongyuan:'同援',
zhtongyuan_info:'锁定技。①当你于回合外使用【无懈可击】时,你将〖摧坚〗中的“弃置一张手牌”改为“摸一张牌”;②当你于回合外使用【桃】时,你将〖摧坚〗中的“等量的牌”改为“一张牌”。③当你使用【无懈可击】/【桃】时,若你已发动过〖摧坚①〗和〖摧坚②〗,则此牌不可被响应/回复值+1。',
zhtongyuan_info:'锁定技。①当你使用红色锦囊牌后,你于〖摧坚〗中增加“若其手牌中没有【闪】,则你摸两张牌”;②当你于回合外使用或打出红色基本牌后,你删除〖摧坚〗中的“,然后你交给其等量的牌”。③当你使用红色的普通锦囊牌/基本牌时,若你已发动过〖摧坚①〗和〖摧坚②〗,则此牌不可被响应/可额外增加一个目标。',
dufuren:'杜夫人',
yise:'异色',
yise_info:'其他角色获得你的牌后若这些牌中有红色牌你可令其回复1点体力有黑色牌其下次受到【杀】造成的伤害时此伤害+1。',
@ -11767,11 +11810,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xinxingluan_info:'出牌阶段限一次。当你使用牌结算结束后你可选择一项①观看牌堆中的两张点数为6的牌并获得其中一张没有则改为摸一张牌②令一名其他角色弃置一张点数为6的牌或交给你一张牌③获得场上的一张点数为6的牌。',
zhouyi:'周夷',
zhukou:'逐寇',
zhukou_info:'当你于一名角色的出牌阶段第一次造成伤害后你可以摸X张牌X为本回合你已使用的牌数。你的结束阶段若你本回合没有造成伤害你可以对所有其他角色造成1点伤害。',
zhukou_info:'当你于一名角色的出牌阶段第一次造成伤害后你可以摸X张牌X为本回合你已使用的牌数你的结束阶段,若你本回合没有造成伤害,你可以对两名其他角色各造成1点伤害。',
mengqing:'氓情',
mengqing_info:'觉醒技,准备阶段。若其他角色均已受伤你加3点体力上限并回复3点体力失去〖逐寇〗获得〖玉殒〗。',
mengqing_info:'觉醒技。准备阶段,若场上已受伤的角色数大于你的体力值你加3点体力上限并回复3点体力失去〖逐寇〗获得〖玉殒〗。',
yuyun:'玉殒',
yuyun_info:'锁定技出牌阶段开始时你失去1点体力或体力上限不能减至1以下然后选择一项若你已损失体力值大于1则多选一项①摸两张牌②本回合使用黑色【杀】无距离和次数限制③本回合的手牌上限视为无限④弃置一名其他角色一张手牌和一张装备区中的牌⑤令手牌最少的一名角色将手牌摸至体力上限最多摸至5。',
yuyun_info:'锁定技出牌阶段开始时你失去1点体力或体力上限不能减至1以下然后选择X+1项X为你已损失的体力值①摸两张牌②对一名其他角色造成1点伤害然后本回合对其使用【杀】无距离和次数限制③本回合的手牌上限视为无限④获得一名其他角色区域内的一张牌⑤令一名其他角色将手牌摸至体力上限最多摸至5。',
re_nanhualaoxian:'南华老仙',
gongxiu:'共修',
gongxiu_info:'结束阶段,若你本回合内发动过〖经合〗,则你选择一项:①令所有本回合内成为过〖经合〗目标的角色各摸一张牌;②令所有本回合内未成为过〖经合〗目标的角色各弃置一张手牌。',
@ -11799,9 +11842,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mffengshi_info:'当你使用牌指定唯一目标后,或成为其他角色使用牌的唯一目标后,若此牌使用者的手牌数大于此牌目标的手牌数,则此牌的使用者可令你弃置自己和对方的各一张牌,并令此牌的伤害值+1。',
tongyuan:'童渊',
chaofeng:'朝凤',
chaofeng_info:'出牌阶段限一次。当你造成伤害时,你可以弃置一张牌,然后摸一张牌。若此伤害的渠道为牌且你弃置的牌:与此牌花色相同,则你改为摸两张牌;与此牌点数相同,则此伤害+1。',
chaofeng_info:'出牌阶段限一次。当你造成伤害时,你可以弃置一张牌,然后摸一张牌。若此伤害的渠道为牌且你弃置的牌:与此牌颜色相同,则你改为摸两张牌;与此牌类型相同,则此伤害+1。',
chuanshu:'传术',
chuanshu_info:'限定技。准备阶段,若你的体力值为全场最少,或当你死亡时,你可令一名其他角色获得〖朝凤〗。然后若你存活,则你获得〖龙胆〗、〖从谏〗和〖穿云〗。',
chuanshu_info:'限定技。准备阶段,若你已受伤;或当你死亡时,你可令一名其他角色获得〖朝凤〗。然后你获得〖龙胆〗、〖从谏〗和〖穿云〗。',
chuanyun:'穿云',
chuanyun_info:'当你使用【杀】指定目标后,你可令目标角色随机弃置其装备区内的一张牌。',
liuyong:'刘永',
@ -11812,9 +11855,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
fengxiang_tag:'隙',
zhangning:'张宁',
tianze:'天则',
tianze_info:'①每回合限触发一次。其他角色于其出牌阶段内使用手牌结算结束后你可以弃置一张黑色牌并对其造成1点伤害。②其他角色的判定生效后若结果为,则你摸一张牌。',
tianze_info:'①每回合限触发一次。其他角色于其出牌阶段内使用的黑色手牌结算结束后你可以弃置一张黑色牌并对其造成1点伤害。②其他角色的判定生效后若结果为黑色,则你摸一张牌。',
difa:'地法',
difa_info:'当你于回合内因摸牌而获得♥牌时,你可以弃置之。然后你选择一个锦囊牌的牌名,并从牌堆中获得一张此牌名的牌。',
difa_info:'每回合限一次。当你于回合内因摸牌而获得红色牌时,你可以弃置之。然后你选择一个锦囊牌的牌名,并从牌堆中获得一张此牌名的牌。',
re_xunchen:'荀谌',
refenglve:'锋略',
refenglve_info:'出牌阶段限一次,你可以和一名其他角色进行拼点。若你赢,其将区域内的两张牌交给你;若平局,则你令此技能于本阶段内的发动次数上限+1若你输你交给其一张牌。',

View File

@ -3254,7 +3254,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
},
wengua3:{},
wengua3:{charlotte:true},
daiyan:{
audio:2,
trigger:{player:'phaseJieshuBegin'},

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.111',
'v1.9.111.1',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -810,6 +810,18 @@ window.noname_asset_list=[
'audio/die/re_nanhualaoxian.mp3',
'audio/die/shen_sunce.mp3',
'audio/die/yuanhuan.mp3',
'audio/die/liuyong.mp3',
'audio/die/mayuanyi.mp3',
'audio/die/re_xunchen.mp3',
'audio/die/simafu.mp3',
'audio/die/sp_gaolan.mp3',
'audio/die/sp_huaman.mp3',
'audio/die/sp_wangshuang.mp3',
'audio/die/sunyi.mp3',
'audio/die/tongyuan.mp3',
'audio/die/wanniangongzhu.mp3',
'audio/die/yanpu.mp3',
'audio/die/zuofen.mp3',
'audio/skill/decadezishou1.mp3',
'audio/skill/decadezishou2.mp3',
@ -3662,6 +3674,61 @@ window.noname_asset_list=[
'audio/skill/tongduo2.mp3',
'audio/skill/yingba1.mp3',
'audio/skill/yingba2.mp3',
'audio/skill/anyong1.mp3',
'audio/skill/anyong2.mp3',
'audio/skill/bihuo1.mp3',
'audio/skill/bihuo2.mp3',
'audio/skill/binghuo1.mp3',
'audio/skill/binghuo2.mp3',
'audio/skill/chaofeng1.mp3',
'audio/skill/chaofeng2.mp3',
'audio/skill/chenjie1.mp3',
'audio/skill/chenjie2.mp3',
'audio/skill/chuanshu1.mp3',
'audio/skill/chuanshu2.mp3',
'audio/skill/chuanyun.mp3',
'audio/skill/fengxiang1.mp3',
'audio/skill/fengxiang2.mp3',
'audio/skill/huantu1.mp3',
'audio/skill/huantu2.mp3',
'audio/skill/jibing1.mp3',
'audio/skill/jibing2.mp3',
'audio/skill/lisi1.mp3',
'audio/skill/lisi2.mp3',
'audio/skill/longdan_tongyuan.mp3',
'audio/skill/moucuan1.mp3',
'audio/skill/moucuan2.mp3',
'audio/skill/ocongjian_tongyuan.mp3',
'audio/skill/refenglve1.mp3',
'audio/skill/refenglve2.mp3',
'audio/skill/shanxie1.mp3',
'audio/skill/shanxie2.mp3',
'audio/skill/spdengli1.mp3',
'audio/skill/spdengli2.mp3',
'audio/skill/spfangzong1.mp3',
'audio/skill/spfangzong2.mp3',
'audio/skill/spjungong1.mp3',
'audio/skill/spjungong2.mp3',
'audio/skill/spxiangzhen1.mp3',
'audio/skill/spxiangzhen2.mp3',
'audio/skill/spxizhan1.mp3',
'audio/skill/spxizhan2.mp3',
'audio/skill/wangjing1.mp3',
'audio/skill/wangjing2.mp3',
'audio/skill/xinghan1.mp3',
'audio/skill/xinghan2.mp3',
'audio/skill/xunde1.mp3',
'audio/skill/xunde2.mp3',
'audio/skill/yiyong1.mp3',
'audio/skill/yiyong2.mp3',
'audio/skill/zaoli1.mp3',
'audio/skill/zaoli2.mp3',
'audio/skill/zhaosong1.mp3',
'audio/skill/zhaosong2.mp3',
'audio/skill/zhenge1.mp3',
'audio/skill/zhenge2.mp3',
'audio/skill/zhuning1.mp3',
'audio/skill/zhuning2.mp3',
'audio/voice/male/0.mp3',
'audio/voice/male/1.mp3',
@ -4646,6 +4713,14 @@ window.noname_asset_list=[
'image/character/tw_yujin.jpg',
'image/character/wanniangongzhu.jpg',
'image/character/zhangning.jpg',
'image/character/mayuanyi.jpg',
'image/character/re_wangyi.jpg',
'image/character/simafu.jpg',
'image/character/sp_gaolan.jpg',
'image/character/sp_huaman.jpg',
'image/character/sp_wangshuang.jpg',
'image/character/sunyi.jpg',
'image/character/yanpu.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -53668,47 +53668,31 @@
}
result2+=temp02;
result1+=temp01;
if(get.attitude(player,target)<0){
result2*=Math.sqrt(threaten);
}
else{
result2*=Math.sqrt(Math.sqrt(threaten));
}
// *** continue here ***
if(target.hp==1) result2*=2.5;
if(target.hp==2) result2*=1.8;
if(target.countCards('h')==0){
if(get.tag(card,'respondSha')||get.tag(card,'respondShan')){
result2*=1.7;
if(typeof card=='object'){
if(get.attitude(player,target)<0){
result2*=Math.sqrt(threaten);
}
else{
result2*=1.5;
result2*=Math.sqrt(Math.sqrt(threaten));
}
// *** continue here ***
if(target.hp==1) result2*=2.5;
if(target.hp==2) result2*=1.8;
if(target.countCards('h')==0){
if(get.tag(card,'respondSha')||get.tag(card,'respondShan')){
result2*=1.7;
}
else{
result2*=1.5;
}
}
if(target.countCards('h')==1) result2*=1.3;
if(target.countCards('h')==2) result2*=1.1;
if(target.countCards('h')>3) result2*=0.5;
if(target.hp==4) result2*=0.9;
if(target.hp==5) result2*=0.8;
if(target.hp>5) result2*=0.6;
}
if(target.countCards('h')==1) result2*=1.3;
if(target.countCards('h')==2) result2*=1.1;
if(target.countCards('h')>3) result2*=0.5;
if(target.hp==4) result2*=0.9;
if(target.hp==5) result2*=0.8;
if(target.hp>5) result2*=0.6;
// if(get.attitude(player,target)<0){
// result2*=threaten;
// }
// else{
// result2*=Math.sqrt(threaten);
// }
// if(target.hp<=1) result2*=2;
// if(target.hp==2) result2*=1.1;
// if(target.countCards('h')==0){
// result2*=1.1;
// if(get.tag(card,'respondSha')||get.tag(card,'respondShan')) result2*=1.4;
// }
// if(target.countCards('h')==1) result2*=1.05;
// if(target.countCards('h')==2) result2*=1.02;
// if(target.countCards('h')>3) result2*=0.9;
// if(target.hp==4) result2*=0.9;
// if(target.hp==5) result2*=0.8;
// if(target.hp>5) result2*=0.6;
}
else{
result2+=temp02;

View File

@ -1,21 +1,20 @@
window.noname_update={
version:'1.9.111',
update:'1.9.110.10.1',
version:'1.9.111.1',
update:'1.9.111',
changeLog:[
'观星类技能操作逻辑修改',
'刘永、荀谌、童渊、TW于禁、万年公主、张宁',
'国战南华老仙、周夷',
'手杀新将',
'十周年武将修改',
'bug修复',
],
files:[
'card/extra.js',
//'card/extra.js',
//'card/gujian.js',
'card/guozhan.js',
//'card/guozhan.js',
//'card/gwent.js',
//'card/huanlekapai.js',
//'card/mtg.js',
//'card/sp.js',
'card/standard.js',
//'card/standard.js',
//'card/swd.js',
//'card/yunchou.js',
//'card/yingbian.js',
@ -31,19 +30,19 @@ window.noname_update={
'character/mobile.js',
//'character/mtg.js',
//'character/offline.js',
'character/old.js',
//'character/old.js',
//'character/ow.js',
'character/rank.js',
'character/refresh.js',
'character/shenhua.js',
'character/sp.js',
//'character/sp.js',
'character/sp2.js',
'character/tw.js',
'character/standard.js',
//'character/tw.js',
//'character/standard.js',
//'character/swd.js',
//'character/xianjian.js',
//'character/xinghuoliaoyuan.js',
'character/yingbian.js',
//'character/yingbian.js',
'character/yijiang.js',
//'character/yxs.js',
//'extension/boss/extension.js',
@ -54,11 +53,11 @@ window.noname_update={
//'layout/mobile/equip.css',
//'mode/boss.js',
//'mode/brawl.js',
//'mode/chess.js',
'mode/chess.js',
//'mode/connect.js',
//'mode/doudizhu.js',
'mode/guozhan.js',
//'mode/identity.js',
'mode/identity.js',
//'mode/single.js',
//'mode/stone.js',
//'mode/tafang.js',

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

BIN
image/character/simafu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

BIN
image/character/sunyi.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

BIN
image/character/yanpu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

View File

@ -1303,6 +1303,16 @@ body>.background.land {
bottom: 5px;
right: 5px;
text-align: right;
text-shadow: rgba(213, 194, 179,1) 0 0 3px,rgba(213, 194, 179,1) 0 0 3px,rgba(213, 194, 179,1) 0 0 3px,
rgba(213, 194, 179,1) 0 0 3px,black 0 0 3px;
}
.card>.gaintag {
bottom: 5px;
left: 5px;
text-align: left;
color: white;
text-shadow: rgba(255, 120, 0,1) 0 0 2px,rgba(255, 120, 0,1) 0 0 2px,rgba(255, 120, 0,1) 0 0 2px,
rgba(255, 120, 0,1) 0 0 2px,black 0 0 1px;
}
.card>.name {
top: 9px;
@ -1437,6 +1447,10 @@ div:not(.handcards)>.card>.info>span,
.button.card.button>.intro {
top: 69px;
}
.buttons.guanxing {
min-height: 110px;
width: 90%;
}
.buttons.smallzoom {
display: block;
zoom: 0.65
@ -1453,10 +1467,10 @@ div:not(.handcards)>.card>.info>span,
margin-left: 0px;
margin-right: 0px;
}
.buttons.scrollbuttons .button:first-child{
.buttons.scrollbuttons:not(.popup) .button:first-child{
margin-left: 12px;
}
.buttons.scrollbuttons .button:last-child{
.buttons.scrollbuttons:not(.popup) .button:last-child{
margin-right: 12px;
}
/*.buttons.smallzoom .card.button>.name,
@ -1869,11 +1883,14 @@ div:not(.handcards)>.card>.info>span,
}
.skill {
font-size: 5px;
left: 0 !important;
width: 70px !important;
white-space: nowrap;
}
.skilln {
left: 0 !important;
width: 70px !important;
}
.skill>.card {
transform: scale(0.56);
transform-origin: top left;
@ -1971,6 +1988,22 @@ div:not(.handcards)>.card>.info>span,
transform: none !important;
text-shadow: black 0 0 2px, black 0 0 3px;
}
.button.replaceButton,
.button.replaceButton.text{
left: 2px;
top: auto;
text-align: center;
width: 42px;
right: auto;
bottom: 3px;
background-image: linear-gradient(rgba(150, 47, 47, 1), rgba(132, 43, 43, 1));
border-radius: 3px;
}
.button.replaceButton>div{
width: 10px;
height: 10px;
}
/*--------确认--------*/
#control {
text-align: center;
@ -2096,6 +2129,7 @@ div:not(.handcards)>.card>.info>span,
width: 100%;
font-size: 12px;
text-align: center;
white-space: nowrap;
/*opacity: 0;*/
}
.player:hover>.nameol {
@ -2248,6 +2282,9 @@ div:not(.handcards)>.card>.info>span,
#window>.damage.fullscreenavatar[data-nature='thunder']:not(.noshadow)>div:first-child>div{
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 10px, rgba(0, 0, 0,0.3) 0 0 30px, rgba(100, 74, 139,1) 0 0 60px;
}
#window>.damage.fullscreenavatar[data-nature='kami']:not(.noshadow)>div:first-child>div{
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 10px, rgba(0, 0, 0,0.3) 0 0 30px, rgba(90, 118, 99,1) 0 0 60px;
}
#window>.damage.fullscreenavatar[data-nature='metal']>div:first-child>div{
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 10px, rgba(255, 0, 0,0.1) 0 0 30px, rgba(255, 203, 0,0.6) 0 0 80px;
}
@ -2257,6 +2294,9 @@ div:not(.handcards)>.card>.info>span,
#window>.damage.fullscreenavatar[data-nature='water']>div:first-child>div{
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 10px, rgba(0, 0, 0,0.3) 0 0 30px, rgba(78, 117, 140,1) 0 0 60px, rgba(78, 117, 140,1) 0 0 60px;
}
#window>.damage.fullscreenavatar[data-nature='ice']>div:first-child>div{
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 20px, rgba(0, 0, 0,0.3) 0 0 40px, rgba(213, 194, 179, 1) 0 0 80px;
}
#window>.damage.fullscreenavatar[data-nature='soil']>div:first-child>div{
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0,0.5) 0 0 10px, rgba(0, 0, 0,0.3) 0 0 30px, rgba(128, 59, 2,1) 0 0 60px;
}
@ -2724,28 +2764,38 @@ div:not(.handcards)>.card>.info>span,
background-image: radial-gradient(circle at bottom left, rgb(255, 218, 71), rgb(224, 191, 62))
}
.identitycircle > div > div[data-color='jin'] {
background-image: radial-gradient(circle at bottom left, rgb(100, 74, 139), rgb(96, 72, 136))
}
.identitycircle > div > div[data-color='key'] {
background-image: radial-gradient(circle at bottom left, rgb(203, 177, 255), rgb(203, 177, 255))
}
.unseen>.avatar,.unseen>.name:not(.name2),
.unseen2>.avatar2,.unseen2>.name2 {
opacity: 0 !important;
}
.player[data-position='0'].unseen>.avatar,
.player[data-position='0'].unseen2>.avatar2,
.player[data-position='0'].unseen>.name:not(.name2):not(.name_seat),
.player[data-position='0'].unseen2>.name2,
.unseen_v>.avatar,
.unseen2_v>.avatar2,
.unseen_v>.name:not(.name2):not(.name_seat),
.unseen2_v>.name2 {
#arena:not(.observe) .player[data-position='0'].unseen>.avatar,
#arena:not(.observe) .player[data-position='0'].unseen2>.avatar2,
#arena:not(.observe) .player[data-position='0'].unseen>.name:not(.name2):not(.name_seat),
#arena:not(.observe) .player[data-position='0'].unseen2>.name2,
#arena:not(.observe) .unseen_v>.avatar,
#arena:not(.observe) .unseen2_v>.avatar2,
#arena:not(.observe) .unseen_v>.name:not(.name2):not(.name_seat),
#arena:not(.observe) .unseen2_v>.name2 {
opacity: 0.2 !important
}
.player>.name_seat {
opacity: 0;
}
.player:not([data-position='0']).unseen.unseen2>.name_seat {
.player:not([data-position='0']).unseen.unseen2>.name_seat,
.player:not([data-position='0']):not(.fullskin2).unseen>.name_seat {
opacity: 1 !important;
}
.linked>.avatar,.linked>.avatar2 {
transform: rotate(-90deg);
}
@ -3187,6 +3237,47 @@ div:not(.handcards)>.card>.info>span,
left: calc(50% + 20px);
top: calc(50% + 80px)
}
#window>.player.connect[data-position='cx0']{
left:calc(150% / 7 - 1275px / 7);
top:calc(300% / 7 - 160px + 5px);
}
#window>.player.connect[data-position='cx1']{
left:calc(247% / 7 - 850px / 7);
top:calc(300% / 7 - 160px + 5px);
}
#window>.player.connect[data-position='cx2']{
left:calc(350% / 7 - 525px / 7);
top:calc(300% / 7 - 160px + 5px);
}
#window>.player.connect[data-position='cx3']{
left:calc(453% / 7 - 200px / 7);
top:calc(300% / 7 - 160px + 5px);
}
#window>.player.connect[data-position='cx4']{
left:calc(550% / 7 + 125px / 7);
top:calc(300% / 7 - 160px + 5px);
}
#window>.player.connect[data-position='cx5']{
left:calc(150% / 7 - 1275px / 7);
top:calc(400% / 7 - 40px + 5px);
}
#window>.player.connect[data-position='cx6']{
left:calc(247% / 7 - 850px / 7);
top:calc(400% / 7 - 40px + 5px);
}
#window>.player.connect[data-position='cx7']{
left:calc(350% / 7 - 525px / 7);
top:calc(400% / 7 - 40px + 5px);
}
#window>.player.connect[data-position='cx8']{
left:calc(453% / 7 - 200px / 7);
top:calc(400% / 7 - 40px + 5px);
}
#window>.player.connect[data-position='cx9']{
left:calc(550% / 7 + 125px / 7);
top:calc(400% / 7 - 40px + 5px);
}
#window>.player.connect {
width: 120px;
}
@ -3203,6 +3294,7 @@ div:not(.handcards)>.card>.info>span,
top: auto;
right: 20px;
bottom: 20px;
z-index: 5;
}
.connectevents.server{
left: 20px;
@ -3211,6 +3303,9 @@ div:not(.handcards)>.card>.info>span,
.connectevents.left{
transform: translateX(-85px);
}
.connectevents.left2{
transform: translateX(-170px);
}
.connectevents.icon{
width: 20px;
height: 20px;
@ -3334,6 +3429,7 @@ div:not(.handcards)>.card>.info>span,
#arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.name2,
#arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.info,
#arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.range,
#arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.gaintag,
#arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.addinfo,
#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.background,
#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.image,
@ -3341,6 +3437,7 @@ div:not(.handcards)>.card>.info>span,
#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.name2,
#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.info,
#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.range,
#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.gaintag,
#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.addinfo,
#arena.selecting:not(.video) #me .card:not(.selectable)>.background,
#arena.selecting:not(.video) #me .card:not(.selectable)>.image,
@ -3348,8 +3445,9 @@ div:not(.handcards)>.card>.info>span,
#arena.selecting:not(.video) #me .card:not(.selectable)>.name2,
#arena.selecting:not(.video) #me .card:not(.selectable)>.info,
#arena.selecting:not(.video) #me .card:not(.selectable)>.range,
#arena.selecting:not(.video) #me .card:not(.selectable)>.gaintag,
#arena.selecting:not(.video) #me .card:not(.selectable)>.addinfo,
#arena.selecting:not(.video) .dialog:not(.noselect) .button:not(.selectable):not(.noclick),
#arena.selecting:not(.video) .dialog:not(.noselect) .button:not(.selectable):not(.noclick):not(.replaceButton),
.dead,.likedead {
opacity: 0.6;
}
@ -3376,7 +3474,7 @@ div:not(.handcards)>.card>.info>span,
#window:not(.nopointer) .pointertable td>span,
#window:not(.nopointer) .config>.toggle.onoff,
#window:not(.nopointer) .pointerdialog .button:not(.unselectable),
#window:not(.nopointer) .dialog.fullheight .buttons .button:not(.selectedx):not(.glow):not(.forbidden),
#window:not(.nopointer) .dialog.fullheight .buttons .button:not(.selectedx):not(.glow):not(.glows):not(.forbidden),
#window:not(.nopointer) #arena.selecting:not(.video) .player .equips>.card.selectable,
#window:not(.nopointer) #arena.selecting #me .card.selectable,
#window:not(.nopointer) #arena.selecting .button.selectable,
@ -3432,6 +3530,7 @@ div:not(.handcards)>.card>.info>span,
.card.selectable>.name2,
.card.selectable>.info,
.card.selectable>.range,
.card.selectable>.gaintag,
.button.selectable {
opacity: 1;
}
@ -3446,6 +3545,12 @@ div:not(.handcards)>.card>.info>span,
.thunder {
color: rgba(0,80,255,0.3);
}
.kami {
color: rgba(90,118,99,0.3);
}
.ice {
color: rgba(0,153,255,0.3);
}
.poison {
color: rgba(30, 133, 51,0.4);
}
@ -3777,6 +3882,7 @@ span[data-nature='keymm'] {
.player .identity[data-color="ye"],
.player .identity[data-color="rYe"],
.player .identity[data-color="bYe"],
.player .identity[data-color="jin"],
div[data-nature='thunder'],
span[data-nature='thunder'] {
text-shadow: rgba(100, 74, 139,1) 0 0 2px,rgba(100, 74, 139,1) 0 0 5px,rgba(100, 74, 139,1) 0 0 10px,
@ -3793,6 +3899,23 @@ span[data-nature='thundermm'] {
rgba(100, 74, 139,1) 0 0 2px,black 0 0 1px;
}
.player .identity[data-color="kami"],
div[data-nature='kami'],
span[data-nature='kami'] {
text-shadow: rgba(90, 118, 99,1) 0 0 2px,rgba(90, 118, 99,1) 0 0 5px,rgba(90, 118, 99,1) 0 0 10px,
rgba(90, 118, 99,1) 0 0 10px,rgba(90, 118, 99,1) 0 0 20px,rgba(90, 118, 99,1) 0 0 20px,black 0 0 1px;
}
div[data-nature='kamim'],
span[data-nature='kamim'] {
text-shadow: rgba(90, 118, 99,1) 0 0 2px,rgba(90, 118, 99,1) 0 0 5px,rgba(90, 118, 99,1) 0 0 5px,
rgba(90, 118, 99,1) 0 0 5px,black 0 0 1px;
}
div[data-nature='kamimm'],
span[data-nature='kamimm'] {
text-shadow: rgba(90, 118, 99,1) 0 0 2px,rgba(90, 118, 99,1) 0 0 2px,rgba(90, 118, 99,1) 0 0 2px,
rgba(90, 118, 99,1) 0 0 2px,black 0 0 1px;
}
.player .identity[data-color="fan"],
.player .identity[data-color="wu"],
div[data-nature='wood'],
@ -3883,6 +4006,27 @@ span[data-nature='graymx'] {
rgba(213, 194, 179,1) 0 0 5px,black 0 0 1px;
}
div[data-nature='ice'],
span[data-nature='ice'] {
text-shadow: rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 5px,rgba(213, 194, 179,1) 0 0 10px,
rgba(213, 194, 179,1) 0 0 10px,rgba(213, 194, 179,1) 0 0 20px,rgba(213, 194, 179,1) 0 0 20px,black 0 0 1px;
}
div[data-nature='icem'],
span[data-nature='icem'] {
text-shadow: rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 5px,rgba(213, 194, 179,1) 0 0 5px,
rgba(213, 194, 179,1) 0 0 5px,black 0 0 1px;
}
div[data-nature='icemm'],
span[data-nature='icemm'] {
text-shadow: rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 2px,
rgba(213, 194, 179,1) 0 0 2px,black 0 0 1px;
}
div[data-nature='icemx'],
span[data-nature='icemx'] {
text-shadow: black 0 0 1px,rgba(213, 194, 179,0.2) 0 0 2px,rgba(213, 194, 179,1) 0 0 2px,rgba(213, 194, 179,1) 0 0 5px,
rgba(213, 194, 179,1) 0 0 5px,black 0 0 1px;
}
.player .identity[data-color="unknownx"],
div[data-nature='black'],
span[data-nature='black'] {
@ -4048,6 +4192,14 @@ div[data-decoration="bronze"]::after{
color: #152E63;
border: 1px solid #152E63;
}
.card.fullskin.kami>.name {
color: #1F3C38;
border: 1px solid #1F3C38;
}
.card.fullskin.ice>.name {
color: #3B6273;
border: 1px solid #3B6273;
}
.card.fullskin.fire>.name {
color: #631515;
border: 1px solid #631515;
@ -4220,10 +4372,16 @@ div[data-decoration="bronze"]::after{
.greentext {
color: rgb(104,221,127);
}
.icetext {
color: rgb(59, 98, 115);
}
.thundertext,
.controlthundertext {
color: rgb(117,186,255);
}
.kamitext {
color: rgb(90,118,99);
}
.whitetext .thundertext {
color: white;
}
@ -4313,15 +4471,12 @@ div[data-decoration="bronze"]::after{
top: 74px;
right: 6px;
}
.tempname {
font-family: 'huangcao','xinwei';
font-size: 20px;
color: white !important;
pointer-events: none;
}
.card .tempname {
top: 6px;
left: 6px;
font-size: 22px;
color: white !important;
pointer-events: none;
}
/*.card.equip1 .wunature,
.card.equip3 .wunature,
@ -4409,6 +4564,11 @@ div[data-decoration="bronze"]::after{
#me>div:not(.scrollh)>.handcards>.card.selected{
top:-20px;
}*/
#me .card.glows {
opacity: 1;
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px,rgb(255, 153, 51) 0 0 5px, rgba(255, 153, 51,1) 0 0 10px;
}
.glow:not(.button):not(.card){
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 133, 255, 0.4) 0 0 5px, rgba(0, 133, 255, 0.5) 0 0 12px, rgba(0, 133, 255, 0.8) 0 0 15px !important;
}
@ -5171,4 +5331,4 @@ div[data-decoration="bronze"]::after{
/*--------其它--------*/
::-webkit-scrollbar {
display: none;
}
}

View File

@ -517,11 +517,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
return grids;
},
chooseToMove:function(num,prompt){
var next=game.createEvent('chooseToMove');
chooseToMoveChess:function(num,prompt){
var next=game.createEvent('chooseToMoveChess');
next.num=num||1;
next.player=this;
next.setContent('chooseToMove');
next.setContent('chooseToMoveChess');
next.prompt=prompt;
return next;
},
@ -1243,7 +1243,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
game.modeSwapPlayer(player);
}
},
chooseToMove:function(){
chooseToMoveChess:function(){
"step 0"
if(!player.movable(0,1)&&!player.movable(0,-1)&&
!player.movable(1,0)&&!player.movable(-1,0)){
@ -5102,7 +5102,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
content:function(){
"step 0"
player.chooseToMove(2,get.prompt('pianyi'));
player.chooseToMoveChess(2,get.prompt('pianyi'));
"step 1"
if(result.bool){
player.logSkill('pianyi');
@ -5119,7 +5119,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
content:function(){
"step 0"
player.chooseToMove(player.getHistory('useCard',function(evt){
player.chooseToMoveChess(player.getHistory('useCard',function(evt){
return evt.card.name=='sha';
}).length,get.prompt('lingdong'));
"step 1"
@ -5308,7 +5308,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
"step 0"
var move=2;
move=game.checkMod(player,move,'chessMove',player);
player.chooseToMove(move).phasing=true;
player.chooseToMoveChess(move).phasing=true;
"step 1"
if(ui.confirm){
ui.confirm.classList.add('removing');

View File

@ -722,25 +722,30 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
return !lib.filter.cardDiscardable(card,player,'gzduannian');
},'h');
},
check:function(card){
check:function(event,player){
return player.countCards('h',function(card){
return get.value(card)>=6;
})<=Math.max(1,player.countCards('h')/2);
},
content:function(){
'step 0'
var cards=player.getCards('h',function(card){
return lib.filter.cardDiscardable(card,player,'gzduannian');
});
if(cards.length){
player.discard(cards);
player.draw(cards.length);
}
else event.finish();
'step 1'
player.drawTo(Math.min(5,player.maxHp));
},
},
gzlianyou:{
trigger:{player:'die'},
direct:true,
forceDie:true,
skillAnimation:true,
animationColor:'fire',
content:function(){
'step 0'
player.chooseTarget(lib.filter.notMe,get.prompt('gzlianyou'),'令一名其他角色获得〖兴火〗').set('forceDie',true).set('ai',function(target){
@ -757,7 +762,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
derivation:'gzxinghuo',
},
gzxinghuo:{
trigger:{player:'damageBegin1'},
trigger:{source:'damageBegin1'},
forced:true,
filter:function(event){
return event.nature=='fire';

View File

@ -2826,20 +2826,20 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
silent:true,
content:function(){
"step 0"
if(player.isUnderControl()){
game.swapPlayerAuto(player);
}
var num=3;
var cards=get.cards(num);
event.cards=cards;
var switchToAuto=function(){
_status.imchoosing=false;
if(event.dialog) event.dialog.close();
if(event.control) event.control.close();
var cards=get.cards(3);
game.cardsGotoOrdering(cards);
var next=player.chooseToMove();
next.set('list',[
['牌堆顶',cards],
['牌堆底'],
]);
next.set('prompt','观星:点击将牌移动到牌堆顶或牌堆底');
next.processAI=function(list){
var cards=list[0][1],player=_status.event.player;
var top=[];
var judges=player.getCards('j');
var stopped=false;
if(!player.countCards('h','wuxie')){
if(!player.hasWuxie()){
for(var i=0;i<judges.length;i++){
var judge=get.judge(judges[i]);
cards.sort(function(a,b){
@ -2864,148 +2864,22 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
}
bottom=cards;
for(var i=0;i<top.length;i++){
ui.cardPile.insertBefore(top[i],ui.cardPile.firstChild);
}
for(i=0;i<bottom.length;i++){
ui.cardPile.appendChild(bottom[i]);
}
player.popup(get.cnNumber(top.length)+'上'+get.cnNumber(bottom.length)+'下');
game.log(player,'将'+get.cnNumber(top.length)+'张牌置于牌堆顶');
game.delay(2);
};
var chooseButton=function(online,player,cards){
var event=_status.event;
player=player||event.player;
cards=cards||event.cards;
event.top=[];
event.bottom=[];
event.status=true;
event.dialog=ui.create.dialog('按顺序选择置于牌堆顶的牌(先选择的在上)',cards);
for(var i=0;i<event.dialog.buttons.length;i++){
event.dialog.buttons[i].classList.add('pointerdiv');
}
event.switchToAuto=function(){
event._result='ai';
event.dialog.close();
event.control.close();
_status.imchoosing=false;
},
event.control=ui.create.control('ok','pileTop','pileBottom',function(link){
var event=_status.event;
if(link=='ok'){
if(online){
event._result={
top:[],
bottom:[]
}
for(var i=0;i<event.top.length;i++){
event._result.top.push(event.top[i].link);
}
for(var i=0;i<event.bottom.length;i++){
event._result.bottom.push(event.bottom[i].link);
}
}
else{
var i;
for(i=0;i<event.top.length;i++){
ui.cardPile.insertBefore(event.top[i].link,ui.cardPile.firstChild);
}
for(i=0;i<event.bottom.length;i++){
ui.cardPile.appendChild(event.bottom[i].link);
}
for(i=0;i<event.dialog.buttons.length;i++){
if(event.dialog.buttons[i].classList.contains('glow')==false&&
event.dialog.buttons[i].classList.contains('target')==false)
ui.cardPile.appendChild(event.dialog.buttons[i].link);
}
player.popup(get.cnNumber(event.top.length)+'上'+get.cnNumber(event.cards.length-event.top.length)+'下');
game.log(player,'将'+get.cnNumber(event.top.length)+'张牌置于牌堆顶');
}
event.dialog.close();
event.control.close();
game.resume();
_status.imchoosing=false;
}
else if(link=='pileTop'){
event.status=true;
event.dialog.content.childNodes[0].innerHTML='按顺序选择置于牌堆顶的牌';
}
else{
event.status=false;
event.dialog.content.childNodes[0].innerHTML='按顺序选择置于牌堆底的牌';
}
})
for(var i=0;i<event.dialog.buttons.length;i++){
event.dialog.buttons[i].classList.add('selectable');
}
event.custom.replace.button=function(link){
var event=_status.event;
if(link.classList.contains('target')){
link.classList.remove('target');
event.top.remove(link);
}
else if(link.classList.contains('glow')){
link.classList.remove('glow');
event.bottom.remove(link);
}
else if(event.status){
link.classList.add('target');
event.top.unshift(link);
}
else{
link.classList.add('glow');
event.bottom.push(link);
}
}
event.custom.replace.window=function(){
for(var i=0;i<_status.event.dialog.buttons.length;i++){
_status.event.dialog.buttons[i].classList.remove('target');
_status.event.dialog.buttons[i].classList.remove('glow');
_status.event.top.length=0;
_status.event.bottom.length=0;
}
}
game.pause();
game.countChoose();
};
event.switchToAuto=switchToAuto;
if(event.isMine()){
chooseButton();
event.finish();
}
else if(event.isOnline()){
event.player.send(chooseButton,true,event.player,event.cards);
event.player.wait();
game.pause();
}
else{
event.switchToAuto();
event.finish();
return [top,bottom];
}
"step 1"
if(event.result=='ai'||!event.result){
event.switchToAuto();
var top=result.moved[0];
var bottom=result.moved[1];
top.reverse();
for(var i=0;i<top.length;i++){
ui.cardPile.insertBefore(top[i],ui.cardPile.firstChild);
}
else{
var top=event.result.top||[];
var bottom=event.result.bottom||[];
for(var i=0;i<top.length;i++){
ui.cardPile.insertBefore(top[i],ui.cardPile.firstChild);
}
for(i=0;i<bottom.length;i++){
ui.cardPile.appendChild(bottom[i]);
}
for(i=0;i<event.cards.length;i++){
if(!top.contains(event.cards[i])&&!bottom.contains(event.cards[i])){
ui.cardPile.appendChild(event.cards[i]);
}
}
player.popup(get.cnNumber(top.length)+'上'+get.cnNumber(event.cards.length-top.length)+'下');
game.log(player,'将'+get.cnNumber(top.length)+'张牌置于牌堆顶');
game.delay(2);
for(i=0;i<bottom.length;i++){
ui.cardPile.appendChild(bottom[i]);
}
player.popup(get.cnNumber(top.length)+'上'+get.cnNumber(bottom.length)+'下');
game.log(player,'将'+get.cnNumber(top.length)+'张牌置于牌堆顶');
game.updateRoundNumber();
game.delayx();
}
},
identity_dajiang:{