コード例 #1
0
                // Applies an XP bonus to a support skill if the proper weapon and armor are chosen.
                static void ApplyJobBonusSkillXP(uint player, int highestRank, int baseXP, Dictionary <SkillType, PlayerSkill> playerSkills)
                {
                    // Get item in right hand or gloves, if empty.
                    var weapon = GetItemInSlot(InventorySlot.RightHand, player);

                    if (!GetIsObjectValid(weapon))
                    {
                        weapon = GetItemInSlot(InventorySlot.Arms, player);
                    }
                    var armor = GetItemInSlot(InventorySlot.Chest, player);

                    if (!GetIsObjectValid(armor))
                    {
                        return;
                    }

                    var armorType = ArmorType.Invalid;

                    for (var ip = GetFirstItemProperty(armor); GetIsItemPropertyValid(ip); ip = GetNextItemProperty(armor))
                    {
                        if (GetItemPropertyType(ip) != ItemPropertyType.ArmorType)
                        {
                            continue;
                        }

                        armorType = (ArmorType)GetItemPropertySubType(ip);
                        break;
                    }

                    var baseItem = GetBaseItemType(weapon);
                    var key      = new Tuple <BaseItem, ArmorType>(baseItem, armorType);

                    if (!_weaponAndArmorSkillMapping.ContainsKey(key))
                    {
                        return;
                    }

                    var skill = _weaponAndArmorSkillMapping[key];
                    var xp    = CalculateAdjustedXP(highestRank, baseXP, skill, 2, 1, playerSkills);

                    Skill.GiveSkillXP(player, skill, xp);
                }
コード例 #2
0
        public static void DebugGiveXP()
        {
            var player = GetLastUsedBy();

            Skill.GiveSkillXP(player, SkillType.Longsword, 5000);
        }