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); }