Exemple #1
0
        /// <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();
        }
Exemple #2
0
 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);
        }
Exemple #5
0
 public static void Main()
 {
     AbilityRegistry.Register();
     JobRegistry.Register();
     RatingRegistry.Register();
 }