From 2cf1de9adf91933f98df5c278be3bb43be7dced5 Mon Sep 17 00:00:00 2001 From: deardrops Date: Thu, 14 Sep 2017 23:40:14 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=A9=20coding=20card=20effects?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CardInfo.js | 202 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 172 insertions(+), 30 deletions(-) diff --git a/CardInfo.js b/CardInfo.js index 4b26c7d..54454d8 100644 --- a/CardInfo.js +++ b/CardInfo.js @@ -125099,11 +125099,46 @@ var CardInfo = { "costGreen": 0, "costColorless": 0, "guardFlag": false, - cardSkills: [ + "multiEner": false, + cardText: "私を中心に、熱は廻るの。 ~≡タイトツ≡~", + // ====================== + // 常时效果 + // ====================== + constEffectTexts: [ "【常】:このシグニが中央のシグニゾーンにあるかぎり、このシグニは「このシグニがアタックしたとき、あなたのデッキの上から<宇宙>のシグニがめくれるまで公開する。その後、この方法で公開した<宇宙>のシグニと同じレベルの対戦相手のシグニ1体をバニッシュする。公開したカードをシャッフルし、デッキの一番下に置く。」を得る。" ], - "multiEner": false, - cardText: "私を中心に、熱は廻るの。 ~≡タイトツ≡~" + constEffects: [{ + condition: function () { + var idx = this.player.signiZones.indexOf(this.zone); + return (idx === 1); + }, + action: function (set,add) { + var cards = []; + var target = null; + this.player.mainDeck.cards.some(function (card) { + cards.push(card); + if (card.hasClass('宇宙')) { + target = card; + return true; + } + return false; + },this); + if (!cards.length) return; + return this.player.showCardsAsyn(cards).callback(this,function () { + return this.player.opponent.showCardsAsyn(cards); + }).callback(this,function () { + var filter = function(card) { + return card.level = target.level; + } + this.player.shuffle(cards); + this.player.mainDeck.moveCardsToBottom(cards); + return this.player.selectOpponentSigniAsyn(filter).callback(this,function (card) { + if (!card) return; + return card.banishAsyn(); + }); + }); + }, + }], }, "2452": { "pid": 2452, @@ -125142,11 +125177,37 @@ var CardInfo = { "costGreen": 0, "costColorless": 0, "guardFlag": false, - cardSkills: [ + "multiEner": false, + cardText: "宇宙座標確認、転送開始!~≡コズトリン≡~", + // ====================== + // 常时效果 + // ====================== + constEffectTexts: [ "【起】《ダウン》:3以外の数字1つを宣言する。あなたのデッキの上から宣言した数字と同じレベルを持つ<宇宙>のシグニがめくれるまで公開し、それを手札に加える。公開した他のカードをシャッフルし、デッキの一番下に置く。" ], - "multiEner": false, - cardText: "宇宙座標確認、転送開始!~≡コズトリン≡~" + constEffects: [{ + costDown: true, + action: function (set,add) { + // TODO: 宣言3以外的一个数字 + return this.player.declareAsyn(1,5).callback(this,function (num) { + var cards = []; + var target = null; + this.player.mainDeck.cards.some(function (card) { + if (card.level === num && card.hasClass('宇宙')) { + target = card; + return true; + } else { + cards.push(card); + return false; + } + },this); + if (!cards.length) return; + this.game.moveCards([target],this.player.handZone); + this.player.shuffle(cards); + this.player.mainDeck.moveCardsToBottom(cards); + }); + } + }] }, "2453": { "pid": 2453, @@ -125186,14 +125247,46 @@ var CardInfo = { "costGreen": 0, "costColorless": 0, "guardFlag": false, - cardSkills: [ - "以下の3つから3つまで選ぶ。", - "①対戦相手の手札があなたより多い場合、あなたはカードを1枚引く。", - "②対戦相手のエナゾーンにあるカードがあなたより多い場合、あなたのデッキの一番上のカードをエナゾーンに置く。", - "③対戦相手のライフクロスの枚数があなたより多い場合、対戦相手のシグニ1体をバニッシュする。" - ], "multiEner": false, - cardText: "あなたも毒気に当てられて?~カーニバル~" + cardText: "あなたも毒気に当てられて?~カーニバル~", + // ====================== + // 魔法效果 + // ====================== + spellEffectTexts: [ + "以下の3つから3つまで選ぶ。\n" + + "①対戦相手の手札があなたより多い場合、あなたはカードを1枚引く。\n" + + "②対戦相手のエナゾーンにあるカードがあなたより多い場合、あなたのデッキの一番上のカードをエナゾーンに置く。\n" + + "③対戦相手のライフクロスの枚数があなたより多い場合、対戦相手のシグニ1体をバニッシュする。", + "対戦相手の手札があなたより多い場合、あなたはカードを1枚引く。", + "対戦相手のエナゾーンにあるカードがあなたより多い場合、あなたのデッキの一番上のカードをエナゾーンに置く。", + "対戦相手のライフクロスの枚数があなたより多い場合、対戦相手のシグニ1体をバニッシュする。" + ], + getMinEffectCount: function () { + // TODO: getMinEffectCount 这个函数只在arts上用到过,不知道spell上是否能用 + return 1; + }, + getMaxEffectCount: function () { + return 3; + }, + spellEffect: [{ + actionAsyn: function () { + if (this.player.opponent.hands.length > this.player.hans.length) { + this.player.draw(1); + } + }, + },{ + actionAsyn: function () { + if (this.player.opponent.enerZone.cards.length > this.player.opponent.enerZone.cards.length) { + this.player.enerCharge(1); + } + }, + },{ + actionAsyn: function () { + if (this.player.opponent.lifeClothZone.cards.length >= this.player.lifeClothZone.cards.length) { + return this.banishSigniAsyn(); + } + }, + }], }, "2454": { "pid": 2454, @@ -127484,8 +127577,7 @@ var CardInfo = { }, },{ actionAsyn: function () { - var cards = this.player.signis; - return this.player.selectTargetAsyn(cards).callback(this,function (card) { + return this.player.selectSelfSigniAsyn().callback(this,function (card) { if (!card) return; this.game.tillTurnEndSet(this,card,'doubleCrash',true); if (card.level >= 4) { @@ -127496,7 +127588,7 @@ var CardInfo = { },{ actionAsyn: function () { this.player.addLifeCloth(); - this.player.discardAsyn(2); + return this.player.discardAsyn(2); }, }] }, @@ -127644,20 +127736,18 @@ var CardInfo = { return this.player.selectSomeAsyn('SET_ORDER',cards,len,len,true).callback(this,function (cards) { this.player.mainDeck.moveCardsToTop(cards); }).callback(this,function () { - var card = this.player.mainDeck.cards[0]; - if (!card) return; - this.player.informCards([card]); - return this.player.showCardsAsyn([card]).callback(this,function () { - return this.player.opponent.showCardsAsyn([card]); + var target = this.player.mainDeck.cards[0]; + if (!target) return; + return this.player.showCardsAsyn([target]).callback(this,function () { + return this.player.opponent.showCardsAsyn([target]); }).callback(this,function() { - if (card.type !== 'SIGNI') return; - var targetLevel = card.level; + if (target.type !== 'SIGNI') return; var filter = function (card) { - return card.level === targetLevel; + return card.level === target.level; } - return this.player.selectTargetAsyn(filter).callback(this,function (card) { + return this.player.selectOpponentSigniAsyn(filter).callback(this,function (card) { if (!card) return; - return this.game.banishCardsAsyn([card]); + return card.banishAsyn(); }); }); }); @@ -128028,13 +128118,65 @@ var CardInfo = { "costGreen": 0, "costColorless": 0, "guardFlag": false, - cardSkills: [ + "multiEner": false, + cardText: "我が友、ギルガメジよ、元粘土の体だが助けになろうぞ!がる。~エンキド~", + // ====================== + // 出场效果 + // ====================== + startUpEffectTexts: [ "【出】手札から《ライズアイコン》を持つシグニを1枚捨てる:カードを1枚引く。", "【出】《赤×0》:あなたのトラッシュから《ライズアイコン》を持つシグニ3枚をデッキに加えてシャッフルする。そうした場合、カードを1枚引く。" ], - "multiEner": false, - cardText: "我が友、ギルガメジよ、元粘土の体だが助けになろうぞ!がる。~エンキド~", - "lifeBurst": "カードを1枚引く。" + startUpEffects: [{ + costCondition: function () { + return this.player.hands.some(function (card) { + return card.rise; + },this); + }, + costAsyn: function () { + var cards = this.player.hands.filter(function (card) { + return card.rise; + },this); + return this.player.selectAsyn('PAY',cards).callback(this,function (card) { + if (!card) return; + card.trash(); + }); + }, + actionAsyn: function () { + return this.draw(1); + }, + },{ + useCondition: function () { + var cards = this.player.trashZone.cards.filter(function (card) { + return card.rise; + },this); + return (cards.length >= 3); + }, + actionAsyn: function () { + var cards = this.player.trashZone.cards.filter(function (card) { + return card.rise; + },this); + if (cards.length < 3) return; + return this.player.selectSomeAsyn('TARGET',cards,3,3,true).callback(this,function (cards) { + return this.player.opponent.showCardsAsyn(cards).callback(this,function () { + this.game.moveCards(cards,this.player.mainDeck); + this.player.shuffle(); + this.player.draw(1); + }); + }); + }, + }], + // ====================== + // 迸发效果 + // ====================== + burstEffectTexts: [ + "【※】:カードを1枚引く。" + ], + burstEffect: { + actionAsyn: function () { + this.player.draw(1); + } + } }, "2516": { "pid": 2516,