Beispiel #1
0
        public override int GetHashCode()
        {
            int hashCode = 0;

            unchecked {
                hashCode += 1000000007 * Type.GetHashCode();
                hashCode += 1000000009 * Cost.GetHashCode();
                hashCode += 1000000021 * MinimumLevel.GetHashCode();
                hashCode += 1000000033 * NumTargets.GetHashCode();
                hashCode += 1000000087 * unknown1.GetHashCode();
            }
            return(hashCode);
        }
Beispiel #2
0
        public override string ToString(Card card, bool capitalize = false)
        {
            StringBuilder toStringBuilder = new StringBuilder();

            if (capitalize)
            {
                toStringBuilder.Append("Remove ");
            }
            else
            {
                toStringBuilder.Append("remove ");
            }

            if (!CountersExact)
            {
                toStringBuilder.Append("up to ");
            }

            if (NumCounters == 1)
            {
                toStringBuilder.Append("a counter ");
            }
            else
            {
                toStringBuilder.Append(NumCounters.ToString());
                toStringBuilder.Append(" counters ");
            }

            switch (DivideMethod)
            {
            case DivideMethod.None:
                toStringBuilder.Append("from ");
                break;

            default:
                throw new InvalidOperationException("Unsupported DivideMethod for RemoveCounterEffect.");
            }

            if (!TargetsExact)
            {
                toStringBuilder.Append("up to ");
            }

            if (NumTargets > 1)
            {
                toStringBuilder.Append(NumTargets.ToString());
                toStringBuilder.Append(" ");
            }

            switch (Target)
            {
            case Target.NonInfluence:
                toStringBuilder.Append("target non-influence card");
                if (NumTargets > 1)
                {
                    toStringBuilder.Append("s");
                }
                break;

            case Target.AttachedShip:
                toStringBuilder.Append("attached ship");
                break;

            case Target.OtherShipYouControl:
                toStringBuilder.Append("another target ship you control");
                break;

            case Target.YourNonInfluence:
                toStringBuilder.Append("target non-influence card you control");
                break;

            case Target.This:
                toStringBuilder.Append(card.Title);
                break;

            default:
                throw new InvalidOperationException("Unsupported Target for RemoveCounterEffect.");
            }

            return(toStringBuilder.ToString());
        }
        public override string ToString(Card card, bool capitalize = false)
        {
            StringBuilder toStringBuilder = new StringBuilder();

            if (capitalize)
            {
                toStringBuilder.Append("Exhaust ");
            }
            else
            {
                toStringBuilder.Append("exhaust ");
            }

            if (Target != Target.This)
            {
                if (NumTargetsType == AmountType.Numeric)
                {
                    if (NumTargets == 1)
                    {
                        toStringBuilder.Append("target");
                    }
                    else
                    {
                        toStringBuilder.Append(NumTargets.ToString());
                    }
                }
                else
                {
                    if ((card.EnergyCostType == AmountType.Variable) && (Description.ToDescription(card.EnergyCostVar).Contains(NumTargetsVar.ToString())))
                    {
                        toStringBuilder.Append("any number of");
                    }
                    else
                    {
                        toStringBuilder.Append(Description.ToDescription(NumTargetsVar));
                    }
                }
            }

            switch (Target)
            {
            case Target.YourChargedShips:
                toStringBuilder.Append(string.Format(" charged ship{0} you control", NumTargets == 1 ? string.Empty : "s"));
                break;

            case Target.This:
                toStringBuilder.Append(card.Title);
                break;

            default:
                throw new InvalidOperationException("Unsupported Target for ExhaustShipCost.");
            }

            if (NumTargetsType == AmountType.Variable)
            {
                if (!((card.EnergyCostType == AmountType.Variable) && (Description.ToDescription(card.EnergyCostVar).Contains(NumTargetsVar.ToString()))))
                {
                    toStringBuilder.Append(". ");
                    toStringBuilder.Append(Description.ToDescription(NumTargetsVar));
                    toStringBuilder.Append(" is the number of ");

                    switch (Target)
                    {
                    case Target.YourChargedShips:
                        toStringBuilder.Append("ships");
                        break;

                    default:
                        throw new InvalidOperationException("Unsupported Target for ExhaustShipCost.");
                    }

                    toStringBuilder.Append(" you exhausted this way");
                }
            }

            return(toStringBuilder.ToString());
        }