/// <summary> /// Called to draw the full tool tip of the item /// </summary> /// <param name="itemStack"></param> public static void DrawToolTip(ItemStack itemStack) { if (itemStack == null) { return; } string description = itemStack.GetDescription(); TooltipBuilder builder = new TooltipBuilder(); builder.AddText(itemStack.GetDisplayTitle(), "itemtitle"); builder.AddText(itemStack.GetDisplaySubtitle(), "itemSubtitle"); builder.AddText(description, "description"); List <KeyValuePair <string, int> > abilityPriorityList = new List <KeyValuePair <string, int> >(); foreach (var kvp in itemStack.GetAbilityIdPowers()) { string id = kvp.Key; int power = kvp.Value; string text = AbilityRegistry.GetAbilityDisplayText(id); string color = AbilityRegistry.GetAbilityDisplayColor(id); int priority = AbilityRegistry.GetAbilityDisplayPriority(id); string displayText = "<color=" + color + ">" + text + " " + power + "</color>"; abilityPriorityList.Add(new KeyValuePair <string, int>(displayText, priority)); } foreach (var kvp in abilityPriorityList.OrderBy(kvp => - kvp.Value)) { builder.AddText(kvp.Key, "ability"); } builder.buildToolTip(); }
public RoleSetup( RoleRegistry roles, AbilityRegistry abilities, AbilitySetupRegistry abilitySetups, IEnumerable <IRoleSelector> selectors) { Roles = roles; Abilities = abilities; AbilitySetups = abilitySetups; Perks = new PerkRegistry(roles); Selectors = selectors.ToList(); }
/// <summary> /// Retrieves feat user stats. Data is retrieved differently based on whether user is a player or NPC. /// </summary> /// <returns>The stats of the user</returns> private static UserStats GetUserStats(NWGameObject user, NWGameObject target, Feat feat) { var ability = AbilityRegistry.Get(feat); var targetLocation = GetIsObjectValid(target) ? GetLocation(target) : NWNXEvents.OnFeatUsed_GetTargetLocation(); var stats = new UserStats { User = user, AbilityDefinition = ability, Target = target, TargetLocation = targetLocation, CastingPosition = GetPosition(user), MPCost = ability.MP(user), Feat = feat }; // Players - retrieve from DB if (GetIsPlayer(user)) { var playerID = GetGlobalID(user); var player = PlayerRepo.Get(playerID); var cooldown = CooldownRepo.Get(playerID, feat); stats.MP = player.MP; stats.CooldownUnlock = cooldown.DateUnlocked; } // NPCs - retrieve from local variables else if (GetIsNPC(user)) { stats.MP = GetLocalInt(user, "MP_CURRENT"); var cooldown = GetLocalString(user, $"ABILITY_COOLDOWN_{feat}"); if (string.IsNullOrWhiteSpace(cooldown)) { stats.CooldownUnlock = DateTime.UtcNow; } else { stats.CooldownUnlock = DateTime.ParseExact(cooldown, "yyyy-MM-dd hh:mm:ss", CultureInfo.InvariantCulture); } } stats.Now = DateTime.UtcNow; return(stats); }
public static void Main() { // Ignore any unregistered feats. var feat = NWNXEvents.OnFeatUsed_GetFeat(); if (!AbilityRegistry.IsRegistered(feat)) { return; } var target = NWNXEvents.OnFeatUsed_GetTarget(); // Retrieve stats and validate the use of this ability. var stats = GetUserStats(NWGameObject.OBJECT_SELF, target, feat); if (!ValidateFeatUse(stats)) { return; } // Begin the casting process StartCasting(stats); }
public static void Main() { AbilityRegistry.Register(); JobRegistry.Register(); RatingRegistry.Register(); }