示例#1
0
 public LearnedSpell(Spell spell)
 {
     this.spell = spell;
     this.name = spell.name;
     this.charges = spell.charges;
     this.timer = spell.chargetime;
 }
示例#2
0
 public void setSpell(string name)
 {
     foreach (Spell u in Program.spells)
     {
         if (u.name == name)
         {
             this.Spell = u;
             break;
         }
     }
 }
示例#3
0
 public bool DuplicateCheck(Spell spell)
 {
     return (spell == this.spell);
 }
示例#4
0
        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;
        }
示例#5
0
 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;
 }