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); }
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)); }
public void SetInteractiveState(InteractiveStateEnum state) { if (state == InteractiveStateEnum.STATE_ANIMATED && !Animated) { return; } State = state; InteractiveHandler.SendStatedElementUpdatedMessage(Map.Clients, Id, Cell.Id, (int)State); }
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)); }