public LearnedSpell(Spell spell) { this.spell = spell; this.name = spell.name; this.charges = spell.charges; this.timer = spell.chargetime; }
public void setSpell(string name) { foreach (Spell u in Program.spells) { if (u.name == name) { this.Spell = u; break; } } }
public bool DuplicateCheck(Spell spell) { return (spell == this.spell); }
public static Spell FromXmlElement(XmlElement element) { Spell spell = new Spell(); spell.name = element.GetElementsByTagName("Name")[0].InnerText.Trim(); spell.chargetime = int.Parse(element.GetElementsByTagName("ChargeTime")[0].InnerText.Trim()); spell.charges = int.Parse(element.GetElementsByTagName("Charges")[0].InnerText.Trim()); spell.probability = double.Parse(element.GetElementsByTagName("Probability")[0].InnerText.Trim()); // Target foreach (XmlNode u in element.GetElementsByTagName("Target")) { string target = u.InnerText.Trim(); if (target == "Self") spell.targetself = true; if (target == "Enemy") spell.target1enemy = true; if (target == "Enemies") spell.targetenemies = true; if (target == "Item") spell.targetitem = true; if (target == "Thing") spell.targetthing = true; } if (element.GetElementsByTagName("Range").Count == 1) spell.range = int.Parse(element.GetElementsByTagName("Range")[0].InnerText.Trim()); else spell.range = 1; spell.identify = element.GetElementsByTagName("Identify").Count == 1; spell.uncurse = element.GetElementsByTagName("Uncurse").Count == 1; spell.clone = element.GetElementsByTagName("Clone").Count == 1; // Change effects (All wrapped up in "delta") if (element.GetElementsByTagName("Health").Count == 1) spell.delta.Health = int.Parse(element.GetElementsByTagName("Health")[0].InnerText.Trim()); if (element.GetElementsByTagName("Attack").Count == 1) spell.delta.Attack = int.Parse(element.GetElementsByTagName("Attack")[0].InnerText.Trim()); if (element.GetElementsByTagName("Defense").Count == 1) spell.delta.Defense = int.Parse(element.GetElementsByTagName("Defense")[0].InnerText.Trim()); if (element.GetElementsByTagName("Food").Count == 1) spell.delta.Food = int.Parse(element.GetElementsByTagName("Food")[0].InnerText.Trim()); if (element.GetElementsByTagName("MoreSpells").Count == 1) spell.delta.MoreSpells = int.Parse(element.GetElementsByTagName("MoreSpells")[0].InnerText.Trim()); if (element.GetElementsByTagName("Gender").Count == 1) { string result = element.GetElementsByTagName("Gender")[0].InnerText.Trim(); if (result == "Female") spell.delta.NewGender = AttributeChange.StatusGenders.Female; else if (result == "Male") spell.delta.NewGender = AttributeChange.StatusGenders.Male; else if (result == "Flip") spell.delta.NewGender = AttributeChange.StatusGenders.Flip; } if (element.GetElementsByTagName("Species").Count == 1) spell.delta.setSpecies(element.GetElementsByTagName("Species")[0].InnerText.Trim()); // Status effects - you can only have one if (element.GetElementsByTagName("Paralyze").Count == 1) spell.delta.Status = Entity.statuses.Paralyzed; if (element.GetElementsByTagName("Charm").Count == 1) spell.delta.Status = Entity.statuses.Charmed; if (element.GetElementsByTagName("Poison").Count == 1) spell.delta.Status = Entity.statuses.Poison; return spell; }
public bool Learn(Spell spell) { LearnedSpell newSpell = new LearnedSpell(spell); if ((spells.Count < maxspells) && (this.spells.Where(item => (item.DuplicateCheck(spell) == true)).Count() == 0)) { this.spells.Add(new LearnedSpell(spell)); if (this == Program.entities[0]) Program.Report(String.Concat("Learned ", spell.name,"!")); return true; } else return false; }