示例#1
0
        public override void EndExecute(Character character)
        {
            var map = World.Instance.GetMap(MapId);

            var interactive = map.GetInteractiveObject(ElementId);

            if (interactive == null)
            {
                return;
            }

            interactive.SetInteractiveState(InteractiveStateEnum.STATE_NORMAL);

            if (Obstacles.Any())
            {
                Obstacles.ForEach(x => x.state = (sbyte)MapObstacleStateEnum.OBSTACLE_CLOSED);
                InteractiveHandler.SendMapObstacleUpdatedMessage(map.Clients, Obstacles);
            }

            foreach (var element in map.GetInteractiveObjects())
            {
                InteractiveHandler.SendInteractiveElementUpdatedMessage(map.Clients, character, element);
            }

            map.MoveCharactersToWalkableCell();

            base.EndExecute(character);
        }
示例#2
0
        public override void Apply(Character character)
        {
            if (!Record.IsConditionFilled(character))
            {
                return;
            }

            var map = World.Instance.GetMap(MapId);

            var interactive = map.GetInteractiveObject(ElementId);

            if (interactive == null)
            {
                return;
            }

            if (interactive.State != InteractiveStateEnum.STATE_NORMAL)
            {
                return;
            }

            interactive.SetInteractiveState(InteractiveStateEnum.STATE_ACTIVATED);

            Obstacles.ForEach(x => x.state = (sbyte)MapObstacleStateEnum.OBSTACLE_OPENED);
            InteractiveHandler.SendMapObstacleUpdatedMessage(map.Clients, Obstacles);

            foreach (var element in map.GetInteractiveObjects())
            {
                InteractiveHandler.SendInteractiveElementUpdatedMessage(map.Clients, character, element);
            }

            map.Area.CallDelayed(20000, () => Reset(character));
        }
示例#3
0
        public override int StartExecute(Character character)
        {
            if (!Record.AreConditionsFilled(character))
            {
                character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_ERROR, 1);
                return(-1);
            }

            var map = World.Instance.GetMap(MapId);

            var interactive = map.GetInteractiveObject(ElementId);

            if (interactive == null)
            {
                return(-1);
            }

            if (interactive.State != InteractiveStateEnum.STATE_NORMAL)
            {
                return(-1);
            }

            interactive.SetInteractiveState(InteractiveStateEnum.STATE_ACTIVATED);

            if (Obstacles.Any())
            {
                Obstacles.ForEach(x => x.state = (sbyte)MapObstacleStateEnum.OBSTACLE_OPENED);
                InteractiveHandler.SendMapObstacleUpdatedMessage(map.Clients, Obstacles);
            }

            foreach (var element in map.GetInteractiveObjects())
            {
                InteractiveHandler.SendInteractiveElementUpdatedMessage(map.Clients, character, element);
            }

            return(base.StartExecute(character));
        }