public override void Affect(BaseCharacterMaster unitAffected, bool decrementTurnsLeft)
    {
        base.Affect(unitAffected, decrementTurnsLeft);

        unitAffected.Unit.UnitState.ApplyDamage(Power);
        unitAffected.ReciveDamage(Power);
    }
 // Happens on turn finished
 public virtual void Affect(BaseCharacterMaster unitAffected, bool decrementTurnsLeft)
 {
     if (decrementTurnsLeft)
     {
         TurnsLeftAffected--;
     }
 }
    public void BeginPlayerActionPhase(BaseCharacterMaster activeCharacter, Action onPhaseCompleted)
    {
        onActionPhaseCompleted = onPhaseCompleted;
        this.activeCharacter   = activeCharacter;

        if (activeCharacter.Unit.UnitState.IsTaunted(out var tauntEffect))
        {
            var tauntTargetUnit = UnitManager.Instance.GetActiveCharacter(tauntEffect.tauntTarget.GetUnitIdentifier());
            if (tauntTargetUnit != null)
            {
                TauntInfo.SetActive(true);
                DOVirtual.DelayedCall(2.5f, () => TauntInfo.SetActive(false));

                activeAbility = activeCharacter.Unit.UnitData.UnitAbilities.Find((ua) => ua.AbilityName == "Attack") ?? activeCharacter.Unit.UnitData.UnitAbilities.Random();
                OnTargetsChosen(new TargetingResultData(Vector3.zero, new List <UnitIdentifier> {
                    tauntEffect.OptionalTarget.GetUnitIdentifier()
                }));
                return;
            }
        }

        activeCharacter.SetHighlight(true);

        SetActionMode(ActionMode.HUD);
    }
 public void EndPlayerActionPhase()
 {
     activeCharacter.SetHighlight(false);
     this.activeCharacter = null;
     SetActionMode(ActionMode.Disabled);
     onActionPhaseCompleted?.Invoke();
 }
    public static ActionEffect GetActionEffect(ActionEffectData actionEffectData, BaseCharacterMaster optionalTarget = null)
    {
        switch (actionEffectData.AbilityEffectType)
        {
        case ActionEffectType.Damage:
            return(new DamageEffect(actionEffectData));

        case ActionEffectType.Heal:
            return(new HealEffect(actionEffectData));

        case ActionEffectType.Taunt:
            return(new TauntEffect(actionEffectData, optionalTarget));

        case ActionEffectType.Shield:
            return(new ShieldEffect(actionEffectData));

        default:
            Debug.Log("[ActionEffectFactory] ActionEffectType not defined in the ActionEffectFactory");
            return(new DamageEffect(0, 0));
        }
    }
 public static UnitIdentifier GetUnitIdentifier(this BaseCharacterMaster baseCharacterMaster)
 {
     return(baseCharacterMaster.Unit.UnitIdentifier);
 }
 public virtual void OnRemoved(BaseCharacterMaster unitAffected)
 {
 }
 public override void Affect(BaseCharacterMaster unitAffected, bool decrementTurnsLeft)
 {
     base.Affect(unitAffected, decrementTurnsLeft);
     unitAffected.RefreshLabel();
 }
 public TauntEffect(int turnLenght, int power, BaseCharacterMaster tauntTarget) : base(turnLenght, power)
 {
     this.tauntTarget = tauntTarget;
 }
 public TauntEffect(ActionEffectData actionEffectData, BaseCharacterMaster tauntTarget) : base(actionEffectData)
 {
     this.tauntTarget = tauntTarget;
 }
Esempio n. 11
0
 public override void Affect(BaseCharacterMaster unitAffected, bool decrementTurnsLeft)
 {
     base.Affect(unitAffected, decrementTurnsLeft);
     unitAffected.ReciveHeal(Power);
 }
Esempio n. 12
0
    public override void OnRemoved(BaseCharacterMaster unitAffected)
    {
        base.OnRemoved(unitAffected);

        unitAffected.ToggleShieldVisuals(false);
    }
Esempio n. 13
0
    public override void Affect(BaseCharacterMaster unitAffected, bool decrementTurnsLeft)
    {
        base.Affect(unitAffected, decrementTurnsLeft);

        unitAffected.ToggleShieldVisuals(true);
    }