private void Teleport_OnAdditionEnd(Actor actor, Buff skill, bool cancel) { Map.Map map = Map.MapManager.Instance.GetMap(actor.MapInstanceID); SagaBNS.GameServer.Network.Client.GameSession session = SagaBNS.GameServer.Manager.GameClientManager.Instance.FindClient(actor.Name); RespawnPoint sendto = TeleportPoint(arg.Dir); bool passed = true; ((ActorExt)actor).Tasks.TryRemove("Teleport", out Task removed); List <UpdateEvent> update = new List <UpdateEvent>(); UpdateEvent evt = new UpdateEvent() { Actor = actor, UpdateType = UpdateTypes.Teleport }; if (cancel) { evt.AdditionCount = 2; passed = false; } else { evt.AdditionCount = 1; } map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, actor, false); update.Add(evt); session.Character.Client().SendActorUpdates(update); if (passed && session != null && sendto.teleportId != 0) { foreach (KeyValuePair <SagaBNS.Common.Item.Item, ushort> i in items) { session.RemoveItemSlot(i.Key.SlotID, i.Value); } session.Character.Status.DisappearEffect = 539; session.Character.Status.ShouldLoadMap = true; Map.Map map2 = MapManager.Instance.GetMap(sendto.MapID, session.Character.CharID, session.Character.PartyID); session.Map.SendActorToMap(session.Character, map2, sendto.X, sendto.Y, sendto.Z); } }
private void Repair_OnAdditionEnd(Actor actor, Buff skill, bool cancel) { Map.Map map = Map.MapManager.Instance.GetMap(actor.MapInstanceID); SagaBNS.GameServer.Network.Client.GameSession session = SagaBNS.GameServer.Manager.GameClientManager.Instance.FindClient(actor.Name); ((ActorExt)actor).Tasks.TryRemove("Repair", out Task removed); foreach (KeyValuePair <SagaBNS.Common.Item.Item, ushort> i in items) { session.RemoveItemSlot(i.Key.SlotID, i.Value); } //TODO: Set Durability to Max for equipted weapon UpdateEvent evt = new UpdateEvent() { UpdateType = UpdateTypes.Repair, Actor = actor, Target = arg.Target, AdditionCount = 1 }; map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, actor, true); }