public static Skill GetWeakenOffense()
 {
     if (weakenOffense == null)
     {
         weakenOffense             = new Skill();
         weakenOffense.name        = "Weaken\nOffense";
         weakenOffense.icon        = Resources.Load <Sprite> ("SpellIcons/weakenOffense");
         weakenOffense.description = "Weakens your enemy's attacking power";
         weakenOffense.basePower   = 1;
         weakenOffense.aoe         = 0;
         weakenOffense.range       = 5;
         weakenOffense.manaCost    = user => 1;
         weakenOffense.cooldown    = 0;
         weakenOffense.damageType  = Skill.DamageType.DAMAGE;
         weakenOffense.targetType  = Skill.TargetType.ENEMY;
         weakenOffense.OnTarget    = (user, target, args) => {
             target.AddEffect(EffectFactory.GetWeakenOffenseEffect(), 3);
         };
         weakenOffense.GenerateTasks = (user, tile, args) => {
             foreach (Unit target in weakenOffense.gatherTargets(user, tile))
             {
                 GameManager.instance.tasks.Add(new Task_Face_Eachother(user, target));
                 GameManager.instance.tasks.Add(new Task_Trigger_Animation(user, "Punch"));
                 GameManager.instance.tasks.Add(new Task_Wait(0.3f));
                 GameManager.instance.tasks.Add(new Task_Fire_Projectile(user.transform.position + Vector3.up, target.tile.transform.position + Vector3.up, (GameObject)Resources.Load("SpellVisuals/MEDIC/medic projectile prefab"), 3));
                 GameManager.instance.tasks.Add(new Task_PlaySound(Resources.Load <AudioClip>("SE/Ice2")));
                 GameManager.instance.tasks.Add(new Task_ShowParticleAnimation((GameObject)Resources.Load("SpellVisuals/MEDIC/WEAKEN OFFENSE/weaken offense prefab"), target.transform.position + Vector3.up, 1));
                 GameManager.instance.tasks.Add(new Task_Trigger_Animation(target, "Hit"));
             }
             weakenOffense.EnqueueExecuteTask(user, tile, args);
         };
     }
     return(weakenOffense);
 }