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; }
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; }
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; }