Esempio n. 1
0
 public static void Serialize(XmlWriter xWrite, Castable contents)
 {
     XmlSerializer Writer = new XmlSerializer(contents.GetType());
     XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
     ns.Add("", "http://www.hybrasyl.com/XML/Actions");
     Writer.Serialize(xWrite, contents, ns);
 }
Esempio n. 2
0
 public override void Attack(Castable castObject)
 {
     //do monster aoe
 }
Esempio n. 3
0
 public override void Attack(Castable castObject, Creature target = null)
 {
     //do monster spell
 }
Esempio n. 4
0
 public override void Attack(Castable castObject)
 {
     base.Attack(castObject);
 }
Esempio n. 5
0
 public override void Attack(Castable castObject, Creature target = null)
 {
     base.Attack(castObject, target);
 }
Esempio n. 6
0
        public override void Attack(Direction direction, Castable castObject = null, Creature target = null)
        {
            if (target != null)
            {
                var damage = castObject.Effects.Damage;

                if (damage.Formula == null) //will need to be expanded. also will need to account for damage scripts
                {
                    var simple = damage.Simple;
                    var damageType = EnumUtil.ParseEnum<Enums.DamageType>(damage.Type.ToString(), Enums.DamageType.Magical);
                    Random rand = new Random();
                    var dmg = rand.Next(Convert.ToInt32(simple.Min), Convert.ToInt32(simple.Max)); //these need to be set to integers as attributes. note to fix.
                    target.Damage(dmg, OffensiveElement, damageType, this);
                }
                else
                {
                    var formula = damage.Formula;
                    var damageType = EnumUtil.ParseEnum<Enums.DamageType>(damage.Type.ToString(), Enums.DamageType.Magical);
                    FormulaParser parser = new FormulaParser(this, castObject, target);
                    var dmg = parser.Eval(formula);
                    target.Damage(dmg, OffensiveElement, damageType, this);
                }
            }
        }
Esempio n. 7
0
        public bool AddSpell(Castable item, byte slot)
        {
            // Quantity check - if we already have an item with the same name, will
            // adding the MaximumStack)

            if (SpellBook.Contains(item.Id))
            {
                SendSystemMessage("You already know this spell.");
                return false;
            }

            Logger.DebugFormat("Attempting to add spell to spellbook slot {0}", slot);


            if (!SpellBook.Insert(slot, item))
            {
                Logger.DebugFormat("Slot was invalid or not null");
                return false;
            }

            SendSpellUpdate(item, slot);
            return true;
        }
Esempio n. 8
0
 public bool AddSpell(Castable castable)
 {
     if (SpellBook.IsFull)
     {
         SendSystemMessage("You cannot learn any more spells.");
         return false;
     }
     return AddSkill(castable, SkillBook.FindEmptySlot());
 }
Esempio n. 9
0
        public void SendSpellUpdate(Castable item, int slot)
        {
            if (item == null)
            {
                SendClearSkill(slot);
                return;
            }
            Logger.DebugFormat("Adding spell {0} to slot {2}",
                item.Name, slot);
            var x17 = new ServerPacket(0x17);
            x17.WriteByte((byte)slot);
            x17.WriteUInt16((ushort)(item.Icon));
            x17.WriteByte(0x00); //spell type? how are we determining this?
            x17.WriteString8(item.Name);
            x17.WriteString8(item.Name); //prompt? what is this?
            x17.WriteByte((byte)item.Lines);
            x17.WriteByte(0); //current level
            x17.WriteByte((byte)100); //this will need to be updated
            Enqueue(x17);

        }
Esempio n. 10
0
        public void SendSkillUpdate(Castable item, int slot)
        {
            if(item == null)
            {
                SendClearSkill(slot);
                return;
            }
            Logger.DebugFormat("Adding skill {0} to slot {2}",
                item.Name, slot);
            var x2C = new ServerPacket(0x2C);
            x2C.WriteByte((byte)slot);
            x2C.WriteUInt16((ushort)(item.Icon));
            x2C.WriteString8(item.Name);
            x2C.WriteByte(0); //current level
            x2C.WriteByte((byte)100); //this will need to be updated
            Enqueue(x2C);

        }
Esempio n. 11
0
 public FormulaParser(Creature caster, Castable castable, Creature target = null)
 {
     _caster = caster;
     _castable = castable;
     _target = target;
 }
Esempio n. 12
0
 public static Castable Deserialize(XmlReader reader, Castable contents = null)
 {
     if (contents == null) contents = new Castable();
     //reader.Settings.IgnoreWhitespace = false;
     XmlSerializer XmlSerial = new XmlSerializer(contents.GetType());
     if (XmlSerial.CanDeserialize(reader))
     {
         var xContents = XmlSerial.Deserialize(reader);
         contents = (Castable)xContents;
     }
     return contents;
 }