Esempio n. 1
0
        private static void OnHitCastSpell()
        {
            NWPlayer oPC = Object.OBJECT_SELF;

            if (!oPC.IsValid || !oPC.IsPlayer)
            {
                return;
            }
            NWItem     oSpellOrigin = (_.GetSpellCastItem());
            NWCreature oTarget      = (_.GetSpellTargetObject());

            SkillType skillType = ItemService.GetSkillTypeForItem(oSpellOrigin);

            if (skillType == SkillType.Unknown ||
                skillType == SkillType.LightArmor ||
                skillType == SkillType.HeavyArmor ||
                skillType == SkillType.ForceArmor ||
                skillType == SkillType.Shields)
            {
                return;
            }
            if (oTarget.IsPlayer || oTarget.IsDM)
            {
                return;
            }
            if (oTarget.ObjectType != OBJECT_TYPE_CREATURE)
            {
                return;
            }

            int skillID = (int)skillType;
            CreatureSkillRegistration reg = GetCreatureSkillRegistration(oTarget.GlobalID);
            int rank = GetPCSkillRank(oPC, skillID);

            reg.AddSkillRegistrationPoint(oPC, skillID, oSpellOrigin.RecommendedLevel, rank);

            // Add a registration point if a shield is equipped. This is to prevent players from swapping out a weapon for a shield
            // just before they kill an enemy.
            NWItem oShield = oPC.LeftHand;

            if (oShield.BaseItemType == BASE_ITEM_SMALLSHIELD ||
                oShield.BaseItemType == BASE_ITEM_LARGESHIELD ||
                oShield.BaseItemType == BASE_ITEM_TOWERSHIELD)
            {
                rank = GetPCSkillRank(oPC, SkillType.Shields);
                reg.AddSkillRegistrationPoint(oPC, (int)SkillType.Shields, oShield.RecommendedLevel, rank);
            }
        }
Esempio n. 2
0
        public void RegisterPCToNPCForSkill(NWPlayer pc, NWCreature npc, int skillID)
        {
            if (!pc.IsPlayer || !pc.IsValid)
            {
                return;
            }
            if (npc.IsPlayer || npc.IsDM || !npc.IsValid)
            {
                return;
            }
            if (skillID <= 0)
            {
                return;
            }

            PCSkill pcSkill = GetPCSkill(pc, skillID);

            if (pcSkill == null)
            {
                return;
            }

            CreatureSkillRegistration reg = GetCreatureSkillRegistration(npc.GlobalID);

            reg.AddSkillRegistrationPoint(pc, skillID, pcSkill.Rank);
        }
Esempio n. 3
0
        public void OnHitCastSpell(NWPlayer oPC)
        {
            if (!oPC.IsPlayer)
            {
                return;
            }
            NWItem     oSpellOrigin = NWItem.Wrap(_.GetSpellCastItem());
            NWCreature oTarget      = NWCreature.Wrap(_.GetSpellTargetObject());

            int skillID = GetWeaponSkillID(oSpellOrigin);

            if (skillID <= -1)
            {
                return;
            }
            if (oTarget.IsPlayer || oTarget.IsDM)
            {
                return;
            }
            if (oTarget.ObjectType != OBJECT_TYPE_CREATURE)
            {
                return;
            }

            CreatureSkillRegistration reg = GetCreatureSkillRegistration(oTarget.GlobalID);

            reg.AddSkillRegistrationPoint(oPC, skillID, oSpellOrigin.RecommendedLevel);

            // Add a registration point if a shield is equipped. This is to prevent players from swapping out a weapon for a shield
            // just before they kill an enemy.
            NWItem oShield = oPC.LeftHand;

            if (oShield.BaseItemType == BASE_ITEM_SMALLSHIELD ||
                oShield.BaseItemType == BASE_ITEM_LARGESHIELD ||
                oShield.BaseItemType == BASE_ITEM_TOWERSHIELD)
            {
                reg.AddSkillRegistrationPoint(oPC, (int)SkillType.Shields, oShield.RecommendedLevel);
            }

            if (_random.Random(100) + 1 <= 3)
            {
                _food.DecreaseHungerLevel(oPC, 1);
            }
        }
Esempio n. 4
0
        private void RegisterPCToNPCForSkill(NWPlayer pc, NWObject npc, int skillID)
        {
            if (!pc.IsPlayer || !pc.IsValid)
            {
                return;
            }
            if (npc.IsPlayer || npc.IsDM || !npc.IsValid)
            {
                return;
            }
            if (skillID <= 0)
            {
                return;
            }

            int rank = GetPCSkillRank(pc, skillID);

            CreatureSkillRegistration reg = GetCreatureSkillRegistration(npc.GlobalID);

            reg.AddSkillRegistrationPoint(pc, skillID, rank, rank);
        }