Exemplo n.º 1
0
        public override SkillResults Complete(MabiCreature creature, MabiSkill skill, MabiPacket packet)
        {
            if (creature.Temp.SkillItem1 == null || creature.Temp.SkillItem2 == null)
                return SkillResults.Failure;

            var part = packet.GetInt();

            if (packet.GetElementType() == ElementType.Short)
                return this.CompleteRegular(creature, packet, skill.Id, part);
            else if (packet.GetElementType() == ElementType.Byte)
                return this.CompleteFixed(creature, packet, skill.Id, part);

            return SkillResults.Failure;
        }
        public override SkillResults Start(MabiCreature creature, MabiSkill skill, MabiPacket packet)
        {
            // Usually the second parameter is an empty string,
            // but if it's not empty it seems to be tags.
            var parameter = (packet != null && packet.GetElementType() == ElementType.String ? packet.GetString() : null);
            var tags = new MabiTags(parameter);

            var result = this.Start(creature, skill, tags);

            Send.SkillStart(creature, skill.Id, parameter);

            return result;
        }
Exemplo n.º 3
0
        public override SkillResults Stop(MabiCreature creature, MabiSkill skill, MabiPacket packet)
        {
            var parameter = (packet != null && packet.GetElementType() == ElementType.String ? packet.GetString() : null);

            var result = this.Stop(creature, skill);

            if (parameter != null)
                Send.SkillStop(creature, skill.Id, parameter);
            else
                Send.SkillStop(creature, skill.Id, 1);

            return result;
        }
        public override SkillResults Stop(MabiCreature creature, MabiSkill skill, MabiPacket packet)
        {
            // Sometimes the second stop parameter is a byte,
            // possibly when canceling by moving (eg Rest).
            // The client doesn't really seem to care about what we send back though...
            var parameter = (packet != null && packet.GetElementType() == ElementType.String ? packet.GetString() : null);
            var tags = new MabiTags(parameter);

            var result = this.Stop(creature, skill, tags);

            if (parameter != null)
                Send.SkillStop(creature, skill.Id, parameter);
            else
                Send.SkillStop(creature, skill.Id, 1);

            return result;
        }
Exemplo n.º 5
0
        public override SkillResults Use(MabiCreature creature, MabiSkill skill, MabiPacket packet)
        {
            if (creature.Temp.SkillItem1 == null || creature.Temp.SkillItem2 == null)
                return SkillResults.Failure;

            var part = packet.GetInt();

            // Regular
            if (packet.GetElementType() == ElementType.Short)
            {
                var x = packet.GetShort();
                var y = packet.GetShort();

                Send.SkillUseDye(creature.Client, creature, skill.Id, part, x, y);
            }
            // Fixed
            else if (packet.GetElementType() == ElementType.Byte)
            {
                var unk = packet.GetByte();

                Send.SkillUseDye(creature.Client, creature, skill.Id, part, unk);
            }

            return SkillResults.Okay;
        }