Example #1
0
        public bool CanCast(PlayerCharacter player)
        {
            var canCast = true;


            if (RequireVitalBelowX)
            {
                canCast = player.GetVitalByID(RequiredVitalId).CurrentValue <=
                          player.GetVitalByID(RequiredVitalId).MaxValue *VitalConditionParameter;
            }
            if (canCast == false)
            {
                return(false);
            }

            if (ReqPrevSkillInCombo)
            {
                var stillExists =
                    Rm_RPGHandler.Instance.Repositories.Skills.AllSkills.FirstOrDefault(s => s.ID == PrevSkillForComboID);

                if (stillExists != null)
                {
                    canCast = stillExists.CurrentComboTime < MaxComboTime;
                }
            }
            if (canCast == false)
            {
                return(false);
            }

            if (RequireVitalAboveX)
            {
                canCast = player.GetVitalByID(RequiredVitalId).CurrentValue >=
                          player.GetVitalByID(RequiredVitalId).MaxValue *VitalConditionParameter;
            }
            if (canCast == false)
            {
                return(false);
            }

            if (!string.IsNullOrEmpty(RequiredEquippedWepTypeID))
            {
                var weapon = player.Equipment.GetSlot("Weapon").Item as Weapon;
                if (weapon != null)
                {
                    canCast = weapon.WeaponTypeID == RequiredEquippedWepTypeID;
                }
            }
            if (canCast == false)
            {
                return(false);
            }

            if (ResourceRequirement > 0 && UseResourceOnCast)
            {
                canCast = player.GetVitalByID(ResourceIDUsed).CurrentValue - ResourceRequirement >= 0;

                if (player.GetVitalByID(ResourceIDUsed).IsHealth)
                {
                    canCast = player.GetVitalByID(ResourceIDUsed).CurrentValue - ResourceRequirement >= 1;
                }
            }
            if (canCast == false)
            {
                return(false);
            }

            return(canCast);
        }