void GenerateInteractivePlot() { foreach (var trigger in CellTriggerManager.Instance.GetCellTriggers()) { if (trigger.Type != "Teleport") { continue; } var interactive = m_interactivesSpawns.Values.FirstOrDefault(x => x.MapId == trigger.MapId && x.CellId == trigger.CellId && x.TemplateId == null && !x.CustomSkills.Any()); if (interactive == null) { continue; } var skillId = m_idProviderSkill.Pop(); var skill = new InteractiveCustomSkillRecord { Id = skillId, Type = "Teleport", CustomTemplateId = 339, Parameter0 = trigger.Parameter1, //MapId Parameter1 = trigger.Parameter0, //CellId Condition = trigger.Condition }; interactive.CustomSkills.Add(skill); } }
public void AddInteractiveSpawn(InteractiveSpawn spawn, InteractiveCustomSkillRecord skill, InteractiveSpawnSkills spawnSkill) { Database.Insert(spawn); Database.Insert(skill); Database.Insert(spawnSkill); m_interactivesSpawns.Add(spawn.Id, spawn); spawn.GetMap().SpawnInteractive(spawn); }
protected CustomSkill(int id, InteractiveCustomSkillRecord record, InteractiveObject interactiveObject) : base(id, record.CustomTemplateId.HasValue ? InteractiveManager.Instance.GetSkillTemplate(record.CustomTemplateId.Value) : InteractiveManager.Instance.GetDefaultSkillTemplate(), interactiveObject) { Record = record; }
public SkillZaapiTeleport(int id, InteractiveCustomSkillRecord record, InteractiveObject interactiveObject) : base(id, record, interactiveObject) { }
public SkillAnimate(int id, InteractiveCustomSkillRecord skillTemplate, InteractiveObject interactiveObject) : base(id, skillTemplate, interactiveObject) { m_mapObstacles = ObstaclesCSV == null ? new MapObstacle[0] : ObstaclesCSV.FromCSV <short>(",").Select(x => new MapObstacle(x, (sbyte)MapObstacleStateEnum.OBSTACLE_CLOSED)).ToArray(); }
public SkillRevive(int id, InteractiveCustomSkillRecord skillTemplate, InteractiveObject interactiveObject) : base(id, skillTemplate, interactiveObject) { }
public SkillPaddock(int id, InteractiveCustomSkillRecord record, InteractiveObject interactiveObject) : base(id, record, interactiveObject) { }
public SkillGuildCreation(int id, InteractiveCustomSkillRecord record, InteractiveObject interactiveObject) : base(id, record, interactiveObject) { }
public SkillOpenJobBook(int id, InteractiveCustomSkillRecord record, InteractiveObject interactiveObject) : base(id, record, interactiveObject) { }
public SkillZaapSave(int id, InteractiveCustomSkillRecord record, InteractiveObject interactiveObject) : base(id, record.Template, interactiveObject) { }
public override void ExecuteAdd(TriggerBase trigger) { var character = trigger is GameTrigger ? (trigger as GameTrigger).Character : null; if (character == null) { return; } var map = trigger.Get <Map>("mapDst"); if (map == null) { trigger.ReplyError("Map '{0}' doesn't exist", trigger.Get <int>("mapid")); } else { var mapSrc = character.Map; var cellIdDst = map.Cells[trigger.Get <short>("cellidDst")]; var elementId = trigger.Get <int>("elementId"); var template = trigger.Get <InteractiveTemplate>("templateId"); var templateId = template == null ? 0 : template.Id; var direction = trigger.Get <DirectionsEnum>("orientationId"); if (mapSrc.GetInteractiveObject(elementId) != null) { trigger.ReplyError("Interactive object {0} already exists on map {1}", elementId, mapSrc.Id); return; } var spawnId = InteractiveManager.Instance.PopSpawnId(); var skillId = InteractiveManager.Instance.PopSkillId(); var skill = new InteractiveCustomSkillRecord { Id = skillId, Type = "Teleport", Duration = 0, Parameter0 = map.Id.ToString(), Parameter1 = cellIdDst.Id.ToString(), Parameter2 = direction.ToString("D") }; var spawn = new InteractiveSpawn { Id = spawnId, MapId = mapSrc.Id, CustomSkills = { skill }, TemplateId = templateId }; var spawnSkill = new InteractiveSpawnSkills { InteractiveSpawnId = spawnId, SkillId = skillId }; WorldServer.Instance.IOTaskPool.AddMessage(() => { InteractiveManager.Instance.AddInteractiveSpawn(spawn, skill, spawnSkill); ContextRoleplayHandler.SendMapComplementaryInformationsDataMessage(character.Client); }); trigger.ReplyBold("Add Interactive {0} on map {1}", spawn.Template?.Name ?? "(no name)", spawn.MapId); } }