/// <summary> /// Condition for troop are met /// </summary> /// <param Name="page_index">troop event's page index</param> /// <param Name="condition">analysed condition</param> /// <returns>true if conditions are met</returns> public bool IsTroopConditionsMet(int page_index, Troop.Page.Condition condition) { // Return False if no conditions appointed if (!(condition.TurnValid || condition.NpcValid || condition.ActorValid || condition.SwitchValid)) { return(false); } // Return False if page already completed if ((bool)InGame.Temp.BattleEventFlags[page_index]) { return(false); } // Confirm turn conditions if (condition.TurnValid) { int n = InGame.Temp.BattleTurn; int a = condition.TurnA; int b = condition.TurnB; if ((b == 0 && n != a) || (b > 0 && (n < 1 || n < a || n % b != a % b))) { return(false); } } // Confirm enemy conditions if (condition.NpcValid) { GameNpc enemy = InGame.Troops.Npcs[condition.NpcIndex]; if (enemy == null || enemy.Hp * 100.0 / enemy.MaxHp > condition.NpcHp) { return(false); } } // Confirm actor conditions if (condition.ActorValid) { GameActor actor = InGame.Actors[condition.ActorId - 1]; if (actor == null || actor.Hp * 100.0 / actor.MaxHp > condition.ActorHp) { return(false); } } // Confirm switch conditions if (condition.SwitchValid) { if (InGame.Switches.Arr[condition.SwitchId]) { return(true); } else { return(false); } } // Return True return(true); }
/// <summary>Smooth Selection of a Target npc</summary> /// <param Name="npc_index">The relative position in the monster group of the npc to check. </param> /// <returns>GameNpc : seleted npc</returns> public GameNpc SmoothTargetNpc(int npcIndex) { GameNpc _npc = null; // If an npc exists if (Npcs[npcIndex] != null && Npcs[npcIndex].IsExist) { _npc = Npcs[npcIndex]; } else { // Loop for (int i = 0; i < Npcs.Count; i++) { // If an npc exists if (Npcs[i].IsExist) { _npc = Npcs[i]; } } } return(_npc); }