Beispiel #1
0
        public static bool CanDoWanderHealSelfPotionHealSelf(BaseCreature creature, int percent)
        {
            switch (percent)
            {
            case 100:
                if (creature.DictWanderAction[WanderAction.PotionHealSelf100] > 0)
                {
                    if (AIHeal.DoesTargetNeedHealing(creature, 100))
                    {
                        return(true);
                    }
                }
                break;

            case 50:
                if (creature.DictWanderAction[WanderAction.PotionHealSelf50] > 0)
                {
                    if (AIHeal.DoesTargetNeedHealing(creature, 50))
                    {
                        return(true);
                    }
                }
                break;
            }

            return(false);
        }
Beispiel #2
0
        public static bool CanDoWanderHealSelfSpellHealSelf(BaseCreature creature, int percent)
        {
            if (DateTime.UtcNow < creature.NextSpellTime)
            {
                return(false);
            }

            switch (percent)
            {
            case 100:
                if (creature.DictWanderAction[WanderAction.SpellHealSelf100] > 0)
                {
                    if (AIHeal.DoesTargetNeedHealing(creature, 100) && creature.Mana >= 11)
                    {
                        return(true);
                    }
                }
                break;

            case 50:
                if (creature.DictWanderAction[WanderAction.SpellHealSelf50] > 0)
                {
                    if (AIHeal.DoesTargetNeedHealing(creature, 50) && creature.Mana >= 11)
                    {
                        return(true);
                    }
                }
                break;
            }

            return(false);
        }
Beispiel #3
0
        public static bool CanDoCombatHealOtherBandageHealOther(BaseCreature creature, int percent)
        {
            if (creature.NextCombatHealActionAllowed > DateTime.UtcNow)
            {
                return(false);
            }

            if (creature.DoingBandage)
            {
                return(false);
            }

            switch (percent)
            {
            case 100: if (creature.DictCombatHealOther[CombatHealOther.BandageHealOther100] <= 0)
                {
                    return(false);
                }
                break;

            case 75: if (creature.DictCombatHealOther[CombatHealOther.BandageHealOther75] <= 0)
                {
                    return(false);
                }
                break;

            case 50: if (creature.DictCombatHealOther[CombatHealOther.BandageHealOther50] <= 0)
                {
                    return(false);
                }
                break;

            case 25: if (creature.DictCombatHealOther[CombatHealOther.BandageHealOther25] <= 0)
                {
                    return(false);
                }
                break;
            }

            IPooledEnumerable eable = creature.Map.GetMobilesInRange(creature.Location, creature.RangePerception);

            foreach (Mobile target in eable)
            {
                if (!AIHeal.IsTargetValidHealTarget(creature, target, true))
                {
                    continue;
                }

                if (AIHeal.DoesTargetNeedHealing(target, percent))
                {
                    eable.Free();
                    return(true);
                }
            }

            eable.Free();

            return(false);
        }
Beispiel #4
0
        public static bool CanDoCombatHealSelfBandageHealSelf(BaseCreature creature, int percent)
        {
            if (creature.NextCombatHealActionAllowed > DateTime.UtcNow)
            {
                return(false);
            }

            if (creature.DoingBandage)
            {
                return(false);
            }

            switch (percent)
            {
            case 100:
                if (creature.DictCombatHealSelf[CombatHealSelf.BandageHealSelf100] > 0)
                {
                    if (AIHeal.DoesTargetNeedHealing(creature, 100))
                    {
                        return(true);
                    }
                }
                break;

            case 75:
                if (creature.DictCombatHealSelf[CombatHealSelf.BandageHealSelf75] > 0)
                {
                    if (AIHeal.DoesTargetNeedHealing(creature, 75))
                    {
                        return(true);
                    }
                }
                break;

            case 50:
                if (creature.DictCombatHealSelf[CombatHealSelf.BandageHealSelf50] > 0)
                {
                    if (AIHeal.DoesTargetNeedHealing(creature, 50))
                    {
                        return(true);
                    }
                }
                break;

            case 25:
                if (creature.DictCombatHealSelf[CombatHealSelf.BandageHealSelf25] > 0)
                {
                    if (AIHeal.DoesTargetNeedHealing(creature, 25))
                    {
                        return(true);
                    }
                }
                break;
            }

            return(false);
        }
Beispiel #5
0
        public static bool CanDoWanderHealOtherSpellHealOther(BaseCreature creature, int percent)
        {
            if (creature.Mana < 11)
            {
                return(false);
            }

            if (DateTime.UtcNow < creature.NextSpellTime)
            {
                return(false);
            }

            switch (percent)
            {
            case 100:
                if (creature.DictWanderAction[WanderAction.SpellHealOther100] <= 0)
                {
                    return(false);
                }
                break;

            case 50:
                if (creature.DictWanderAction[WanderAction.SpellHealOther50] <= 0)
                {
                    return(false);
                }
                break;
            }

            IPooledEnumerable eable = creature.Map.GetMobilesInRange(creature.Location, creature.RangePerception);

            foreach (Mobile target in eable)
            {
                if (!AIHeal.IsTargetValidHealTarget(creature, target, true))
                {
                    continue;
                }

                if (AIHeal.DoesTargetNeedHealing(target, percent))
                {
                    eable.Free();
                    return(true);
                }
            }

            eable.Free();

            return(false);
        }