Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }