コード例 #1
0
    public bool checkSkillAI(GameBattleUnit unit1, GameBattleUnit unit, GameSkill sk, GameUnitCampType camp)
    {
        switch (sk.TargetType)
        {
        case GameTargetType.User:
        {
            if (unit == null ||
                unit.UnitCampType != camp)
            {
                return(false);
            }

            switch (sk.ResultType)
            {
            case GameSkillResutlType.Damage:
                break;

            case GameSkillResutlType.Cure:
            {
                if (unit.HPMax - unit.HP > sk.BasePower ||
                    (unit.HP / (float)unit.HPMax) < 0.4f)
                {
                    return(true);
                }

                return(false);
            }

            case GameSkillResutlType.Purge:
            {
                if (unit.checkEffect(GameSkillResutlEffect.Poison) ||
                    unit.checkEffect(GameSkillResutlEffect.Palsy) ||
                    unit.checkEffect(GameSkillResutlEffect.Silence) ||
                    unit.checkEffect(GameSkillResutlEffect.Fetter))
                {
                    return(true);
                }

                return(false);
            }

            case GameSkillResutlType.Blessing:
            {
                if (unit.checkEffect(sk.ResultEffect))
                {
                    return(false);
                }

                checkUnitAI = true;

                return(true);
            }

            case GameSkillResutlType.Curse:
                break;

            case GameSkillResutlType.None:
            case GameSkillResutlType.Special:
            {
                switch (sk.OtherEffect)
                {
                case GameSkillOtherEffect.Invincible0:
                {
                    if (unit.checkEffect(GameSkillResutlEffect.PhyImmunity))
                    {
                        return(false);
                    }

                    checkUnitAI = true;

                    return(true);
                }

                case GameSkillOtherEffect.Invincible1:
                {
                    if (unit.checkEffect(GameSkillResutlEffect.MagImmunity))
                    {
                        return(false);
                    }

                    checkUnitAI = true;

                    return(true);
                }

                case GameSkillOtherEffect.HealAll:
                {
                    if (unit.HPMax - unit.HP > sk.BasePower ||
                        (unit.HP / (float)unit.HPMax) < 0.4f)
                    {
                        return(true);
                    }

                    return(false);
                }

                case GameSkillOtherEffect.MPAdd:
                {
                    if (unit.MPMax - unit.MP > sk.BasePower ||
                        (unit.MP / (float)unit.MPMax) < 0.4f)
                    {
                        return(true);
                    }

                    return(false);
                }

                case GameSkillOtherEffect.AbilityUp:
                {
                    if (unit.checkEffectOther(GameSkillOtherEffect.AbilityUp))
                    {
                        return(false);
                    }

                    checkUnitAI = true;

                    return(true);
                }
                }


                switch (sk.ResultEffect)
                {
                case GameSkillResutlEffect.Clear:
                    break;

                case GameSkillResutlEffect.PhyImmunity:
                case GameSkillResutlEffect.MagImmunity:
                case GameSkillResutlEffect.Miss:
                case GameSkillResutlEffect.SummonKiller:
                case GameSkillResutlEffect.Under:
                {
                    if (unit.checkEffect(sk.ResultEffect))
                    {
                        return(false);
                    }

                    checkUnitAI = true;

                    return(true);
                }
                }
            }
            break;
            }
        }
        break;

        case GameTargetType.Enemy:
        {
            if (unit == null ||
                unit.UnitCampType == camp)
            {
                return(false);
            }

            if (sk.Type == GameSkillType.Physical)
            {
                return(true);
            }

            switch (sk.ResultType)
            {
            case GameSkillResutlType.Damage:
            {
                return(true);
            }

            case GameSkillResutlType.Cure:
                break;

            case GameSkillResutlType.Purge:
                break;

            case GameSkillResutlType.Blessing:
                break;

            case GameSkillResutlType.Curse:
            {
                if (unit.checkEffect(sk.ResultEffect))
                {
                    return(false);
                }

                return(true);
            }

            case GameSkillResutlType.None:
            case GameSkillResutlType.Special:
            {
                switch (sk.OtherEffect)
                {
                case GameSkillOtherEffect.AttackX2:
                case GameSkillOtherEffect.AttackX3:
                case GameSkillOtherEffect.AttackX4:
                case GameSkillOtherEffect.AttackPalsy:
                case GameSkillOtherEffect.AttackPoison:
                case GameSkillOtherEffect.AttackHP:
                case GameSkillOtherEffect.AttackFetter:
                case GameSkillOtherEffect.MP:
                {
                    return(true);
                }

                case GameSkillOtherEffect.KillSelf:
                {
                    return(((float)unit1.HP / unit1.HPMax) <= 0.5f);
                }

                case GameSkillOtherEffect.AttackSilence:
                {
                    if (unit.checkEffect(GameSkillResutlEffect.Silence))
                    {
                        return(false);
                    }

                    return(true);
                }

                case GameSkillOtherEffect.AbilityDown:
                {
                    if (unit.checkEffect(GameSkillResutlEffect.StrUp) ||
                        unit.checkEffect(GameSkillResutlEffect.VitUp) ||
                        unit.checkEffect(GameSkillResutlEffect.IntUp) ||
                        unit.checkEffect(GameSkillResutlEffect.MoveUp) ||
                        unit.checkEffect(GameSkillResutlEffect.Violent))
                    {
                        return(true);
                    }

                    return(false);
                }

                case GameSkillOtherEffect.HealAll:
                case GameSkillOtherEffect.AbilityUp:
                case GameSkillOtherEffect.Invincible0:
                case GameSkillOtherEffect.Invincible1:
                    break;
                }

                switch (sk.ResultEffect)
                {
                case GameSkillResutlEffect.Clear:
                {
                    if (unit.checkEffect(GameSkillResutlEffect.StrUp) ||
                        unit.checkEffect(GameSkillResutlEffect.VitUp) ||
                        unit.checkEffect(GameSkillResutlEffect.IntUp) ||
                        unit.checkEffect(GameSkillResutlEffect.MoveUp) ||
                        unit.checkEffect(GameSkillResutlEffect.Violent))
                    {
                        return(true);
                    }

                    return(false);
                }

                case GameSkillResutlEffect.PhyImmunity:
                case GameSkillResutlEffect.MagImmunity:
                case GameSkillResutlEffect.Miss:
                case GameSkillResutlEffect.SummonKiller:
                case GameSkillResutlEffect.Under:
                {
                }
                break;
                }
            }
            break;
            }
        }
        break;

        case GameTargetType.Summon:
        {
            if (unit != null)
            {
                return(false);
            }

            return(true);
        }
        }

        return(false);
    }