public static bool CanDoCombatHealSelf(BaseCreature creature) { if (creature.IsBarded()) { return(false); } if (creature.DictCombatAction[CombatAction.CombatHealSelf] > 0) { if (DateTime.UtcNow > creature.NextCombatHealActionAllowed) { Dictionary <CombatHealSelf, int> DictTemp = new Dictionary <CombatHealSelf, int>(); if (AICombatHealSelf.CanDoCombatHealSelfSpellHealSelf(creature, 100)) { DictTemp.Add(CombatHealSelf.SpellHealSelf100, creature.DictCombatHealSelf[CombatHealSelf.SpellHealSelf100]); } if (AICombatHealSelf.CanDoCombatHealSelfSpellHealSelf(creature, 75)) { DictTemp.Add(CombatHealSelf.SpellHealSelf75, creature.DictCombatHealSelf[CombatHealSelf.SpellHealSelf75]); } if (AICombatHealSelf.CanDoCombatHealSelfSpellHealSelf(creature, 50)) { DictTemp.Add(CombatHealSelf.SpellHealSelf50, creature.DictCombatHealSelf[CombatHealSelf.SpellHealSelf50]); } if (AICombatHealSelf.CanDoCombatHealSelfSpellHealSelf(creature, 25)) { DictTemp.Add(CombatHealSelf.SpellHealSelf25, creature.DictCombatHealSelf[CombatHealSelf.SpellHealSelf25]); } if (AICombatHealSelf.CanDoCombatHealSelfSpellCureSelf(creature)) { DictTemp.Add(CombatHealSelf.SpellCureSelf, creature.DictCombatHealSelf[CombatHealSelf.SpellCureSelf]); } if (AICombatHealSelf.CanDoCombatHealSelfPotionHealSelf(creature, 100)) { DictTemp.Add(CombatHealSelf.PotionHealSelf100, creature.DictCombatHealSelf[CombatHealSelf.PotionHealSelf100]); } if (AICombatHealSelf.CanDoCombatHealSelfPotionHealSelf(creature, 75)) { DictTemp.Add(CombatHealSelf.PotionHealSelf75, creature.DictCombatHealSelf[CombatHealSelf.PotionHealSelf75]); } if (AICombatHealSelf.CanDoCombatHealSelfPotionHealSelf(creature, 50)) { DictTemp.Add(CombatHealSelf.PotionHealSelf50, creature.DictCombatHealSelf[CombatHealSelf.PotionHealSelf50]); } if (AICombatHealSelf.CanDoCombatHealSelfPotionHealSelf(creature, 25)) { DictTemp.Add(CombatHealSelf.PotionHealSelf25, creature.DictCombatHealSelf[CombatHealSelf.PotionHealSelf25]); } if (AICombatHealSelf.CanDoCombatHealSelfPotionCureSelf(creature)) { DictTemp.Add(CombatHealSelf.PotionCureSelf, creature.DictCombatHealSelf[CombatHealSelf.PotionCureSelf]); } if (AICombatHealSelf.CanDoCombatHealSelfBandageHealSelf(creature, 100)) { DictTemp.Add(CombatHealSelf.BandageHealSelf100, creature.DictCombatHealSelf[CombatHealSelf.BandageHealSelf100]); } if (AICombatHealSelf.CanDoCombatHealSelfBandageHealSelf(creature, 75)) { DictTemp.Add(CombatHealSelf.BandageHealSelf75, creature.DictCombatHealSelf[CombatHealSelf.BandageHealSelf75]); } if (AICombatHealSelf.CanDoCombatHealSelfBandageHealSelf(creature, 50)) { DictTemp.Add(CombatHealSelf.BandageHealSelf50, creature.DictCombatHealSelf[CombatHealSelf.BandageHealSelf50]); } if (AICombatHealSelf.CanDoCombatHealSelfBandageHealSelf(creature, 25)) { DictTemp.Add(CombatHealSelf.BandageHealSelf25, creature.DictCombatHealSelf[CombatHealSelf.BandageHealSelf25]); } if (AICombatHealSelf.CanDoCombatHealSelfBandageCureSelf(creature)) { DictTemp.Add(CombatHealSelf.BandageCureSelf, creature.DictCombatHealSelf[CombatHealSelf.BandageCureSelf]); } int TotalValues = 0; //Calculate Total Values foreach (KeyValuePair <CombatHealSelf, int> pair in DictTemp) { TotalValues += pair.Value; } if (TotalValues > 0) { return(true); } } } return(false); }
public static bool DoCombatHealSelf(BaseCreature creature) { CombatHealSelf healAction = CombatHealSelf.None; int TotalValues = 0; Dictionary <CombatHealSelf, int> DictTemp = new Dictionary <CombatHealSelf, int>(); if (AICombatHealSelf.CanDoCombatHealSelfSpellHealSelf(creature, 100)) { DictTemp.Add(CombatHealSelf.SpellHealSelf100, creature.DictCombatHealSelf[CombatHealSelf.SpellHealSelf100]); } if (AICombatHealSelf.CanDoCombatHealSelfSpellHealSelf(creature, 75)) { DictTemp.Add(CombatHealSelf.SpellHealSelf75, creature.DictCombatHealSelf[CombatHealSelf.SpellHealSelf75]); } if (AICombatHealSelf.CanDoCombatHealSelfSpellHealSelf(creature, 50)) { DictTemp.Add(CombatHealSelf.SpellHealSelf50, creature.DictCombatHealSelf[CombatHealSelf.SpellHealSelf50]); } if (AICombatHealSelf.CanDoCombatHealSelfSpellHealSelf(creature, 25)) { DictTemp.Add(CombatHealSelf.SpellHealSelf25, creature.DictCombatHealSelf[CombatHealSelf.SpellHealSelf25]); } if (AICombatHealSelf.CanDoCombatHealSelfSpellCureSelf(creature)) { DictTemp.Add(CombatHealSelf.SpellCureSelf, creature.DictCombatHealSelf[CombatHealSelf.SpellCureSelf]); } if (AICombatHealSelf.CanDoCombatHealSelfPotionHealSelf(creature, 100)) { DictTemp.Add(CombatHealSelf.PotionHealSelf100, creature.DictCombatHealSelf[CombatHealSelf.PotionHealSelf100]); } if (AICombatHealSelf.CanDoCombatHealSelfPotionHealSelf(creature, 75)) { DictTemp.Add(CombatHealSelf.PotionHealSelf75, creature.DictCombatHealSelf[CombatHealSelf.PotionHealSelf75]); } if (AICombatHealSelf.CanDoCombatHealSelfPotionHealSelf(creature, 50)) { DictTemp.Add(CombatHealSelf.PotionHealSelf50, creature.DictCombatHealSelf[CombatHealSelf.PotionHealSelf50]); } if (AICombatHealSelf.CanDoCombatHealSelfPotionHealSelf(creature, 25)) { DictTemp.Add(CombatHealSelf.PotionHealSelf25, creature.DictCombatHealSelf[CombatHealSelf.PotionHealSelf25]); } if (AICombatHealSelf.CanDoCombatHealSelfPotionCureSelf(creature)) { DictTemp.Add(CombatHealSelf.PotionCureSelf, creature.DictCombatHealSelf[CombatHealSelf.PotionCureSelf]); } if (AICombatHealSelf.CanDoCombatHealSelfBandageHealSelf(creature, 100)) { DictTemp.Add(CombatHealSelf.BandageHealSelf100, creature.DictCombatHealSelf[CombatHealSelf.BandageHealSelf100]); } if (AICombatHealSelf.CanDoCombatHealSelfBandageHealSelf(creature, 75)) { DictTemp.Add(CombatHealSelf.BandageHealSelf75, creature.DictCombatHealSelf[CombatHealSelf.BandageHealSelf75]); } if (AICombatHealSelf.CanDoCombatHealSelfBandageHealSelf(creature, 50)) { DictTemp.Add(CombatHealSelf.BandageHealSelf50, creature.DictCombatHealSelf[CombatHealSelf.BandageHealSelf50]); } if (AICombatHealSelf.CanDoCombatHealSelfBandageHealSelf(creature, 25)) { DictTemp.Add(CombatHealSelf.BandageHealSelf25, creature.DictCombatHealSelf[CombatHealSelf.BandageHealSelf25]); } if (AICombatHealSelf.CanDoCombatHealSelfBandageCureSelf(creature)) { DictTemp.Add(CombatHealSelf.BandageCureSelf, creature.DictCombatHealSelf[CombatHealSelf.BandageCureSelf]); } //Calculate Total Values foreach (KeyValuePair <CombatHealSelf, int> pair in DictTemp) { TotalValues += pair.Value; } double ActionCheck = Utility.RandomDouble(); double CumulativeAmount = 0.0; double AdditionalAmount = 0.0; //Determine CombatAction foreach (KeyValuePair <CombatHealSelf, int> pair in DictTemp) { AdditionalAmount = (double)pair.Value / (double)TotalValues; if (ActionCheck >= CumulativeAmount && ActionCheck < (CumulativeAmount + AdditionalAmount)) { healAction = pair.Key; //Spell if (healAction == CombatHealSelf.SpellHealSelf100 || healAction == CombatHealSelf.SpellHealSelf75 || healAction == CombatHealSelf.SpellHealSelf50 || healAction == CombatHealSelf.SpellHealSelf25) { AIHeal.DoSpellHeal(creature, creature); } if (healAction == CombatHealSelf.SpellCureSelf) { AIHeal.DoSpellCure(creature, creature); } //Potion if (healAction == CombatHealSelf.PotionHealSelf100 || healAction == CombatHealSelf.PotionHealSelf75 || healAction == CombatHealSelf.PotionHealSelf50 || healAction == CombatHealSelf.PotionHealSelf25) { AIHeal.DoPotionHeal(creature); } if (healAction == CombatHealSelf.PotionCureSelf) { AIHeal.DoPotionCure(creature); } //Bandage if (healAction == CombatHealSelf.BandageHealSelf100 || healAction == CombatHealSelf.BandageHealSelf75 || healAction == CombatHealSelf.BandageHealSelf50 || healAction == CombatHealSelf.BandageHealSelf25) { AIHeal.DoBandageHeal(creature, creature); } if (healAction == CombatHealSelf.BandageCureSelf) { AIHeal.DoBandageHeal(creature, creature); } creature.NextCombatHealActionAllowed = DateTime.UtcNow + TimeSpan.FromSeconds(Utility.RandomMinMax(creature.CombatHealActionMinDelay, creature.CombatHealActionMaxDelay)); if (creature.AcquireNewTargetEveryCombatAction) { creature.m_NextAcquireTargetAllowed = DateTime.UtcNow; } return(true); } CumulativeAmount += AdditionalAmount; } return(false); }