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;
        }
Example #2
0
        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);
        }
Example #3
0
 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
     { }
 }