private void AddAbiities(Card item) { foreach (var ability in item.Abilities.Where(p => p != NonAbility)) { if (!Abilities.Contains(ability)) { Abilities += ability; } } }
private bool Disable(Hero target) { var ability = target.Spellbook.Spells.Any(x => Abilities.Contains(x.Id) && x.IsInAbilityPhase); if (ability) { return(true); } return(false); }
//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; } }
// 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); }
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(); }
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); }
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; }
//public bool RemoveAbility(Ability ab) //{ // return RemoveAbility(ab.Name); //} public bool HasAbility(string str) { return(Abilities.Contains(str)); }
public bool IsCharge() => Abilities.Contains("C");
public bool IsDrain() => Abilities.Contains("D");
public bool IsBreakthrough() => Abilities.Contains("B");
public bool IsLethal() => Abilities.Contains("L");
public bool IsWard() => Abilities.Contains("W");