public override void OnResolve()
    {
        Unit target = ParentAbility.GetAbilityComponent <TargetingAbility>().Target;

        target.Health += Data.HealAmount;
        if (target.Health > target.MaxHealth)
        {
            target.Health = target.MaxHealth;
        }
    }
Ejemplo n.º 2
0
    // Damages target selected by TargetingAbility component by value provided by DamageData
    // Interacting directly with the TargetingAbility component is not something that I really want, so this will probably be changed later
    public override void OnResolve()
    {
        Unit target = ParentAbility.GetAbilityComponent <TargetingAbility>().Target;

        target.Health -= Data.Damage;
        if (target.Health < 0)
        {
            target.Health = 0;
        }
    }
 // Tries to cast its parent spell if it's off cooldown
 // Doesn't look at all like what it will
 // GameEvents have an associated Unit and an associated Ability
 // This component will need to interact with something that can differentiate units and something that can differentiate abilities
 public override void HandleEvent(GameEvent gameEvent)
 {
     if (gameEvent.EventType == EventType.UnitTurnMainPhase &&
         ParentAbility.Owner.IsSameAs(gameEvent.Unit))
     {
         if (ParentAbility.HasAbilityComponent <CooldownAbility>() &&
             ParentAbility.GetAbilityComponent <CooldownAbility>().CooldownRemaining == 0)
         {
             ParentAbility.Owner.Game.RequestCast(ParentAbility);
             ParentAbility.GetAbilityComponent <CooldownAbility>().SetCooldown();
         }
     }
 }
Ejemplo n.º 4
0
    // todo: handle targeting that's not purely random
    private Unit GetTarget()
    {
        List <Unit> validTargets = GetValidTargets();

        if (validTargets.Count == 0)
        {
            throw new UnityException("Ability has no valid targets");
        }

        if (Data.TargetingMethod == TargetingMethod.Random)
        {
            return(validTargets[Random.Range(0, validTargets.Count)]);
        }

        if (Data.TargetingMethod == TargetingMethod.Derived)
        {
            return(ParentAbility.GetAbilityComponent <UnitStatComparingAbility>().GetUnit(validTargets));
        }

        return(null);
    }