From 10c3c6fdb937f403a0d323468732cc4ebd61f1b3 Mon Sep 17 00:00:00 2001 From: TacomenX Date: Mon, 4 Sep 2017 00:46:56 -0500 Subject: [PATCH 1/4] [IXL] Bishop Of Rebirth Implementation --- .../src/mage/cards/b/BishopOfRebirth.java | 84 +++++++++++++++++++ Mage.Sets/src/mage/sets/Ixalan.java | 1 + Mage.Sets/src/mage/sets/LaunchParty.java | 1 + 3 files changed, 86 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/b/BishopOfRebirth.java diff --git a/Mage.Sets/src/mage/cards/b/BishopOfRebirth.java b/Mage.Sets/src/mage/cards/b/BishopOfRebirth.java new file mode 100644 index 0000000000..af21a4e678 --- /dev/null +++ b/Mage.Sets/src/mage/cards/b/BishopOfRebirth.java @@ -0,0 +1,84 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.cards.b; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.AttacksTriggeredAbility; +import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; +import mage.abilities.keyword.VigilanceAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.ComparisonType; +import mage.filter.FilterCard; +import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; +import mage.target.common.TargetCardInYourGraveyard; + +/** + * + * @author TacomenX + */ +public class BishopOfRebirth extends CardImpl { + + private static final FilterCard filter = new FilterCreatureCard("creature card with converted mana cost 3 or less from your graveyard"); + + static { + filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 4)); + filter.add(new CardTypePredicate(CardType.CREATURE)); + } + + public BishopOfRebirth(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}"); + + this.subtype.add("Vampire"); + this.subtype.add("Cleric"); + this.power = new MageInt(3); + this.toughness = new MageInt(4); + + // Vigilance + this.addAbility(VigilanceAbility.getInstance()); + + // Whenever Bishop of Rebirth attacks, you may return target creature card with converted mana cost 3 or less from your graveyard to the battlefield. + Ability ability = new AttacksTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect(), true); + ability.addTarget(new TargetCardInYourGraveyard(filter)); + this.addAbility(ability); + } + + public BishopOfRebirth(final BishopOfRebirth card) { + super(card); + } + + @Override + public BishopOfRebirth copy() { + return new BishopOfRebirth(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Ixalan.java b/Mage.Sets/src/mage/sets/Ixalan.java index d849235944..f6ee6ca705 100644 --- a/Mage.Sets/src/mage/sets/Ixalan.java +++ b/Mage.Sets/src/mage/sets/Ixalan.java @@ -32,6 +32,7 @@ public class Ixalan extends ExpansionSet { this.numBoosterRare = 1; this.ratioBoosterMythic = 8; cards.add(new SetCardInfo("Angrath's Marauders", 132, Rarity.RARE, mage.cards.a.AngrathsMarauders.class)); + cards.add(new SetCardInfo("Bishop of Rebirth", 5, Rarity.RARE, mage.cards.b.BishopOfRebirth.class)); cards.add(new SetCardInfo("Bloodcrazed Paladin", 93, Rarity.RARE, mage.cards.b.BloodcrazedPaladin.class)); cards.add(new SetCardInfo("Burning Sun's Avatar", 135, Rarity.RARE, mage.cards.b.BurningSunsAvatar.class)); cards.add(new SetCardInfo("Captain Lannery Storm", 136, Rarity.RARE, mage.cards.c.CaptainLanneryStorm.class)); diff --git a/Mage.Sets/src/mage/sets/LaunchParty.java b/Mage.Sets/src/mage/sets/LaunchParty.java index ee9d6f02fd..98aed7304a 100644 --- a/Mage.Sets/src/mage/sets/LaunchParty.java +++ b/Mage.Sets/src/mage/sets/LaunchParty.java @@ -53,6 +53,7 @@ public class LaunchParty extends ExpansionSet { cards.add(new SetCardInfo("Angel of Deliverance", 35, Rarity.RARE, mage.cards.a.AngelOfDeliverance.class)); cards.add(new SetCardInfo("Ant Queen", 7, Rarity.RARE, mage.cards.a.AntQueen.class)); cards.add(new SetCardInfo("Bident of Thassa", 24, Rarity.RARE, mage.cards.b.BidentOfThassa.class)); + cards.add(new SetCardInfo("Bishop of Rebirth", 41, Rarity.RARE, mage.cards.b.BishopOfRebirth.class)); cards.add(new SetCardInfo("Blight Herder", 32, Rarity.RARE, mage.cards.b.BlightHerder.class)); cards.add(new SetCardInfo("Breaking // Entering", 22, Rarity.RARE, mage.cards.b.BreakingEntering.class)); cards.add(new SetCardInfo("Colossal Whale", 23, Rarity.RARE, mage.cards.c.ColossalWhale.class)); From 518bae18df9736746695c58e1169cf53ea21887b Mon Sep 17 00:00:00 2001 From: TacomenX Date: Mon, 4 Sep 2017 01:29:20 -0500 Subject: [PATCH 2/4] [XLN] Deeproot Waters + Merfolk Hexproof Token --- .../src/mage/cards/d/DeeprootWaters.java | 69 +++++++++++++++++++ Mage.Sets/src/mage/sets/Ixalan.java | 1 + .../permanent/token/MerfolkHexproofToken.java | 32 +++++++++ 3 files changed, 102 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/d/DeeprootWaters.java create mode 100644 Mage/src/main/java/mage/game/permanent/token/MerfolkHexproofToken.java diff --git a/Mage.Sets/src/mage/cards/d/DeeprootWaters.java b/Mage.Sets/src/mage/cards/d/DeeprootWaters.java new file mode 100644 index 0000000000..063076f49b --- /dev/null +++ b/Mage.Sets/src/mage/cards/d/DeeprootWaters.java @@ -0,0 +1,69 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.cards.d; + +import java.util.UUID; +import mage.abilities.common.SpellCastControllerTriggeredAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.game.permanent.token.MerfolkHexproofToken; + +/** + * + * @author TacomenX + */ +public class DeeprootWaters extends CardImpl { + + private static final FilterSpell filter = new FilterSpell("a Merfolk spell"); + + static { + filter.add(new SubtypePredicate(SubType.MERFOLK)); + } + + public DeeprootWaters(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}"); + + + // Whenever you cast a Merfolk spell, create a 1/1 blue Merfolk creature token with hexproof. + this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new MerfolkHexproofToken(), 1, true, false), filter, false)); + } + + public DeeprootWaters(final DeeprootWaters card) { + super(card); + } + + @Override + public DeeprootWaters copy() { + return new DeeprootWaters(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Ixalan.java b/Mage.Sets/src/mage/sets/Ixalan.java index f6ee6ca705..87dfc0603f 100644 --- a/Mage.Sets/src/mage/sets/Ixalan.java +++ b/Mage.Sets/src/mage/sets/Ixalan.java @@ -41,6 +41,7 @@ public class Ixalan extends ExpansionSet { cards.add(new SetCardInfo("Deadeye Tormentor", 98, Rarity.COMMON, mage.cards.d.DeadeyeTormentor.class)); cards.add(new SetCardInfo("Deadeye Tracker", 99, Rarity.RARE, mage.cards.d.DeadeyeTracker.class)); cards.add(new SetCardInfo("Deeproot Champion", 185, Rarity.RARE, mage.cards.d.DeeprootChampion.class)); + cards.add(new SetCardInfo("Deeproot Waters", 51, Rarity.UNCOMMON, mage.cards.d.DeeprootWaters.class)); cards.add(new SetCardInfo("Dragonskull Summit", 252, Rarity.RARE, mage.cards.d.DragonskullSummit.class)); cards.add(new SetCardInfo("Dreamcaller Siren", 54, Rarity.RARE, mage.cards.d.DreamcallerSiren.class)); cards.add(new SetCardInfo("Drowned Catacomb", 253, Rarity.RARE, mage.cards.d.DrownedCatacomb.class)); diff --git a/Mage/src/main/java/mage/game/permanent/token/MerfolkHexproofToken.java b/Mage/src/main/java/mage/game/permanent/token/MerfolkHexproofToken.java new file mode 100644 index 0000000000..84503c437e --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/MerfolkHexproofToken.java @@ -0,0 +1,32 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.ObjectColor; +import mage.abilities.keyword.HexproofAbility; +import mage.constants.CardType; + +/** + * + * @author TacomenX + */ + +public class MerfolkHexproofToken extends Token { + + + + public MerfolkHexproofToken() { + super("Merfolk", "1/1 blue Merfolk creature token with hexproof"); + this.cardType.add(CardType.CREATURE); + this.subtype.add("Merfolk"); + this.color = ObjectColor.BLUE; + this.power = new MageInt(1); + this.toughness = new MageInt(1); + this.addAbility(HexproofAbility.getInstance()); + } + +} \ No newline at end of file From abb2efa25c111371aebe5bb66e36fc50ade53882 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Mon, 4 Sep 2017 09:54:00 +0200 Subject: [PATCH 3/4] Removed unused code. --- .../src/main/java/mage/server/SessionManager.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/Mage.Server/src/main/java/mage/server/SessionManager.java b/Mage.Server/src/main/java/mage/server/SessionManager.java index e32be43897..b3d9c0db00 100644 --- a/Mage.Server/src/main/java/mage/server/SessionManager.java +++ b/Mage.Server/src/main/java/mage/server/SessionManager.java @@ -27,8 +27,6 @@ */ package mage.server; -import java.util.HashMap; -import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import javax.annotation.Nonnull; @@ -41,7 +39,9 @@ import org.jboss.remoting.callback.InvokerCallbackHandler; * @author BetaSteward_at_googlemail.com */ public enum SessionManager { + instance; + private static final Logger logger = Logger.getLogger(SessionManager.class); private final ConcurrentHashMap sessions = new ConcurrentHashMap<>(); @@ -153,14 +153,6 @@ public enum SessionManager { } - public Map getSessions() { - Map map = new HashMap<>(); - for (Map.Entry entry : sessions.entrySet()) { - map.put(entry.getKey(), entry.getValue()); - } - return map; - } - /** * Admin requested the disconnect of a user * From 3fa142cc0be9d3c352834d41317d952e7e62d769 Mon Sep 17 00:00:00 2001 From: TacomenX Date: Mon, 4 Sep 2017 09:45:20 -0500 Subject: [PATCH 4/4] Deeproot Waters + Merfolk Hexproof Token --- Mage.Sets/src/mage/cards/d/DeeprootWaters.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/cards/d/DeeprootWaters.java b/Mage.Sets/src/mage/cards/d/DeeprootWaters.java index 063076f49b..f1c3aa6b8f 100644 --- a/Mage.Sets/src/mage/cards/d/DeeprootWaters.java +++ b/Mage.Sets/src/mage/cards/d/DeeprootWaters.java @@ -55,7 +55,7 @@ public class DeeprootWaters extends CardImpl { // Whenever you cast a Merfolk spell, create a 1/1 blue Merfolk creature token with hexproof. - this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new MerfolkHexproofToken(), 1, true, false), filter, false)); + this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new MerfolkHexproofToken()), filter, false)); } public DeeprootWaters(final DeeprootWaters card) {