private bool SwitchPowerTreads(RecoveryAbility ability) { var powerTreads = (PowerTreads)this.owner.Hero.Abilities.FirstOrDefault(x => x.Id == AbilityId.item_power_treads); if (powerTreads?.CanBeCasted() != true) { return(false); } var currentAtt = powerTreads.ActiveAttribute; var requiredAtt = ability.PowerTreadsAttribute; if (requiredAtt == Attribute.Invalid || currentAtt == requiredAtt) { return(false); } if (!this.powerTreadsChanged) { this.powerTreadsAttribute = currentAtt; this.powerTreadsChanged = true; } powerTreads.UseAbility(); return(true); }
private bool DropItems(RecoveryAbility ability) { var items = ability.Owner.Abilities.Where(x => x.IsItem && x.IsUsable && x.Handle != ability.Handle).ToList(); var toBackPack = this.heroIsMoving; if (ability.RestoresHealth && items.Any(x => x.Id.HasHealthStats() && this.DropItem(x, toBackPack))) { return(true); } if (ability.RestoresMana && items.Any(x => x.Id.HasManaStats() && this.DropItem(x, toBackPack))) { return(true); } return(false); }
private bool IsAllItemsDropped(RecoveryAbility ability) { var dropped = this.droppedItems.Values.ToArray(); var remainingItems = ability.Owner.Abilities .Where(x => x.IsItem && x.IsUsable && x.Handle != ability.Handle && !dropped.Contains(x)) .ToList(); if (ability.RestoresHealth && remainingItems.Any(x => x.Id.HasHealthStats())) { return(false); } if (ability.RestoresMana && remainingItems.Any(x => x.Id.HasManaStats())) { return(false); } return(true); }