public override int Execute(LogicLevel level)
        {
            LogicArrayList <LogicGameObject> gameObjects = level.GetGameObjectManager().GetGameObjects(LogicGameObjectType.CHARACTER);

            for (int i = 0; i < gameObjects.Size(); i++)
            {
                LogicCharacter character = (LogicCharacter)gameObjects[i];

                if (character.GetHitpointComponent().GetTeam() == 0 && character.IsHero() && character.GetData() == this.m_data && character.GetHitpointComponent().GetHitpoints() > 0)
                {
                    if (this.m_data.HasAbility(character.GetUpgradeLevel()))
                    {
                        if (!this.m_data.HasOnceAbility() && character.GetAbilityCooldown() == 0 || this.m_data.HasOnceAbility() && !character.IsAbilityUsed())
                        {
                            character.StartAbility();
                        }
                    }
                }
            }

            return(0);
        }