From dbf3e287af3578accbbf6095aa682cf1aa54c2a7 Mon Sep 17 00:00:00 2001 From: WEBXOSS Date: Mon, 4 Sep 2017 01:07:31 +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 | 326 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 273 insertions(+), 53 deletions(-) diff --git a/CardInfo.js b/CardInfo.js index 826c7c7..6446551 100644 --- a/CardInfo.js +++ b/CardInfo.js @@ -122577,16 +122577,86 @@ var CardInfo = { "costGreen": 0, "costColorless": 0, "guardFlag": false, - cardSkills: [ - "【常】:《カーニバル ―Q―》は自身以外の効果を受けない。", - "【自】:このルリグがアタックしたとき、以下の4つから1つを選ぶ。", - "①カードを1枚引く。②あなたのデッキの一番上のカードをエナゾーンに置く。", - "③ターン終了時まで、このルリグは【ダブルクラッシュ】を得る。", - "④対戦相手のシグニ1体をトラッシュに置く。", - "【起】ジョーカー[アタックフェイズアイコン]《コインアイコン》:ターン終了時まで、あなたのシグニ1体はあなたのトラッシュにあるシグニ1枚と同じカードになる。" - ], "multiEner": false, - cardText: "派手にイクわよ?~カーニバル~" + cardText: "派手にイクわよ?~カーニバル~", + // ====================== + // 常时效果 + // ====================== + constEffectTexts: [ + "【常】:《カーニバル ―Q―》は自身以外の効果を受けない。", + "【自】:このルリグがアタックしたとき、以下の4つから1つを選ぶ。\n" + + "①カードを1枚引く。\n" + + "②あなたのデッキの一番上のカードをエナゾーンに置く。\n" + + "③ターン終了時まで、このルリグは【ダブルクラッシュ】を得る。\n" + + "④対戦相手のシグニ1体をトラッシュに置く。\n", + ], + constEffects: [{ + action: function (set,add) { + add(this,'effectFilters',function (card) { + return (card === this); + }); + }, + },{ + auto: 'onAttack', + effect: { + actionAsyn: function () { + var effects = [{ + source: this, + description: '2401-attached-0', + actionAsyn: function () { + this.player.draw(1); + }, + },{ + source: this, + description: '2401-attached-1', + actionAsyn: function () { + this.player.enerCharge(1); + }, + },{ + source: this, + description: '2401-attached-2', + actionAsyn: function () { + this.game.tillTurnEndSet(this,'doubleCrash',true); + }, + },{ + source: this, + description: '2401-attached-3', + actionAsyn: function () { + return this.player.selectOpponentSigniAsyn().callback(this,function (card) { + if (!card) return; + return card.trashAsyn(); + }); + }, + }]; + return this.player.selectAsyn('LAUNCH',effects).callback(this,function (effect) { + if (!effect) return; + return effect.actionAsyn.call(this); + }); + }, + }, + }], + // ====================== + // 起动效果 + // ====================== + actionEffectTexts: [ + "【起】ジョーカー[アタックフェイズ]《コイン》:ターン終了時まで、あなたのシグニ1体はあなたのトラッシュにあるシグニ1枚と同じカードになる。" + ], + actionEffects: [{ + attackPhase: true, + costCoin: 1, + actionAsyn: function () { + // TODO... + }, + }], + // ====================== + // 附加效果 + // ====================== + attachedEffectTexts: [ + "カードを1枚引く。", + "あなたのデッキの一番上のカードをエナゾーンに置く。", + "ターン終了時まで、このルリグは【ダブルクラッシュ】を得る。", + "対戦相手のシグニ1体をトラッシュに置く。", + ], }, "2402": { "pid": 2402, @@ -122602,7 +122672,6 @@ var CardInfo = { "limit": 0, "power": 0, "limiting": "カーニバル", - "timing": "メインフェイズ\nアタックフェイズ", "imgUrl": "http://www.takaratomy.co.jp/products/wixoss/wxwp/images/card/WX17/WX17-005.jpg", "illust": "安藤周記", faqs: [ @@ -122647,13 +122716,23 @@ var CardInfo = { "costGreen": 0, "costColorless": 0, "guardFlag": false, - cardSkills: [ - "ベット―《コインアイコン》", - "ターン終了時まで、対戦相手のシグニ1体を《サーバント ZERO》にする。あなたがベットしていた場合、代わりにターン終了時まで、対戦相手のすべてのシグニを《サーバント ZERO》にする。", + "multiEner": false, + cardText: "くたばっちまいな……!!~カーニバル~", + // ====================== + // 技艺效果 + // ====================== + timmings: ['mainPhase','attackPhase'], + artsEffectTexts: [ + "ベット―《コイン》\n" + + "ターン終了時まで、対戦相手のシグニ1体を《サーバント ZERO》にする。あなたがベットしていた場合、代わりにターン終了時まで、対戦相手のすべてのシグニを《サーバント ZERO》にする。\n" + "(《サーバント ZERO》はレベル1、<精元>、パワー1000、無色で能力を持たないシグニである)" ], - "multiEner": false, - cardText: "くたばっちまいな……!!~カーニバル~" + bet: 1, + artsEffect: { + actionAsyn: function () { + // TODO... + }, + }, }, "2403": { "pid": 2403, @@ -122671,20 +122750,6 @@ var CardInfo = { "limiting": "カーニバル", "imgUrl": "http://www.takaratomy.co.jp/products/wixoss/wxwp/images/card/WX17/WX17-027.jpg", "illust": "keypot", - faqs: [ - { - "q": "このシグニがバニッシュされたとき、手札が1枚の場合、その1枚を捨てて《羅星姫 ≡インパクト≡》を場に出せますか?", - "a": "いいえ、手札が1枚しかない場合はそれを捨てることもできず、《羅星姫 ≡インパクト≡》を場に戻すこともできません。" - }, - { - "q": "自動能力で、手札を3枚以上同時に捨てられますか?", - "a": "いいえ、1回の発動では2枚を捨てることしかできません。" - }, - { - "q": "《羅星姫 ≡インパクト≡》を場に出し、手札が0枚の場合は先に上の出現時能力を発動してカードを2枚引き、次に下の出現時能力を発動しパワー8000以下のシグニをバニッシュすることはできますか?", - "a": "はい、できます。" - } - ], "classes": [ "精羅", "宇宙" @@ -122696,14 +122761,59 @@ var CardInfo = { "costGreen": 0, "costColorless": 0, "guardFlag": false, - cardSkills: [ + "multiEner": false, + cardText: "破壊とさいせ…じゃなくて再破壊じゃい!~≡インパクト≡~", + // ====================== + // 常时效果 + // ====================== + constEffectTexts: [ "【自】:このシグニがバニッシュされたとき、あなたは手札を2枚捨ててもよい。そうした場合、このシグニをエナゾーンから場に出す。", + ], + constEffects: [{ + auto: 'onBanish', + effect: { + optional: true, + condition: function () { + if (this.zone !== this.player.enerZone) return; + if (!this.canSummon()) return; + return (this.player.hands.length >= 2); + }, + actionAsyn: function () { + return this.player.discardAsyn(2).callback(this,function () { + return this.summonAsyn(); + }); + }, + }, + }], + // ====================== + // 出场效果 + // ====================== + startUpEffectTexts: [ "【出】:あなたの手札が0枚の場合、カードを2枚引く。", "【出】《赤》:パワーが「あなたの手札の枚数×4000」以下の対戦相手のシグニ1体をバニッシュする。" ], - "multiEner": false, - cardText: "破壊とさいせ…じゃなくて再破壊じゃい!~≡インパクト≡~", - "lifeBurst": "パワーが「あなたの手札の枚数×4000」以下の対戦相手のシグニ1体をバニッシュする。" + startUpEffects: [{ + actionAsyn: function () { + if (this.player.hands.length) return; + this.player.draw(2); + }, + },{ + costRed: 1, + actionAsyn: function () { + return this.banishSigniAsyn(this.player.hands.length * 4000); + }, + }], + // ====================== + // 迸发效果 + // ====================== + burstEffectTexts: [ + "【※】:パワーが「あなたの手札の枚数×4000」以下の対戦相手のシグニ1体をバニッシュする。" + ], + burstEffect: { + actionAsyn: function () { + return this.banishSigniAsyn(this.player.hands.length * 4000); + }, + }, }, "2404": { "pid": 2404, @@ -122721,16 +122831,6 @@ var CardInfo = { "limiting": "", "imgUrl": "http://www.takaratomy.co.jp/products/wixoss/wxwp/images/card/WX17/WX17-028.jpg", "illust": "じんてつ", - faqs: [ - { - "q": "自動能力で、自分のトラッシュにあるそれぞれレベルの異なる<宇宙>のシグニが3枚しかなかった場合、それら3枚をデッキに戻して【ダブルクラッシュ】を得られますか?", - "a": "いいえ、自動能力の条件に合うカードが4枚に満たない場合、1枚もデッキに戻すことはできず、【ダブルクラッシュ】も得られません。" - }, - { - "q": "出現時能力で、バニッシュするシグニを選ぶのはいつですか?", - "a": "デッキの上から4枚を公開した後に、バニッシュするシグニを選びます。" - } - ], "classes": [ "精羅", "宇宙" @@ -122742,13 +122842,84 @@ var CardInfo = { "costGreen": 0, "costColorless": 0, "guardFlag": false, - cardSkills: [ - "【自】:このシグニがアタックしたとき、あなたのトラッシュからそれぞれレベルの異なる<宇宙>のシグニ4枚をデッキに戻してシャッフルしてもよい。そうした場合、ターン終了時まで、このシグニは【ダブルクラッシュ】を得る。", - "【出】《赤×0》:あなたのデッキの上からカードを4枚公開する。その後、パワーが「この方法で公開したシグニのレベルの合計×1000」以下の対戦相手のシグニ1体をバニッシュする。その後、公開したカードをトラッシュに置く。" - ], "multiEner": false, cardText: "サンナイトカーニバル!一緒にアツくなっちまおうぜ!~≡ソラフレア≡~", - "lifeBurst": "あなたのトラッシュから<宇宙>のシグニを2枚まで手札に加える。" + // ====================== + // 常时效果 + // ====================== + constEffectTexts: [ + "【自】:このシグニがアタックしたとき、あなたのトラッシュからそれぞれレベルの異なる<宇宙>のシグニ4枚をデッキに戻してシャッフルしてもよい。そうした場合、ターン終了時まで、このシグニは【ダブルクラッシュ】を得る。", + ], + constEffects: [{ + auto: 'onAttack', + effect: { + actionAsyn: function () { + // 复制并修改自 PR-212 + var levels = []; + this.player.trashZone.cards.forEach(function (card) { + if (card.type !== 'SIGNI') return; + if (!card.hasClass('宇宙')) return; + if (inArr(card.level,levels)) return; + levels.push(card.level); + },this); + if (levels.length < 4) return; + levels.length = 0; + + var cards_deck = []; + return Callback.loop(this,4,function () { + var cards = this.player.trashZone.cards.filter(function (card) { + return card.hasClass('宇宙') && (card.type === 'SIGNI') && !inArr(card.level,levels); + },this); + return this.player.selectAsyn('TARGET',cards).callback(this,function (card) { + if (!card) return; + levels.push(card.level); + cards_deck.push(card); + }); + }).callback(this,function () { + return this.player.opponent.showCardsAsyn(cards_deck).callback(this,function () { + this.game.moveCards(cards_deck,this.player.mainDeck); + this.player.shuffle(); + this.game.tillTurnEndSet(this,'doubleCrash',true); + }); + }); + }, + }, + }], + // ====================== + // 出场效果 + // ====================== + startUpEffectTexts: [ + "【出】《赤×0》:あなたのデッキの上からカードを4枚公開する。その後、パワーが「この方法で公開したシグニのレベルの合計×1000」以下の対戦相手のシグニ1体をバニッシュする。その後、公開したカードをトラッシュに置く。" + ], + startUpEffects: [{ + optional: true, + actionAsyn: function () { + return this.player.revealAsyn(4).callback(this,function (cards) { + var power = 0; + cards.forEach(function (card) { + if (card.type !== 'SIGNI') return; + power += card.level * 1000; + },this); + return this.banishSigniAsyn(power).callback(this,function () { + this.game.trashCards(cards); + }); + }); + }, + }], + // ====================== + // 迸发效果 + // ====================== + burstEffectTexts: [ + "【※】:あなたのトラッシュから<宇宙>のシグニを2枚まで手札に加える。" + ], + burstEffect: { + actionAsyn: function () { + var filter = function (card) { + return card.hasClass('宇宙'); + }; + return this.player.pickCardAsyn(filter,0,2); + }, + }, }, "2405": { "pid": 2405, @@ -122803,12 +122974,61 @@ var CardInfo = { "costGreen": 0, "costColorless": 0, "guardFlag": false, - cardSkills: [ - "【自】:あなたのアタックフェイズ開始時、あなたのデッキをシャッフルし、デッキの一番上を公開する。その後、ターン終了時まで、あなたのシグニ1体は、この方法で公開したカードがレベル1のシグニの場合、【ダブルクラッシュ】を得る。レベル2の場合、【アサシン】を得る。レベル3の場合、【ランサー】を得る。レベル4の場合、「バニッシュされない。」を得る。", - "【出】《コインアイコン》《コインアイコン》:あなたのデッキの一番上を公開する。それがシグニの場合、あなたはそのシグニのレベル1につき、カードを1枚引く。" - ], "multiEner": false, - cardText: "ずいぶん素敵じゃない。~カーニバル~" + cardText: "ずいぶん素敵じゃない。~カーニバル~", + // ====================== + // 常时效果 + // ====================== + constEffectTexts: [ + "【自】:あなたのアタックフェイズ開始時、あなたのデッキをシャッフルし、デッキの一番上を公開する。その後、ターン終了時まで、あなたのシグニ1体は、この方法で公開したカードがレベル1のシグニの場合、【ダブルクラッシュ】を得る。レベル2の場合、【アサシン】を得る。レベル3の場合、【ランサー】を得る。レベル4の場合、「バニッシュされない。」を得る。", + ], + constEffects: [{ + auto: function (add,effect) { + add(this.player,'onAttackPhaseStart',effect); + }, + effect: { + actionAsyn: function () { + this.player.shuffle(); + return this.player.revealAsyn(1).callback(this,function (cards) { + var card = cards[0]; + if (!card) return; + if (card.type !== 'SIGNI') return; + var level = card.level; + return this.player.selectSelfSigniAsyn().callback(this,function (card) { + if (level === 1) { + this.game.tillTurnEndSet(this,card,'doubleCrash',true); + } else if (level === 2) { + this.game.tillTurnEndSet(this,card,'assassin',true); + } else if (level === 3) { + this.game.tillTurnEndSet(this,card,'lancer',true); + } else if (level === 4) { + this.game.tillTurnEndSet(this,card,'canNotBeBanished',true); + } + }); + }); + }, + }, + }], + // ====================== + // 出场效果 + // ====================== + startUpEffectTexts: [ + "【出】《コイン》《コイン》:あなたのデッキの一番上を公開する。それがシグニの場合、あなたはそのシグニのレベル1につき、カードを1枚引く。" + ], + startUpEffects: [{ + costCoin: 2, + actionAsyn: function () { + return this.player.revealAsyn(1).callback(this,function (cards) { + var count = 0; + cards.forEach(function (card) { + if (card.type !== 'SIGNI') return; + // TODO: 《羅星 ≡チドウ≡》 + count += card.level; + }); + this.player.draw(count); + }); + }, + }], }, "2406": { "pid": 2406,