新武将、皮肤

This commit is contained in:
libccy 2015-06-28 00:21:25 +08:00
parent 59209fcfad
commit 5057225508
28 changed files with 826 additions and 150 deletions

View File

@ -124,6 +124,17 @@ card.extra={
},
target:function(player,target){
if(target.skills.contains('huogong2')||target.num('h')==0) return 0;
if(target==player){
if(_status.event.filterCard({name:'huogong'})){
return -1.5;
}
if(_status.event.skill){
var viewAs=get.info(_status.event.skill).viewAs;
if(viewAs=='huogong') return -1.5;
if(viewAs&&viewAs.name=='huogong') return -1.5;
}
return 0;
}
return -1.5;
}
},

View File

@ -175,6 +175,7 @@ card.shenqi={
shouna:{
trigger:{global:'discardAfter'},
filter:function(event,player){
if(player.skills.contains('shouna2')) return false;
if(_status.currentPhase==event.player) return false;
if(event.player==player) return false;
for(var i=0;i<event.cards.length;i++){
@ -208,6 +209,7 @@ card.shenqi={
"step 2"
if(result.bool){
player.logSkill('shouna');
player.addTempSkill('shouna2','phaseAfter');
player.$gain2(result.buttons[0].link);
event.hu.storage.shouna.push(result.buttons[0].link);
ui.special.appendChild(result.buttons[0].link);
@ -216,6 +218,7 @@ card.shenqi={
}
},
},
shouna2:{},
donghuangzhong:{
mode:['identity','guozhan'],
enable:'phaseUse',
@ -648,7 +651,7 @@ card.shenqi={
lianhua:'炼化',
lianhua_info:'出牌阶段限一次,你可以弃置两张炼妖壶中的牌,从牌堆中获得一张与弃置的牌类别均不相同的牌',
shouna:'收纳',
shouna_info:'当一名其他角色于回合外弃置的卡牌进入弃牌堆后,你可以选择其中的一张放入炼妖壶',
shouna_info:'当一名其他角色于回合外弃置的卡牌进入弃牌堆后,你可以选择其中的一张放入炼妖壶,每名角色的回合限一次',
// donghuangzhong_info:'出牌阶段你可以将一名已死亡角色永久移出游戏然后回复一点体力或创建一名与你身份相同的新角色然后流失X点体力X为新角色的体力上限',
// xuanyuanjian_info:'锁定技你使用的杀无视距离可以额外指定一个目标每当你造成一次伤害有50的机率使伤害加一并变为雷属性。任何时候若你体力值不超过2则立即失去轩辕剑',
pangufu_info:'锁定技,每当你造成一次伤害,受伤角色须弃置一张牌',

View File

@ -196,7 +196,24 @@ card.standard={
},
result:{
target:function(player,target){
if(target.num('h')<=target.hp&&target.hp>2) return 0;
var nh=target.num('h');
var keep=false;
if(nh<=target.hp){
keep=true;
}
else if(nh==target.hp+1&&target.hp>=3){
keep=true;
}
if(target.hp>=2&&keep&&target.hasFriend()){
if(target.hp>2) return 0;
if(target.hp==2){
for(var i=0;i<game.players.length;i++){
if(target!=game.players[i]&&ai.get.attitude(target,game.players[i])>=3&&game.players[i].hp<=1){
return 0;
}
}
}
}
if(target.hp<0&&target!=player&&target.identity!='zhu') return 0;
var att=ai.get.attitude(player,target);
if(att<3&&att>=0) return 0;
@ -908,11 +925,15 @@ card.standard={
}
else{
if(!card.expired){
var target=player.next;
if(target.num('j','shandian')&&!target.next.num('j','shandian')){
target=target.next;
}
if(card.name!='shandian'){
player.next.addJudge('shandian',card);
target.addJudge('shandian',card);
}
else{
player.next.addJudge(card);
target.addJudge(card);
}
}
else{
@ -922,7 +943,16 @@ card.standard={
},
cancel:function(){
if(!card.expired){
player.next.addJudge(card);
var target=player.next;
if(target.num('j','shandian')&&!target.next.num('j','shandian')){
target=target.next;
}
if(card.name!='shandian'){
target.addJudge('shandian',card);
}
else{
target.addJudge(card);
}
}
else{
card.expired=false;
@ -1486,7 +1516,7 @@ card.standard={
["spade",6,"qinggang"],
["spade",5,"qinglong"],
["spade",12,"zhangba"],
["spade",5,"guanshi"],
["diamond",5,"guanshi"],
["diamond",12,"fangtian"],
["heart",5,"qilin"],

View File

@ -34,6 +34,10 @@ card.yibao={
}
else{
if(!card.expired){
var target=player.next;
if(target.num('j','huoshan')&&!target.next.num('j','huoshan')){
target=target.next;
}
if(card.name!='huoshan'){
player.next.addJudge('huoshan',card);
}
@ -47,7 +51,21 @@ card.yibao={
}
},
cancel:function(){
player.next.addJudge(card);
if(!card.expired){
var target=player.next;
if(target.num('j','huoshan')&&!target.next.num('j','huoshan')){
target=target.next;
}
if(card.name!='huoshan'){
player.next.addJudge('huoshan',card);
}
else{
player.next.addJudge(card);
}
}
else{
card.expired=false;
}
},
ai:{
basic:{
@ -131,11 +149,15 @@ card.yibao={
}
else{
if(!card.expired){
var target=player.next;
if(target.num('j','hongshui')&&!target.next.num('j','hongshui')){
target=target.next;
}
if(card.name!='hongshui'){
player.next.addJudge('hongshui',card);
target.addJudge('hongshui',card);
}
else{
player.next.addJudge(card);
target.addJudge(card);
}
}
else{
@ -144,7 +166,21 @@ card.yibao={
}
},
cancel:function(){
player.next.addJudge(card);
if(!card.expired){
var target=player.next;
if(target.num('j','hongshui')&&!target.next.num('j','hongshui')){
target=target.next;
}
if(card.name!='hongshui'){
target.addJudge('hongshui',card);
}
else{
target.addJudge(card);
}
}
else{
card.expired=false;
}
},
ai:{
basic:{

View File

@ -239,6 +239,7 @@ character.diy={
ai:{
skillTagFilter:function(player){
if(player.storage.guihan) return false;
if(player.hp>0) return false;
},
save:true,
result:{

View File

@ -136,6 +136,7 @@ character.fire={
ai:{
skillTagFilter:function(player){
if(player.storage.niepan) return false;
if(player.hp>0) return false;
},
save:true,
result:{

View File

@ -533,6 +533,10 @@ character.gujian={
},
ai:{
save:true,
skillTagFilter:function(player){
if(player.storage.shahun) return false;
if(player.hp>0) return false;
},
result:{
player:3
}

View File

@ -1,51 +1,519 @@
'use strict';
character.hearth={
character:{
// hs_jaina:['female','wei',3,[],['fullskin']],
// hs_rexxar:['male','qun',4,[],['fullskin']],
// hs_uther:['male','qun',4,[],['fullskin']],
// hs_garrosh:['male','qun',4,[],['fullskin']],
hs_jaina:['female','wei',3,['huopu','bianxing','bingjia'],['fullskin']],
hs_rexxar:['male','qun',4,['shoulie','gongji'],['fullskin']],
hs_uther:['male','qun',4,['fengxian','jieming'],['fullskin']],
hs_garrosh:['male','qun',4,['zhanhou','qiangxi'],['fullskin']],
hs_malfurion:['male','wu',4,['jihuo'],['fullskin']],
hs_guldan:['male','wei',3,['fenliu','hongxi'],['fullskin']],
// hs_anduin:['male','qun',4,[],['fullskin']],
hs_thrall:['male','qun',4,['tuteng','tzhenji'],['fullskin']],
hs_guldan:['male','qun',3,['fenliu','hongxi'],['fullskin']],
hs_anduin:['male','qun',3,['shengguang','shijie','anying'],['fullskin']],
hs_thrall:['male','wu',4,['tuteng','tzhenji'],['fullskin']],
hs_waleera:['female','qun',3,['jianren','mengun','wlianji'],['fullskin']],
hs_medivh:['male','wei',3,['jingxiang','moying','xianzhi'],['fullskin']],
// hs_alleria:['male','qun',3,[],['fullskin']],
// hs_magni:['male','qun',3,['jingxiang'],['fullskin']],
hs_medivh:['male','wei',3,['jingxiang','moying','mdzhoufu'],['fullskin']],
hs_alleria:['male','wu',3,['fengxing','qiaodong','liegong'],['fullskin']],
hs_magni:['male','qun',4,['zhongjia','dunji'],['fullskin']],
},
skill:{
moying:{
trigger:{player:'phaseEnd'},
zhongjia:{
trigger:{player:'damageEnd'},
forced:true,
filter:function(event){
return event.num>0;
},
content:function(){
player.changeHujia();
},
ai:{
nohujia:true,
skillTagFilter:function(player){
return player.hp>1;
},
threaten:function(player,target){
if(!target.hujia) return 0.8;
},
effect:{
target:function(card,player,target){
if(get.tag(card,'damage')){
if(player.skills.contains('jueqing')) return [1,-1];
return 0.8;
}
}
}
}
},
dunji:{
enable:'phaseUse',
filter:function(event,player){
return !player.getStat('damage');
return player.hujia?true:false;
},
filterTarget:function(card,player,target){
return player!=target;
},
selectTarget:function(){
return [1,_status.event.player.hujia];
},
content:function(){
if(target==targets[0]){
player.changeHujia(-player.hujia);
}
target.damage();
},
ai:{
order:9,
result:{
target:function(player,target){
return ai.get.damageEffect(target,player,target)+0.5;
}
}
}
},
fengxing:{
trigger:{player:['useCard','respondAfter']},
frequent:true,
filter:function(event){
return event.card&&event.card.name=='sha';
},
content:function(){
player.draw();
}
},
fengxian:{
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return target.num('h')>0;
},
selectTarget:-1,
content:function(){
target.chooseToDiscard(true);
},
ai:{
order:8,
result:{
target:function(player,target){
var nh=target.num('h');
switch(nh){
case 0:return 0;
case 1:return -1.5;
case 2:return -1.3;
case 3:return -1;
default:return -0.8;
}
}
}
}
},
qiaodong:{
enable:['chooseToRespond'],
filterCard:{type:'equip'},
viewAs:{name:'shan'},
position:'he',
prompt:'将一张装备牌当闪使用或打出',
check:function(){return 1},
ai:{
respondShan:true,
skillTagFilter:function(player){
if(!player.num('he',{type:'equip'})) return false;
}
}
},
zhanhou:{
init:function(player){
player.forcemin=true;
},
enable:'phaseUse',
filterCard:{type:'equip'},
check:function(){
return 1;
},
content:function(){
player.changeHujia();
},
ai:{
order:2,
result:{
player:1
}
},
mod:{
globalFrom:function(from,to,distance){
return distance-from.hujia;
}
},
},
shijie:{
trigger:{player:'phaseEnd'},
direct:true,
filter:function(event,player){
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player&&game.players[i].num('h')){
return true;
}
}
return false;
},
content:function(){
'step 0'
player.chooseTarget('是否发动【视界】',function(card,player,target){
return player!=target&&target.num('h')>0;
}).ai=function(target){
return 11-ai.get.attitude(player,target);
};
'step 1'
if(result.bool){
player.logSkill('shijie',result.targets);
var target=result.targets[0];
player.gain(target.get('h').randomGet());
event.target=target;
target.$give(1,player);
game.delay();
event.target.draw();
}
},
ai:{
expose:0.1
}
},
shengguang:{
enable:'phaseUse',
filterCard:{color:'red'},
filter:function(event,player){
return player.num('he',{color:'red'})>0;
},
position:'he',
usable:1,
check:function(card){
return 9-ai.get.value(card)
},
filterTarget:function(card,player,target){
if(player.storage.anying) return true;
if(target.hp>=target.maxHp) return false;
return true;
},
content:function(){
'step 0'
if(player.storage.anying){
target.loseHp();
event.finish();
}
else{
target.recover();
}
'step 1'
if(target.hp<target.maxHp){
target.draw();
}
},
ai:{
order:9,
result:{
target:function(player,target){
if(player.storage.anying) return -1;
if(target.hp==1) return 5;
if(player==target&&player.num('h')>player.hp) return 5;
return 2;
}
},
threaten:2,
expose:0.2
}
},
xinci:{
enable:'phaseUse',
filterCard:{color:'black'},
filter:function(event,player){
return player.num('he',{color:'black'})>0;
},
position:'he',
usable:1,
mark:true,
intro:{
content:'已进入暗影形态'
},
check:function(card){
return 9-ai.get.value(card)
},
filterTarget:true,
content:function(){
target.loseHp();
},
ai:{
order:9,
result:{
target:-1
},
threaten:2,
expose:0.2
}
},
anying:{
unique:true,
enable:'phaseUse',
filter:function(event,player){
return !player.storage.anying&&player.num('he',{color:'black'})>1;
},
selectCard:2,
filterCard:{color:'black'},
position:'he',
check:function(card){
return 5-ai.get.value(card);
},
content:function(){
player.storage.anying=true;
player.removeSkill('shengguang');
player.addSkill('xinci');
},
ai:{
order:1,
result:{
player:1
}
}
},
bianxing:{
trigger:{global:'useCard'},
filter:function(event,player){
if(player.skills.contains('bianxing2')) return false;
if(event.player==player) return false;
if(_status.currentPhase!=event.player) return false;
if(!event.targets) return false;
if(event.targets.length!=1) return false;
var hs=player.get('h');
for(var i=0;i<hs.length;i++){
if(hs[i].name!=event.card.name){
if(lib.filter.filterTarget(hs[i],event.player,event.targets[0])){
var select=get.select(get.info(hs[i]).selectTarget);
if(select[0]<=1&&select[1]>=1){
return true;
}
}
}
}
return false;
},
direct:true,
content:function(){
"step 0"
player.chooseTarget('是否发动【魔影】?').ai=function(target){
if(player.skills.contains('xianzhi')){
return -ai.get.attitude(player,target);
'step 0'
var eff=ai.get.effect(trigger.targets[0],trigger.card,trigger.player,player);
var att=ai.get.attitude(player,trigger.player);
player.chooseCard('是否发动【变形】?',function(card){
if(card.name!=trigger.card.name&&
lib.filter.filterTarget(card,trigger.player,trigger.targets[0])){
var select=get.select(get.info(card).selectTarget);
if(select[0]<=1&&select[1]>=1){
return true;
}
}
return 0;
return false;
}).ai=function(card){
if(att>=0) return 0;
return ai.get.effect(trigger.targets[0],card,trigger.player,player)-eff;
};
"step 1"
'step 1'
if(result.bool){
event.target=result.targets[0];
event.target.judge(function(card){
return get.color(card)=='red'?1:-1;
});
player.logSkill('moying',event.target);
var card=result.cards[0];
player.lose(result.cards);
event.cards=result.cards;
player.logSkill('bianxing',trigger.player);
game.delay(0.5);
trigger.untrigger();
trigger.card=card;
trigger.cards=[card];
player.addTempSkill('bianxing2','phaseAfter');
}
else{
event.finish();
}
"step 2"
if(result.bool){
event.target.draw();
'step 2'
player.$throw(event.cards);
game.delay();
trigger.trigger('useCard');
},
ai:{
expose:0.2,
threaten:1.8
}
},
bingjia:{
enable:'phaseUse',
filter:function(event,player){
return !player.skills.contains('bingjia2');
},
filterCard:{color:'black'},
check:function(card){
return 6-ai.get.value(card);
},
discard:false,
prepare:function(cards,player){
player.$give(1,player);
},
content:function(){
player.storage.bingjia=cards[0];
player.addSkill('bingjia2');
},
ai:{
order:1,
result:{
player:1
}
}
},
bingjia2:{
mark:true,
trigger:{target:'useCardToBegin'},
forced:true,
filter:function(event,player){
return event.player!=player&&event.card.number==player.storage.bingjia.number;
},
content:function(){
'step 0'
player.showCards([player.storage.bingjia],get.translation(player)+'发动了【冰甲】');
'step 1'
ui.discardPile.appendChild(player.storage.bingjia);
delete player.storage.bingjia;
player.changeHujia(2);
player.removeSkill('bingjia2');
},
intro:{
mark:function(dialog,content,player){
if(player==game.me||player.isUnderControl()){
dialog.add([player.storage.bingjia]);
}
else{
return '已发动冰甲';
}
},
content:function(content,player){
if(player==game.me||player.isUnderControl()){
return get.translation(player.storage.bingjia);
}
return '已发动冰甲';
}
}
},
bianxing2:{},
moying:{
trigger:{player:'phaseBegin'},
filter:function(){
for(var i=0;i<game.players.length;i++){
if(game.players[i].num('j','shandian')){
return false;
}
}
return true;
},
forced:true,
check:function(){
return false;
},
content:function(){
'step 0'
var card=null;
for(var i=0;i<ui.cardPile.childNodes.length;i++){
if(ui.cardPile.childNodes[i].name=='shandian'){
card=ui.cardPile.childNodes[i];break;
}
}
if(!card){
for(var i=0;i<ui.discardPile.childNodes.length;i++){
if(ui.discardPile.childNodes[i].name=='shandian'){
card=ui.discardPile.childNodes[i];break;
}
}
}
if(card){
player.addJudge(card);
}
'step 1'
game.delay();
},
ai:{
threaten:1.5
}
},
mdzhoufu:{
enable:'phaseUse',
filterCard:{color:'black'},
filter:function(event,player){
return player.num('h',{color:'black'})>0;
},
filterTarget:function(card,player,target){
return player!=target&&!target.skills.contains('mdzhoufu2');
},
prepare:function(cards,player){
player.$throw(cards);
},
discard:false,
content:function(){
target.$gain2(cards);
target.storage.mdzhoufu2=cards[0];
target.addSkill('mdzhoufu2');
target.storage.mdzhoufu3=player;
ui.special.appendChild(cards[0]);
},
check:function(card){
return 3-ai.get.value(card)
},
ai:{
expose:0.1,
order:1,
result:{
player:1
}
}
},
mdzhoufu2:{
trigger:{player:'judge'},
forced:true,
priority:10,
mark:'card',
content:function(){
"step 0"
ui.discardPile.appendChild(player.storage.mdzhoufu2);
player.$throw(player.storage.mdzhoufu2);
if(player.storage.mdzhoufu3.isAlive()){
player.storage.mdzhoufu3.draw();
}
else{
game.delay(1.5);
}
"step 1"
player.judging=player.storage.mdzhoufu2;
trigger.position.appendChild(player.storage.mdzhoufu2);
// trigger.untrigger();
game.log(get.translation(player)+'的判定牌改为'+get.translation(player.storage.mdzhoufu2));
player.removeSkill('mdzhoufu2');
delete player.storage.mdzhoufu2;
delete player.storage.mdzhoufu3;
},
intro:{
content:'card'
},
},
moying_old:{
trigger:{player:'damageEnd',source:'damageEnd'},
check:function(event,player){
var target=(player==event.player)?event.source:event.player;
return ai.get.attitude(player,target)<0;
},
filter:function(event,player){
var target=(player==event.player)?event.source:event.player;
return target.isAlive();
},
prompt:function(event,player){
var target=(player==event.player)?event.source:event.player;
return '是否对'+get.translation(target)+'发动【魔影】?';
},
content:function(){
"step 0"
event.target=(player==trigger.player)?trigger.source:trigger.player;
event.target.judge(function(card){
return get.color(card)=='black'?-1:0;
});
"step 1"
if(result.color=='black'){
event.target.loseHp();
}
},
@ -56,7 +524,7 @@ character.hearth={
},
xianzhi:{
trigger:{global:'judgeBegin'},
frequent:true,
direct:true,
filter:function(){
return ui.cardPile.childNodes.length>1;
},
@ -77,6 +545,7 @@ character.hearth={
};
'step 1'
if(result.control=='调换顺序'){
player.logSkill('xianzhi');
var card=ui.cardPile.firstChild;
ui.cardPile.removeChild(card);
ui.cardPile.insertBefore(card,ui.cardPile.firstChild.nextSibling);
@ -85,7 +554,9 @@ character.hearth={
},
ai:{
expose:0.1,
rejudge:0.5
tag:{
rejudge:0.5
}
}
},
jingxiang:{
@ -579,6 +1050,8 @@ character.hearth={
}
},
translate:{
hs_alleria:'奥蕾莉亚',
hs_magni:'麦格尼',
hs_medivh:'麦迪文',
hs_jaina:'吉安娜',
hs_rexxar:'雷克萨',
@ -590,11 +1063,38 @@ character.hearth={
hs_thrall:'萨尔',
hs_waleera:'瓦莉拉',
fengxing:'风行',
fengxing_info:'每当你使用或打出一张杀,你可以摸一张牌',
xinci:'心刺',
xinci_info:'出牌阶段限一次,你可以弃置一张黑色牌令一名角色流失一点体力',
zhongjia:'重甲',
zhongjia_info:'锁定技每当你受到一次伤害你获得一点护甲值当你的体力值大于1时你的护甲不为你抵挡伤害',
dunji:'盾击',
dunji_info:'出牌阶段限,你可以失去你的所有护甲,并对等量的其他角色各造成一点伤害',
qiaodong:'巧动',
qiaodong_info:'你可以将一张装备牌当作当使用或打出',
fengxian:'奉献',
fengxian_info:'出牌阶段限一次,你可以令场上所有角色各弃置一张手牌',
zhanhou:'战吼',
zhanhou_info:'锁定技,你没有装备区,你可以弃置一张装备牌并获得一点护甲值;每有一点护甲值,你与其他角色的距离-1',
anying:'暗影',
anying_info:'限定技,出牌阶段,你可以弃置两张黑色牌,失去技能圣光,并获得技能心刺',
shijie:'视界',
shijie_info:'回合结束阶段,你可以获得一名其他角色的一张手牌,然后该角色摸一张牌',
shengguang:'圣光',
shengguang_info:'出牌阶段限一次,你可以弃置一张红色牌令一名角色回复一点体力,若其仍处于受伤状态则摸一张牌',
bingjia:'冰甲',
bingjia2:'冰甲',
bingjia_info:'出牌阶段,若你武将牌上没有牌,你可以将一张黑色手牌背面朝上置于你的武将牌上,当你成为其他角色的与此牌点数相同的牌的目标时,你将此牌置于弃牌堆,并获得两点护甲值',
bianxing:'变形',
bianxing_info:'当一其他角色于回合内使用卡牌指定了惟一目标后,你可以用一张与之不同名的手牌替代此牌(使用者及目标必须合理),每名角色的回合限一次',
xianzhi:'先知',
xianzhi_info:'任意一名角色进行判定前,你可以观看牌堆顶的两张牌,并可以将其调换顺序',
mdzhoufu:'诅咒',
mdzhoufu_info:'出牌阶段,你可以将一张黑色手牌置于一名其他角色的武将牌上,在其判定时以此牌作为判定结果;当受此技能影响的角色进行判定时,你摸一张牌',
moying:'魔影',
moying_info:'回合结束阶段,若你本回合内没有造成伤害,可以指定一名角色进行判定,若为黑色,其流失一点体力,若为红色,其摸一张牌',
moying_info:'锁定技,回合开始阶段,若场上没有闪电,你将牌堆中的一张闪电置于你的判定区',
moying_old_info:'每当你造成或受到一次伤害,你可以令伤害目标或来源进行一次判定,若结果为黑色,其流失一点体力',
jingxiang:'镜像',
jingxiang_info:'每当你需要打出卡牌时,你可以观看一名随机角色的手牌并将其视为你的手牌打出',
tuteng:'图腾',

View File

@ -589,6 +589,10 @@ character.mountain={
player.removeSkill('hunzi');
},
ai:{
threaten:function(player,target){
if(target.hp==1) return 2;
return 0.5;
},
maixie:true,
effect:{
target:function(card,player,target){

View File

@ -119,6 +119,9 @@ character.sp={
chouhai:{
trigger:{player:'damageBegin'},
forced:true,
check:function(){
return false;
},
filter:function(event,player){
return player.num('h')==0;
},
@ -565,8 +568,12 @@ character.sp={
usable:1,
filterCard:true,
filterTarget:function(card,player,target){
return player!=target;
return player!=target&&!target.skills.contains('zhoufu2');
},
prepare:function(cards,player){
player.$throw(cards);
},
discard:false,
content:function(){
target.$gain2(cards);
target.storage.zhoufu2=cards[0];
@ -578,6 +585,7 @@ character.sp={
return 3-ai.get.value(card)
},
ai:{
expose:0.1,
order:1,
result:{
player:1
@ -596,6 +604,9 @@ character.sp={
if(player.storage.zhoufu3.isAlive()&&player.storage.zhoufu3.skills.contains('yingbin')){
player.storage.zhoufu3.draw(2);
}
else{
game.delay(1.5);
}
"step 1"
player.judging=player.storage.zhoufu2;
trigger.position.appendChild(player.storage.zhoufu2);

View File

@ -607,6 +607,9 @@ character.standard={
},
position:'he',
viewAs:{name:'sha'},
viewAsFilter:function(player){
if(!player.num('h',{color:'red'})) return false;
},
prompt:'将一张红色牌当杀使用或打出',
check:function(card){return 4-ai.get.value(card)},
ai:{
@ -759,6 +762,9 @@ character.standard={
enable:['chooseToUse','chooseToRespond'],
filterCard:{name:'shan'},
viewAs:{name:'sha'},
viewAsFilter:function(player){
if(!player.num('h','shan')) return false;
},
prompt:'将一张闪当杀使用或打出',
check:function(){return 1},
ai:{
@ -768,6 +774,9 @@ character.standard={
}
},
respondSha:true,
skillTagFilter:function(player){
if(!player.num('h','shan')) return false;
},
order:4,
useful:-1,
value:-1
@ -782,6 +791,9 @@ character.standard={
check:function(){return 1},
ai:{
respondShan:true,
skillTagFilter:function(player){
if(!player.num('h','sha')) return false;
},
effect:{
target:function(card,player,target,current){
if(get.tag(card,'respondShan')&&current<0) return 0.6
@ -887,6 +899,9 @@ character.standard={
},
position:'he',
viewAs:{name:'guohe'},
viewAsFilter:function(player){
if(!player.num('h',{color:'black'})) return false;
},
prompt:'将一张黑色牌当过河拆桥使用',
check:function(card){return 4-ai.get.value(card)}
},
@ -1209,7 +1224,7 @@ character.standard={
order:9,
result:{
target:function(player,target){
if(target.hp==5) return 5;
if(target.hp==1) return 5;
if(player==target&&player.num('h')>player.hp) return 5;
return 2;
}

View File

@ -897,43 +897,23 @@ character.swd={
},
fuyan:{
trigger:{player:'damageEnd'},
frequent:true,
direct:true,
filter:function(event){
return event.num>0;
},
content:function(){
"step 0"
player.draw();
player.chooseTarget('是否发动【覆岩】?',function(card,player,target){
return !target.hujia;
}).ai=function(target){
var eff=-ai.get.damageEffect(target,target,player);
return eff+(player==target?2:0);
};
"step 1"
if(player.num('he')){
player.chooseCardTarget({
position:'he',
prompt:'选择一张牌作为“岩”',
ai1:function(card){
return 8-ai.get.value(card);
},
ai2:function(target){
var eff=-ai.get.damageEffect(target,target,player);
return eff+(player==target?2:0);
},
filterCard:true,
filterTarget:function(card,player,target){
return !target.skills.contains('fuyan2');
}
});
}
else{
event.finish();
}
"step 2"
if(result.bool){
player.line(result.targets);
player.lose(result.cards,ui.special);
player.logSkill('fuyan',result.targets);
var target=result.targets[0];
target.storage.fuyan2=result.cards[0];
target.addSkill('fuyan2');
player.$give(result.cards,target);
game.log(get.translation(player)+'将'+get.translation(result.cards)+'置于'+get.translation(target)+'的武将牌上');
target.changeHujia();
}
},
ai:{
@ -3212,6 +3192,9 @@ character.swd={
return get.suit(card)=='heart';
},
viewAs:{name:'liuxinghuoyu'},
viewAsFilter:function(player){
if(!player.num('he',{suit:'heart'})) return false;
},
prompt:'将一张红桃手牌当作流星火羽使用',
check:function(card){return 6-ai.get.value(card)},
ai:{
@ -3252,6 +3235,9 @@ character.swd={
return get.color(card)=='black';
},
viewAs:{name:'dujian'},
viewAsFilter:function(player){
if(!player.num('h',{color:'black'})) return false;
},
prompt:'将一张黑色手牌当作毒箭使用',
check:function(card){return 5-ai.get.value(card)},
ai:{
@ -4236,13 +4222,9 @@ character.swd={
};
"step 1"
if(result.bool){
player.logSkill('daixing');
player.changeHujia(result.cards.length);
player.storage.daixing=result.cards.length;
player.markSkill('daixing');
}
else{
player.storage.daixing=0;
player.unmarkSkill('daixing');
player.logSkill('daixing');
}
},
ai:{
@ -4262,24 +4244,14 @@ character.swd={
}
},
daixing2:{
trigger:{player:'damageBegin'},
filter:function(event,player){
return player.storage.daixing>0;
},
priority:-20,
popup:false,
trigger:{player:'phaseBegin'},
forced:true,
popup:false,
content:function(){
if(trigger.num>=player.storage.daixing){
trigger.num-=player.storage.daixing;
if(player.storage.daixing){
player.changeHujia(-player.storage.daixing);
player.storage.daixing=0;
player.unmarkSkill('daixing');
}
else{
player.storage.daixing-=trigger.num;
trigger.num=0;
}
player.popup('daixing');
}
},
swd_wuxie:{
@ -7328,34 +7300,12 @@ character.swd={
trigger:{source:'damageEnd'},
forced:true,
filter:function(event,player){
return !player.storage.hudun;
return !player.hujia&&event.player!=player;
},
content:function(){
player.storage.hudun=true;
player.markSkill('hudun');
player.changeHujia();
player.update();
},
init:function(player){
player.storage.hudun=false;
},
intro:{
content:function(st){
if(st) return '已开启';
return '未开启';
}
},
group:'hudun2'
},
hudun2:{
trigger:{player:'damageBegin'},
forced:true,
filter:function(event,player){
return event.num>0&&player.storage.hudun;
},
content:function(){
trigger.num--;
player.storage.hudun=false;
player.unmarkSkill('hudun');
}
},
toudan:{
enable:'phaseUse',
@ -7383,6 +7333,7 @@ character.swd={
}
lib.tempSortSeat=event.target;
event.targets.sort(lib.sort.seat);
event.targets.unshift(player);
delete lib.tempSortSeat;
"step 1"
if(event.targets.length){
@ -7613,7 +7564,7 @@ character.swd={
huiqi:'回气',
huiqi_info:'每当你受到一次伤害可令一名角色摸X张牌X为你已损失的体力值',
toudan:'投弹',
toudan_info:'出牌阶段限一次,你可以弃置一张黑桃牌对一名其他角色造成一点火焰伤害,然后令距离该角色1以内的所有角色弃置一张牌',
toudan_info:'出牌阶段限一次,你可以弃置一张黑桃牌对一名其他角色造成一点火焰伤害,然后你与距离该角色1以内的所有角色各弃置一张牌',
shending:'神丁',
shending_info:'锁定技,若你没有宝物牌,视为装备了蓝格怪衣',
hzhenwei:'镇卫',
@ -7623,7 +7574,7 @@ character.swd={
hudun:'护盾',
hudun_bg:'盾',
hudun2:'护盾',
hudun_info:'锁定技,当你造成一次伤害后,受到的下一次伤害-1',
hudun_info:'锁定技,当你对其他角色造成伤害后,若你没有护甲,你获得一点护甲值',
mazui:'麻醉',
mazui2:'麻醉',
mazui_info:'出牌阶段限一次,你可以将一张黑色手牌置于一名角色的武将牌上,该角色造成的下一次伤害-1然后获得此牌',
@ -7640,7 +7591,7 @@ character.swd={
zhenwei_info:'你可以将攻击范围内其他角色打出的卡牌交给除该角色外的任意一名角色',
fuyan:'覆岩',
fuyan2:'覆岩',
fuyan_info:'每当你受到一次伤害,可以摸一张牌,并将一张牌置于一名角色的武将牌上称为“岩”;当其受到伤害时,须将“岩”置于弃牌堆,然后令伤害-1',
fuyan_info:'每当你受到一次伤害,可以令一名没有护甲的角色获得一点护甲值',
guaili:'怪力',
guaili_info:'锁定技,你的杀造成的伤害+1造成伤害后需弃置一张牌',
pingshen:'凭神',
@ -7942,7 +7893,7 @@ character.swd={
yuhuo_info:'限定技,濒死阶段,你可以重置角色牌,减少一点体力上限,然后将体力回复至体力上限',
yishan_info:'每当你受到一次伤害,你可以重新获得最近失去的两张牌',
huanhun_info:'当一名角色进入濒死状态时,你可以弃置一张红色牌并令其进行一次判定,若结果为红色,其回复一点体力',
daixing_info:'回合结束阶段,你可以弃置至多X张牌并抵挡等量伤害效果在下一个回合结束阶段失效X为现存角色数-1',
daixing_info:'回合结束阶段,你可以任意张牌并获得等量的护甲,这些护甲将在你的下个回合开始阶段消失',
swd_wuxie_info:'锁定技,你不能成为其他角色的延时锦囊的目标',
qingcheng_info:'回合开始阶段,你可以进行判定,若为红色则可以继续判定,判定结束后将判定成功的牌收入手牌',
xianjiang_info:'出牌阶段,你可以将一张装备牌永久转化为任意一张其它装备牌,一张牌在一个阶段只能转化一次',

View File

@ -526,8 +526,7 @@ character.xianjian={
}
return false;
},
frequent:true,
popup:false,
direct:true,
content:function(){
"step 0"
if(trigger.delay==false) game.delay();
@ -539,9 +538,16 @@ character.xianjian={
}
}
if(cards.length){
player.chooseCardButton('聚宝:获得其中的一张非基本牌牌',cards);
}
"step 2"
if(result.bool){
var cards=result.links;
player.logSkill('jubao');
player.gain(cards);
player.$gain2(cards);
game.log(get.translation(player)+'发动聚宝,获得了'+get.translation(cards));
game.log(get.translation(player)+'获得了'+get.translation(cards));
}
},
ai:{
@ -1169,6 +1175,9 @@ character.xianjian={
},
position:'he',
viewAs:{name:'shunshou'},
viewAsFilter:function(player){
if(!player.num('he',{suit:'club'})) return false;
},
prompt:'将一张装备牌当顺手牵羊使用',
check:function(card){
var player=_status.currentPhase;
@ -1360,7 +1369,7 @@ character.xianjian={
sajin:'洒金',
sajin_info:'出牌阶段,你可以弃置一张手牌并指定任意名角色进行判定,若判定花色与你弃置的牌相同,该角色回复一点体力',
jubao:'聚宝',
jubao_info:'回合外,你可以将其他角色弃置的非基本牌收入手牌',
jubao_info:'当其他角色于你的回合外弃置非基本牌时,你可以获得其中的一张',
guiyuan:'归元',
guiyuan_info:'出牌阶段限一次,你可以弃置一张杀并回复一点体力',
shuangren:'双刃',

View File

@ -13,7 +13,7 @@ window.config={
all:{
mode:['identity','guozhan','versus','boss','chess','stone'],
layout:['default','newlayout'],
theme:['woodden','music'],
theme:['woodden','music','simple'],
card_font:['xiaozhuan','huangcao','caoshu','xingshu'],
double_hp:['hejiansan','pingjun','zuidazhi','zuixiaozhi','zonghe'],
@ -70,6 +70,7 @@ window.config={
white:'白色',
woodden:'木纹',
music:'音乐',
simple:'简约',
newlayout:'新版',
jeans:'牛仔',
metro:'极简',

View File

@ -291,6 +291,8 @@
diamond:"♦︎",
spade:"♠︎",
club:"♣︎",
ghujia:'护甲',
ghujia_bg:'甲',
heart2:"红桃",
diamond2:"方片",
spade2:"黑桃",
@ -1108,7 +1110,10 @@
event.finish();
return;
}
event.dialog=ui.create.dialog(get.translation(player.name)+'展示的牌',cards);
if(!event.str){
event.str=get.translation(player.name)+'展示的牌';
}
event.dialog=ui.create.dialog(event.str,cards);
var str=get.translation(player)+'展示了'+get.translation(cards[0]);
for(var i=1;i<cards.length;i++){
str+='、'+get.translation(cards[i]);
@ -1643,6 +1648,21 @@
},
damage:function(){
"step 0"
if(num>0&&player.hujia&&!player.hasSkillTag('nohujia')){
if(num>=player.hujia){
num-=player.hujia;
game.log(get.translation(player)+'的护甲抵挡了'+get.cnNumber(player.hujia)+'点伤害');
player.hujia=0;
}
else{
player.hujia-=num;
game.log(get.translation(player)+'的护甲抵挡了'+get.cnNumber(num)+'点伤害');
num=0;
}
event.hujia=true;
player.update();
}
event.num=num;
if(lib.config.background_audio){
game.playAudio('effect','damage'+(num>1?'2':''));
}
@ -1667,25 +1687,30 @@
}
}
player.changeHp(-num,false);
if(player._damagetimeout!=source){
player.$damage(source);
player._damagetimeout=source;
setTimeout(function(){
delete player._damagetimeout;
},500);
}
if(player._damagepopup){
player._damagepopup-=num;
player._damagenature=event.nature;
if(source){
if(player._damagetimeout!=source){
player.$damage(source);
player._damagetimeout=source;
setTimeout(function(){
delete player._damagetimeout;
},500);
}
if(player._damagepopup){
player._damagepopup-=num;
player._damagenature=event.nature;
}
else{
player._damagepopup=-num;
player._damagenature=event.nature;
setTimeout(function(){
player.popup(player._damagepopup,player._damagenature);
delete player._damagepopup;
delete player._damagenature;
},300);
}
}
else{
player._damagepopup=-num;
player._damagenature=event.nature;
setTimeout(function(){
player.popup(player._damagepopup,player._damagenature);
delete player._damagepopup;
delete player._damagenature;
},300);
player.$damage();
}
event.trigger('damage');
"step 1"
@ -2031,6 +2056,7 @@
this.group=info[1];
this.hp=info[2];
this.maxHp=info[2];
this.hujia=0;
this.node.intro.innerHTML=lib.config.intro;
if(lib.config.touchscreen){
lib.setLongPress(this,ui.click.intro);
@ -2111,6 +2137,7 @@
delete this.group;
delete this.hp;
delete this.maxHp;
delete this.hujia;
this.skills.length=0;
this.node.identity.style.backgroundColor='';
this.node.intro.innerHTML='';
@ -2146,6 +2173,12 @@
if(this.hp>=this.maxHp) this.hp=this.maxHp;
var hp=this.node.hp;
hp.style.transition='none';
if(this.hujia){
this.markSkill('ghujia');
}
else{
this.unmarkSkill('ghujia');
}
if(lib.config.layout=='default'&&this.maxHp>14){
hp.innerHTML=this.hp+'/'+this.maxHp;
hp.classList.add('text');
@ -2459,6 +2492,19 @@
return cards;
}
},
changeHujia:function(num){
if(typeof num!='number'){
num=1;
}
this.hujia+=num;
if(num>0){
game.log(get.translation(this)+'获得了'+get.cnNumber(num)+'点护甲值');
}
if(this.hujia<0){
this.hujia=0;
}
this.update();
},
setIdentity:function(identity){
if(!identity) identity=this.identity;
this.node.identity.firstChild.innerHTML=get.translation(identity);
@ -2985,9 +3031,10 @@
next.player=this;
next.content=lib.element.playerproto.showHandcards;
},
showCards:function(cards){
showCards:function(cards,str){
var next=game.createEvent('showCards');
next.player=this;
next.str=str;
if(get.itemtype(cards)=='card') next.cards=[cards];
else if(get.itemtype(cards)=='cards') next.cards=cards;
else _status.event.next.remove(next);
@ -4871,6 +4918,13 @@
name:'混乱'
}
},
ghujia:{
intro:{
content:function(content,player){
return '已有'+get.cnNumber(player.hujia)+'点护甲值';
}
}
},
_recoverCheck:{
trigger:{player:'recoverBefore'},
forced:true,
@ -5823,6 +5877,7 @@
if(enable){
if(info.filter&&info.filter(event,player)==false) enable=false;
if(info.viewAs&&event.filterCard&&!event.filterCard(info.viewAs,player)) enable=false;
if(info.viewAs&&info.viewAsFilter&&info.viewAsFilter(player)==false) enable=false;
if(event.aiexclude.contains(skills2[i])) enable=false;
if(info.usable&&get.skillCount(skills2[i])>=info.usable) enable=false;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View File

@ -465,6 +465,7 @@ div:hover>.intro{opacity: 1;}
}
.dialog.scroll1>.bar.top{opacity:1}
.dialog.scroll2>.bar.bottom{opacity:1}
.dialog.slim{top:300px;bottom:auto;min-height: none}
/*.dialog.scroll1{box-shadow:0 -10px 10px -9px rgba(0,0,0,0.1),0 -10px 0 -9px rgba(0,0,0,0.05);}
.dialog.scroll2{box-shadow:0 10px 10px -9px rgba(0,0,0,0.1),0 10px 0 -9px rgba(0,0,0,0.05)}
.dialog.scroll1.scroll2{box-shadow:0 -10px 10px -9px rgba(0,0,0,0.1),0 -10px 0 -9px rgba(0,0,0,0.05),

View File

@ -49,7 +49,7 @@
}
.player.fullskin2 .avatar,
.player.fullskin2 .avatar2{
width:64px;
width:63px;
background-position:50%;
}
.player.fullskin2 .avatar{
@ -439,7 +439,8 @@
}
.popup{z-index:6}
.dialog.scroll1,
.dialog.scroll2{
.dialog.scroll2,
.dialog.withbg{
background: rgba(0,0,0,0.2);
box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px;
border-radius:8px;

View File

@ -1341,7 +1341,7 @@ mode.chess={
},
content:function(){
"step 0"
player.chooseToMove(1,'是否发动【翩仪】?');
player.chooseToMove(2,'是否发动【翩仪】?');
"step 1"
if(result.bool){
player.logSkill('pianyi');
@ -1763,7 +1763,7 @@ mode.chess={
// chess_lusu:['male','wu',3,['']],
// chess_luxun:['male','wu',3,['']],
// chess_ganning:['male','wu',3,['']],
chess_taishici:['male','wu',4,['guanchuan','pojun']],
chess_taishici:['male','wu',4,['gongji','guanchuan','pojun']],
//
// chess_lvbu:['male','qun',3,['']],
chess_sunshangxiang:['female','wu',3,['lingdong','lianshe','gongji']],

BIN
theme/.DS_Store vendored

Binary file not shown.

View File

@ -22,7 +22,7 @@ html{
.card{
color:white;
}
.card.fullskin,#arena>.card:not(*:empty){
.card:not(*:empty){
color:rgb(77, 60, 51);
text-shadow:none;
background: url('wood3.png');

BIN
theme/simple/card.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
theme/simple/grid.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

42
theme/simple/style.css Normal file
View File

@ -0,0 +1,42 @@
html{
color: white;
text-shadow: black 0 0 2px;
background: url('../../image/background/huangtian_bg.jpg');
}
#system>div>div,#mebg,.control,.player,.card,.avatar,.avatar2,.button,#window>.dialog.popped,
.player.unseen .equips:not(*:empty){
box-shadow: rgba(0, 0, 0, 0.4) 0 0 0 1px, rgba(0, 0, 0, 0.2) 0 3px 10px;
background-image: linear-gradient(rgba(0,0,0,0.4), rgba(0,0,0,0.4));
border-radius: 8px;
}
#window>.dialog.popped{
border-radius: 6px;
}
.control,#system>div>div,.judges>div,.marks>div,
.player.unseen .equips:not(*:empty){
border-radius:4px;
}
.card{
color:white;
}
.card:not(*:empty){
color:rgb(77, 60, 51);
text-shadow:none;
background: url('card.png');
background-size:cover;
}
#me>div>.card,#arena>.card:not(*:empty){
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px;
}
.fire{
color: rgb(255,119,63);
}
.thunder{
color: rgb(117,186,255);
}
.poison{
color: rgb(104,221,127);
}
.brown{
color: rgb(195,161,223);
}

BIN
theme/simple/wood.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
theme/simple/wood3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB