public override SkillResults Complete(MabiCreature creature, MabiSkill skill, MabiPacket packet) { var targetId = packet.GetLong(); // 2 unk ints in older logs //var unk1 = packet.GetInt(); //var unk2 = packet.GetInt(); var target = WorldManager.Instance.GetCreatureById(targetId); if (target == null || !target.IsDead) return SkillResults.InvalidTarget; if (creature.Temp.SkillItem1 == null || creature.Temp.SkillItem1.Info.Class != 63000 || creature.Temp.SkillItem1.Info.Amount < 1) return SkillResults.Failure; creature.Inventory.Decrement(creature.Temp.SkillItem1); // TODO: stats creature.Revive(); Send.SkillComplete(creature.Client, creature, skill.Id, targetId); return SkillResults.Okay; }
public virtual void ReviveInArena(MabiCreature creature) { var loc = this.RevivalLocations[RandomProvider.Get().Next(this.RevivalLocations.Length)]; creature.SetLocation(ArenaRegion, loc.X, loc.Y); WorldManager.Instance.BroadcastRegion(new MabiPacket(Op.SetLocation, creature.Id).PutByte(1).PutInts(ArenaRegion, loc.X, loc.Y), ArenaRegion); creature.Client.Send(new MabiPacket(Op.WarpUnk2, creature.Id)); creature.Injuries += creature.LifeInjured * .2f; creature.Life = creature.LifeInjured / 2; creature.Stamina = creature.StaminaHunger / 2; creature.Revive(); this.HideCreature(creature); Send.Revived(creature); }
public override void ReviveInLobby(MabiCreature creature) { try { var c = creature.Client as WorldClient; c.Warp(LobbyRegion, 1150, 3545); creature.FullHeal(); creature.Revive(); Send.Revived(creature); } catch { } }