private void SkillCancelSubCommand(TSPlayer player) { var canceledSkill = CustomSkillRunner.RemoveActiveSkill(player.Name); if (canceledSkill == null) { player.SendErrorMessage("There is nothing to cancel!"); } }
private void OnPlayerChat(PlayerChatEventArgs e) { //don't check commands if (e.RawText.StartsWith(Commands.Specifier)) { return; } if (!e.Player.HasPermission(SkillPermission)) { return; } var session = Session.GetOrCreateSession(e.Player); if (session.TriggerWordsToSkillDefinitions.Count > 0) { foreach (var kvp in session.TriggerWordsToSkillDefinitions) { var triggerWord = kvp.Key; var definition = kvp.Value; if (e.RawText.Contains(triggerWord)) { //can we use this skill? if (definition.PermissionsToUse != null && !PlayerFunctions.PlayerHasPermission(e.Player, definition.PermissionsToUse)) { continue; } if (!session.IsSkillReady(definition.Name)) { continue; } if (session.PlayerSkillInfos.TryGetValue(definition.Name, out var playerSkillInfo)) { CustomSkillRunner.AddActiveSkill(e.Player, definition, playerSkillInfo.CurrentLevel); return; } } } } //Debug.Print($"Chat: raw: {e.RawText}"); //Debug.Print($"Chat: formatted: {e.TShockFormattedText}"); }
private void SkillSubCommand(TSPlayer player, string skillName, string categoryName = null) { if (!GetCategoryAndSkill(player, skillName, categoryName, out var category, out var definition)) { return; } var session = Session.GetOrCreateSession(player); if (!session.HasLearned(skillName)) { player.SendErrorMessage($"You have not learned {skillName}."); return; } //are we allowed to use this skill? if (definition.PermissionsToUse != null && !PlayerFunctions.PlayerHasPermission(player, definition.PermissionsToUse)) { player.SendInfoMessage($"You are not allowed to use {skillName}."); return; } //do we have enough "funds" to use this skill? if (!session.CanAffordCastingSkill(skillName)) { player.SendInfoMessage($"You cannot afford to use {skillName}."); return; } if (!session.IsSkillReady(definition.Name)) { player.SendInfoMessage($"{skillName} is not ready yet."); return; } session.PlayerSkillInfos.TryGetValue(skillName, out var playerSkillInfo); var skillAdded = CustomSkillRunner.AddActiveSkill(player, definition, playerSkillInfo.CurrentLevel); if (!skillAdded) { player.SendInfoMessage($"You cannot use {skillName} right now."); return; } }
private void OnLoad() { var cfg = Config.Instance = JsonConfig.LoadOrCreate <Config>(this, ConfigPath); var dbConfig = cfg.DatabaseConfig; SessionRepository = SessionDatabaseFactory.LoadOrCreateDatabase(dbConfig.DatabaseType, dbConfig.ConnectionString); CustomSkillDefinitionLoader = CustomSkillDefinitionLoader.Load(Path.Combine(DataDirectory, cfg.DefinitionFilepath), cfg.AutoCreateDefinitionFile); CustomSkillRunner = new CustomSkillRunner(); //connected players need sessions regenerated, in case this was a reload foreach (var player in TShock.Players) { if (player?.Active == true) { var session = Session.GetOrCreateSession(player); //... may not need to actually do anything here } } }
private void OnGameUpdate(EventArgs args) { CustomSkillRunner.Update(); }