public override IQualifierDescription Generate() { CardTypeQualifierDescription desc = new CardTypeQualifierDescription(); desc.cardType = ProceduralUtils.GetRandomValue <CardType>(random, model); return(desc); }
public override void ApplyToTarget(Targettable target, PlayerController player, Targettable source) { PlayerController targetPlayer = target as PlayerController; if (targetPlayer) { GameSession gameSession = GameUtils.GetGameSession(); CardGenerationFlags flags = CardGenerationFlags.NONE; if (cardQualifier != null) { switch (cardQualifier.qualifierType) { case QualifierType.CARD_TYPE: { CardTypeQualifierDescription cardTypeQualifier = cardQualifier as CardTypeQualifierDescription; flags |= EffectConstants.GetGenerationFlags(cardTypeQualifier.cardType); } break; case QualifierType.CREATURE_TYPE: { CreatureTypeQualifierDescription creatureTypeQualifier = cardQualifier as CreatureTypeQualifierDescription; flags |= EffectConstants.GetGenerationFlags(creatureTypeQualifier.creatureType); } break; } } for (int i = 0; i < amount; i++) { switch (drawModifier) { case DrawModifier.RANDOM: gameSession.ServerPlayerDrawCard(targetPlayer, targetPlayer, flags, true); break; case DrawModifier.SELF: gameSession.ServerPlayerDrawCard(targetPlayer, targetPlayer, flags); break; case DrawModifier.OPPONENT_RANDOM: gameSession.ServerPlayerDrawCard(targetPlayer, GameUtils.GetGameSession().GetOpponents(targetPlayer)[0], flags, true); break; case DrawModifier.OPPONENT: gameSession.ServerPlayerDrawCard(targetPlayer, GameUtils.GetGameSession().GetOpponents(targetPlayer)[0], flags); break; } } } }
public override string CardText(bool plural) { string text = (plural ? "draws " : "draw ") + ((amount == 1) ? "a" : amount.ToString()); if (cardQualifier != null) { switch (cardQualifier.qualifierType) { case QualifierType.CARD_TYPE: { CardTypeQualifierDescription cardTypeQualifier = cardQualifier as CardTypeQualifierDescription; text += " " + CardParsing.Parse(cardTypeQualifier.cardType); } break; case QualifierType.CREATURE_TYPE: { CreatureTypeQualifierDescription creatureTypeQualifier = cardQualifier as CreatureTypeQualifierDescription; text += " " + CardParsing.Parse(creatureTypeQualifier.creatureType); } break; } } text += ((amount == 1) ? " card" : " cards"); switch (drawModifier) { case DrawModifier.RANDOM: text += " randomly"; break; case DrawModifier.OPPONENT: text += " from the opposite deck"; break; case DrawModifier.OPPONENT_RANDOM: text += " randomly from the opposite deck"; break; } return(text); }
private bool IsTargettableCard(TargettingQuery targetQuery) { bool valid = false; ITargettingDescription desc = targetQuery.targettingDesc; if (desc.targettingType == TargettingType.EXCEPT) { ExceptTargetDescription exceptDesc = (ExceptTargetDescription)desc; desc = exceptDesc.targetDescription; } switch (desc.targetType) { case TargetType.CARDS: valid = true; break; case TargetType.CREATURE_CARDS: valid = cardData.GetCardType() == CardType.CREATURE; break; case TargetType.SPELL_CARDS: valid = cardData.GetCardType() == CardType.SPELL; break; case TargetType.TRAP_CARDS: valid = cardData.GetCardType() == CardType.TRAP; break; } if (valid) { IQualifiableTargettingDescription qualifiableDesc = (IQualifiableTargettingDescription)desc; if (qualifiableDesc != null) { valid = qualifiableDesc.GetPlayerAlignment() == Alignment.NEUTRAL || (qualifiableDesc.GetPlayerAlignment() == GetAlignmentToPlayer(targetQuery.requestingPlayer)); IQualifierDescription qualifier = qualifiableDesc.qualifier; if (valid && qualifier != null) { switch (qualifier.qualifierType) { case QualifierType.NONE: break; case QualifierType.CREATURE_TYPE: { CreatureTypeQualifierDescription creatureQualifier = (CreatureTypeQualifierDescription)qualifier; valid = creatureQualifier.creatureType == cardData.GetCreatureType(); } break; case QualifierType.CARD_TYPE: { CardTypeQualifierDescription cardTypeQualifier = (CardTypeQualifierDescription)qualifier; valid = cardTypeQualifier.cardType == cardData.GetCardType(); } break; default: valid = false; break; } } } } return(valid); }