Beispiel #1
0
 private void AddAbiities(Card item)
 {
     foreach (var ability in item.Abilities.Where(p => p != NonAbility))
     {
         if (!Abilities.Contains(ability))
         {
             Abilities += ability;
         }
     }
 }
Beispiel #2
0
        private bool Disable(Hero target)
        {
            var ability = target.Spellbook.Spells.Any(x => Abilities.Contains(x.Id) && x.IsInAbilityPhase);

            if (ability)
            {
                return(true);
            }

            return(false);
        }
Beispiel #3
0
        //public void AddAbility(Ability ab)
        //{
        //    AddAbility(ab.Name);
        //}

        public void AddAbility(string ab)
        {
            if (Abilities.Contains(ab))
            {
                return;
            }

            Abilities.Add(ab);

            if (!wasChanged)
            {
                wasChanged = true;
            }
        }
Beispiel #4
0
        // Will return true if successful, false if failed
        public bool RemoveAbility(string ab)
        {
            if (!Abilities.Contains(ab))
            {
                return(false);
            }

            Abilities.Remove(ab);

            if (!wasChanged)
            {
                wasChanged = true;
            }

            return(true);
        }
Beispiel #5
0
        internal void SetAbility(ABILITY ability, bool isAdd, bool setLogic = true)
        {
            if (setLogic)
            {
                if (this.IsMonster() && this.IsFrame(FRAME.Normal) == false)
                {
                    //Another Logic
                    if (ability.IsEffectAbility())
                    {
                        this.Abilities.RemoveAll(o => o.IsEffectAbility());
                    }

                    if (Abilities.Contains(ABILITY.Effect))
                    {
                        Abilities.Remove(ABILITY.Effect);
                    }
                }
                else
                {
                    Frame     = DefaultFrame;
                    Attribute = ATTRIBUTE.UNKNOWN;
                    Property  = PROPERTY.NONE;
                    Level     = 4; //Default Level
                    ATK       = DEF = double.NaN;
                }
            }
            if (isAdd && Abilities.Contains(ability) == false) //Add
            {
                if (ability.IsEffectAbility() && Frame != FRAME.Effect)
                {
                    Abilities.Add(ABILITY.Effect);
                }
                Abilities.Add(ability);
            }
            else if (isAdd == false && Abilities.Contains(ability)) //Remove
            {
                Abilities.Remove(ability);
            }

            Abilities.Sort();
        }
Beispiel #6
0
        public void PlayerTest()
        {
            Player p1 = new Player {
                Name = "Cer"
            };
            var capabilities = new Abilities[] { Abilities.Intuition, Abilities.Explore, Abilities.Convince };

            foreach (var capability in capabilities)
            {
                p1.SwitchAbility(capability);
            }
            int found_ability_count = 0;

            foreach (var possible_ability in (Abilities[])Enum.GetValues(typeof(Abilities)))
            {
                if (p1.IsCapable(possible_ability))
                {
                    Assert.IsTrue(capabilities.Contains(possible_ability), "player has an unexpected ability.");
                    found_ability_count++;
                }
            }
            Assert.AreEqual(capabilities.Count(), found_ability_count);
        }
Beispiel #7
0
        public void SetFrame(FRAME frame, bool setLogic = true)
        {
            if (setLogic)
            {
                //Card is Monster
                if (this.IsMonster())
                {
                    //To Spell/Trap
                    if (frame == FRAME.Spell || frame == FRAME.Trap)
                    {
                        ScaleLeft  = ScaleRight = ATK = DEF = Level = Rank = -1;
                        IsPendulum = false;
                        Attribute  = frame == FRAME.Spell ? ATTRIBUTE.SPELL : ATTRIBUTE.TRAP;
                        Abilities.Clear();
                        Property = PROPERTY.Normal;
                        Type     = TYPE.NONE;
                    }

                    if (Abilities.Contains(ABILITY.Effect) && frame == FRAME.Effect)
                    {
                        Abilities.Remove(ABILITY.Effect);
                    }
                    //To Xyz
                    if (frame == FRAME.Xyz && Frame != FRAME.Xyz)
                    {
                        Level = double.NaN;
                        Rank  = 4;
                    }
                    //To Non-Xyz
                    if (frame != FRAME.Xyz && Frame == FRAME.Xyz)
                    {
                        Rank  = double.NaN;
                        Level = 4;
                    }
                    if (frame == FRAME.Normal)
                    {
                        Abilities.Clear();
                    }
                }
                //Card is Spell/Trap
                else
                {
                    //From Trap To Spell
                    if (frame == FRAME.Spell)
                    {
                        Attribute = ATTRIBUTE.SPELL;
                        if (Property.IsTrapPropertyOnly())
                        {
                            Property = PROPERTY.Normal;
                        }
                    }
                    //From Spell To Trap
                    else if (frame == FRAME.Trap)
                    {
                        Attribute = ATTRIBUTE.TRAP;
                        if (Property.IsSpellPropertyOnly())
                        {
                            Property = PROPERTY.Normal;
                        }
                    }
                    //To Monster
                    else
                    {
                        ScaleLeft = ScaleRight = ATK = DEF = double.NaN;
                        Attribute = ATTRIBUTE.UNKNOWN;
                        Property  = PROPERTY.NONE;
                        Level     = 4; //Default Level
                    }
                }
            }
            this.Frame = frame;
        }
Beispiel #8
0
        //public bool RemoveAbility(Ability ab)
        //{
        //    return RemoveAbility(ab.Name);
        //}

        public bool HasAbility(string str)
        {
            return(Abilities.Contains(str));
        }
Beispiel #9
0
 public bool IsCharge() => Abilities.Contains("C");
Beispiel #10
0
 public bool IsDrain() => Abilities.Contains("D");
Beispiel #11
0
 public bool IsBreakthrough() => Abilities.Contains("B");
Beispiel #12
0
 public bool IsLethal() => Abilities.Contains("L");
Beispiel #13
0
 public bool IsWard() => Abilities.Contains("W");