public void ApplyAllBuffRules(RaidRuleInfo raidRuleInfo) { for (int i = 0; i < BuffInfo.Count; i++) { ApplyBuffRule(BuffInfo[i], raidRuleInfo); } }
public void ApplySingleBuffRule(RaidRuleInfo raidRuleInfo, BuffRule rule) { for (int i = 0; i < BuffInfo.Count; i++) { if (BuffInfo[i].Buff.RuleType == rule) { ApplyBuffRule(BuffInfo[i], raidRuleInfo); } } }
protected void ApplyBuffRule(BuffInfo buffEntry, RaidRuleInfo raidRuleInfo) { switch (buffEntry.Buff.RuleType) { case BuffRule.Afflicted: // done #region Afflicted if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Unit.Character.IsAfflicted) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Unit.Character.IsAfflicted) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.Always: // done #region Always if (buffEntry.Buff.IsFalseRule) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } break; #endregion case BuffRule.DeathsDoor: // done #region DeathsDoor if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Unit.Character.AtDeathsDoor) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Unit.Character.AtDeathsDoor) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.EnemyType: // done #region EnemyType if (raidRuleInfo.Target == null || raidRuleInfo.Target.Character.IsMonster == false) { RevertBuff(buffEntry); break; } if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Target.Character.MonsterTypes. Contains(CharacterHelper.StringToMonsterType(buffEntry.Buff.StringParam))) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Target.Character.MonsterTypes. Contains(CharacterHelper.StringToMonsterType(buffEntry.Buff.StringParam))) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.FirstRound: // done #region FirstRound if (raidRuleInfo.BattleGround.BattleStatus != BattleStatus.Fighting) { RevertBuff(buffEntry); break; } if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.BattleGround.Round.RoundNumber == 0) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.BattleGround.Round.RoundNumber == 0) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.HpAbove: // done #region HpAbove if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Unit.Character.HealthRatio > buffEntry.Buff.SingleParam) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Unit.Character.HealthRatio > buffEntry.Buff.SingleParam) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.HpBelow: // done #region HpAbove if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Unit.Character.HealthRatio < buffEntry.Buff.SingleParam) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Unit.Character.HealthRatio < buffEntry.Buff.SingleParam) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.InActivity: #region InActivity RevertBuff(buffEntry); break; #endregion case BuffRule.InCamp: #region InCamp if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.IsDoingCamping) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.IsDoingCamping) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.InCorridor: // done #region InCorridor if (buffEntry.Buff.IsFalseRule) { if (RaidSceneManager.SceneState == DungeonSceneState.Hall) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (RaidSceneManager.SceneState == DungeonSceneState.Hall) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.InDungeon: // done #region InDungeon if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Dungeon == buffEntry.Buff.StringParam) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Dungeon == buffEntry.Buff.StringParam) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.InMode: // done #region InMode if (raidRuleInfo.Unit.Character.InMode == false) { RevertBuff(buffEntry); break; } if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Unit.Character.Mode.Id == buffEntry.Buff.StringParam) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Unit.Character.Mode.Id == buffEntry.Buff.StringParam) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.InRank: // done #region InRank if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Unit.Rank == buffEntry.Buff.SingleParam + 1) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Unit.Rank == buffEntry.Buff.SingleParam + 1) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.LightAbove: // done #region LightAbove if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.TorchMeter.TorchAmount > buffEntry.Buff.SingleParam) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.TorchMeter.TorchAmount > buffEntry.Buff.SingleParam) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.LightBelow: // done #region LightBelow if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.TorchMeter.TorchAmount < buffEntry.Buff.SingleParam) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.TorchMeter.TorchAmount < buffEntry.Buff.SingleParam) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.Melee: // done #region Melee if (raidRuleInfo.Skill == null) { RevertBuff(buffEntry); break; } if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Skill.Type == "melee") { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Skill.Type == "melee") { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.Ranged: // done #region Ranged if (raidRuleInfo.Skill == null) { RevertBuff(buffEntry); break; } if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Skill.Type == "ranged") { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Skill.Type == "ranged") { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.Riposting: // done #region Riposting if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.IsRiposting) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.IsRiposting) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.Size: // done #region Size if (raidRuleInfo.Target == null) { RevertBuff(buffEntry); break; } if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Target.Size == buffEntry.Buff.SingleParam) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Target.Size == buffEntry.Buff.SingleParam) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.Skill: // done #region Skill if (raidRuleInfo.Skill == null) { RevertBuff(buffEntry); break; } if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Skill.Id == buffEntry.Buff.StringParam) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Skill.Id == buffEntry.Buff.StringParam) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.Status: // done #region Status if (raidRuleInfo.Target == null) { RevertBuff(buffEntry); break; } var targetStatus = CharacterHelper.StringToStatusType(buffEntry.Buff.StringParam); if (targetStatus == StatusType.None) { RevertBuff(buffEntry); break; } if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Target.Character[targetStatus].IsApplied) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Target.Character[targetStatus].IsApplied) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.StressAbove: // done #region StressAbove if (raidRuleInfo.Unit.Character.IsMonster) { RevertBuff(buffEntry); break; } if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Unit.Character.Stress.CurrentValue > buffEntry.Buff.SingleParam) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Unit.Character.Stress.CurrentValue > buffEntry.Buff.SingleParam) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.StressBelow: // done #region StressBelow if (raidRuleInfo.Unit.Character.IsMonster) { RevertBuff(buffEntry); break; } if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Unit.Character.Stress.CurrentValue < buffEntry.Buff.SingleParam) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Unit.Character.Stress.CurrentValue < buffEntry.Buff.SingleParam) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.Virtued: // done #region Virtued if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.Unit.Character.IsVirtued) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.Unit.Character.IsVirtued) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion case BuffRule.WalkBack: // done #region WalkBack if (buffEntry.Buff.IsFalseRule) { if (raidRuleInfo.IsWalkingBack) { RevertBuff(buffEntry); } else { ApplyBuff(buffEntry); } } else { if (raidRuleInfo.IsWalkingBack) { ApplyBuff(buffEntry); } else { RevertBuff(buffEntry); } } break; #endregion } }