예제 #1
0
        protected override bool CheckValidityInternal(Entities.Entity Performer, List <Entities.Entity> Selection, TurnInfo TI)
        {
            Entities.Unit attacker = (Entities.Unit)Performer;
            Entities.Unit target   = (Entities.Unit)Selection[0];

            if (Performer.IsUnit() && Selection[0].IsUnit() && Performer.GetOwnerIndex() != Selection[0].GetOwnerIndex() &&
                TI.GetCPI() == Performer.GetOwnerIndex() && !attacker.HasStatus("Can't attack"))
            {
                return(attacker.CanAttack(target) != -1);
            }
            else
            {
                return(false);
            }
        }
예제 #2
0
 protected override bool CheckValidityInternal(Entities.Entity Performer, List <Entities.Entity> Selection, TurnInfo TI)
 {
     if (TI.GetCPI() == Performer.GetOwnerIndex() && Performer.IsUnit() && !((Unit)Performer).HasStatus("Moved"))
     {
         return(true);
     }
     return(false);
 }
예제 #3
0
 protected override bool CheckValidityInternal(Entities.Entity Performer, List <Entities.Entity> Selection, TurnInfo TI)
 {
     if (Performer.GetOwnerIndex() == TI.GetCPI() && Performer.IsUnit() && Selection[0].IsUnit())
     {
         Unit AUnit = (Unit)Performer;
         Unit TUnit = (Unit)Selection[0];
         return(AUnit.GetCurrentRange() == TUnit.GetCurrentRange() &&
                !AUnit.HasStatus("Attached this turn") &&
                !TUnit.HasStatus("Attached:") &&
                TUnit.IsClass("Infantry"));
     }
     return(false);
 }
예제 #4
0
 protected override bool CheckValidityInternal(Entities.Entity Performer, List <Entities.Entity> Selection, TurnInfo TI)
 {
     if (Performer.GetOwnerIndex() == TI.GetCPI() && TI.IsMulligan)
     {
         int usedMulligans, maxMulligans;
         Performer.Owner.GetMulliganInfo(out usedMulligans, out maxMulligans);
         return(usedMulligans < maxMulligans);
     }
     else
     {
         return(false);
     }
 }
        public override void Execute(Entities.Entity Performer, List <Entities.Entity> Selection, CardGameState GS)
        {
            if (mUniqueEntity)
            {
                bool isUnique = true;
                if (mRange != Range.NA)
                {
                    foreach (Entity E in Performer.Owner.mBoard.RangeZones[(int)mRange].List.Cards)
                    {
                        if (E.Name == mSpawnEntityName)
                        {
                            isUnique = false;
                        }
                    }
                }
                else if (mZoneType == ZoneType.Effect)
                {
                    foreach (Effects.EffectNode EN in Performer.Owner.mEffects.Nodes)
                    {
                        if (EN.UniqueName == mSpawnEntityName)
                        {
                            isUnique = false;
                        }
                    }
                }
                if (!isUnique)
                {
                    return;
                }
            }

            Entities.Entity[] spawnedEnities = new Entities.Entity[mSpawnEntityNumber];
            CardZoneType      zoneToPlace    = new CardZoneType(mZoneType, mRange, Performer.GetOwnerIndex());

            for (int i = 0; i < mSpawnEntityNumber; i++)
            {
                spawnedEnities[i]       = Loading.CardLoading.ProduceCard(mSpawnEntityName, State.StateHolder.StateManager.CardPool);
                spawnedEnities[i].Owner = Performer.Owner;
                spawnedEnities[i].SetIsGeneratedEntity();
                GS.CardPlaced(zoneToPlace, spawnedEnities[i]);
            }
        }
예제 #6
0
        public override void Execute(Entities.Entity Performer, List <Entities.Entity> Selection, CardGameState GS)
        {
            List <Modules.Module> AttachedModule = ((Unit)Performer).GetModules(ModuleType.Targetting, typeof(Modules.Target.Attached));

            if (AttachedModule.Count > 0)
            {
                AttachedModule[0].Message();
            }
            if (Performer.Zone.getRange() == Range.Short)
            {
                Performer.Zone = GS.Players[Performer.GetOwnerIndex()].mBoard.RangeZones[(int)Range.Long].Type;
                GS.Players[Performer.GetOwnerIndex()].RemoveFromList(Performer);
                GS.Players[Performer.GetOwnerIndex()].mBoard.RangeZones[(int)Range.Long].List.AddCard(Performer);
            }
            else
            {
                Performer.Zone = GS.Players[Performer.GetOwnerIndex()].mBoard.RangeZones[(int)Range.Short].Type;
                GS.Players[Performer.GetOwnerIndex()].RemoveFromList(Performer);
                GS.Players[Performer.GetOwnerIndex()].mBoard.RangeZones[(int)Range.Short].List.AddCard(Performer);
            }
            ((Unit)Performer).AddStatus("Moved");
        }