package net.demilich.metastone.game.spells; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import net.demilich.metastone.game.Attribute; import net.demilich.metastone.game.GameContext; import net.demilich.metastone.game.Player; import net.demilich.metastone.game.cards.CardSet; import net.demilich.metastone.game.cards.CardType; import net.demilich.metastone.game.cards.MinionCard; import net.demilich.metastone.game.cards.Rarity; import net.demilich.metastone.game.cards.desc.MinionCardDesc; import net.demilich.metastone.game.entities.Entity; import net.demilich.metastone.game.entities.heroes.HeroClass; import net.demilich.metastone.game.entities.minions.Minion; import net.demilich.metastone.game.spells.desc.SpellArg; import net.demilich.metastone.game.spells.desc.SpellDesc; public class CreateSummonSpell extends Spell { Logger logger = LoggerFactory.getLogger(CreateSummonSpell.class); @Override protected void onCast(GameContext context, Player player, SpellDesc desc, Entity source, Entity target) { String description = ""; MinionCardDesc minionCardDesc = new MinionCardDesc(); minionCardDesc.id = context.getLogic().generateCardID(); minionCardDesc.name = desc.getString(SpellArg.NAME); minionCardDesc.baseAttack = desc.getValue(SpellArg.ATTACK_BONUS, context, player, target, source, 0); minionCardDesc.baseHp = desc.getValue(SpellArg.HP_BONUS, context, player, target, source, 0); minionCardDesc.heroClass = HeroClass.ANY; minionCardDesc.type = CardType.MINION; minionCardDesc.rarity = Rarity.FREE; minionCardDesc.description = description; Attribute attribute = (Attribute) desc.get(SpellArg.ATTRIBUTE); if (attribute != null) { minionCardDesc.attributes.put(attribute, true); } minionCardDesc.set = CardSet.BASIC; minionCardDesc.collectible = false; minionCardDesc.baseManaCost = desc.getValue(SpellArg.MANA, context, player, target, source, 0); MinionCard newCard = (MinionCard) minionCardDesc.createInstance(); context.addTempCard(newCard); int boardPosition = SpellUtils.getBoardPosition(context, player, desc, source); int count = desc.getValue(SpellArg.VALUE, context, player, target, source, 1); SpellDesc spell = (SpellDesc) desc.get(SpellArg.SPELL); SpellDesc successfulSummonSpell = (SpellDesc) desc.get(SpellArg.SPELL_1); for (int i = 0; i < count; i++) { MinionCard minionCard = (MinionCard) newCard.clone(); Minion minion = minionCard.summon(); if (context.getLogic().summon(player.getId(), minion, null, boardPosition, false) && successfulSummonSpell != null) { SpellUtils.castChildSpell(context, player, successfulSummonSpell, source, minion); } SpellUtils.castChildSpell(context, player, spell, source, target); } } }