Esempio n. 1
0
        public void RemoveIcon(StatChange mod)
        {
            switch (mod.affectedStat)
            {
            case AffectedStat.Strength: strIcon.gameObject.SetActive(false);
                break;

            case AffectedStat.Magic: magIcon.gameObject.SetActive(true);
                break;

            case AffectedStat.Accuracy: accIcon.gameObject.SetActive(true);
                break;

            case AffectedStat.Initiative: initIcon.gameObject.SetActive(true);
                break;

            case AffectedStat.CriticalChance: critIcon.gameObject.SetActive(true);
                break;

            case AffectedStat.Defense: defIcon.gameObject.SetActive(true);
                break;

            case AffectedStat.Resistance: resIcon.gameObject.SetActive(true);
                break;

            case AffectedStat.Agility: agiIcon.gameObject.SetActive(true);
                break;
            }
        }
Esempio n. 2
0
        public void ResolveStatChanges()
        {
            foreach (KeyValuePair <StatChange, bool> statChanges in afflictedStatChanges)
            {
                // Check status afflictions and do action depending on the affliction
                StatChange sc = statChanges.Key;
                switch (sc)
                {
                case StatChange.HpUp:
                case StatChange.MpUp:
                case StatChange.AtkUp:
                case StatChange.DefUp:
                case StatChange.SpdUp:
                case StatChange.HpDestruct:
                case StatChange.MpDown:
                case StatChange.AtkDown:
                case StatChange.DefDown:
                case StatChange.SpdDown:
                    if (statChangeTurnCounter[sc] > 0)
                    {
                        statChangeTurnCounter[sc] -= 1;
                        if (statChangeTurnCounter[sc] == 0)
                        {
                            TryRemoveStatChange(sc);
                        }
                    }
                    break;

                default:
                    Debug.Log("Affliction not valid");
                    break;
                }
            }
        }
Esempio n. 3
0
 private Sprite GetCorrectArrowSprite(StatChange mod)
 {
     if (Math.Abs(mod.StatModifier) >= 0.40f)
     {
         return(tripleArrow);
     }
     return(Math.Abs(mod.StatModifier) >= 0.20f ? doubleArrow : singleArrow);
 }
Esempio n. 4
0
 protected void AfflictStatChange(StatChange statChange)
 {
     if (!afflictedStatChanges.ContainsKey(statChange))
     {
         afflictedStatChanges.Add(statChange, true);
         return;
     }
     afflictedStatChanges[statChange] = true;
 }
Esempio n. 5
0
        public bool TryStatChange(StatChange statChange, int turnsToAfflict)
        {
            if (DoesResistStatChange(statChange) || AfflictedByStatChange(statChange))
            {
                return(false);
            }
            // afflict the stat change
            AfflictStatChange(statChange);
            statChangeTurnCounter [statChange] = turnsToAfflict;
            switch (statChange)
            {
            case StatChange.HpUp:
                ModifyHp(true);
                break;

            case StatChange.MpUp:
                ModifyMp(true);
                break;

            case StatChange.AtkUp:
                ModifyAtk(true);
                break;

            case StatChange.DefUp:
                ModifyDef(true);
                break;

            case StatChange.SpdUp:
                ModifySpd(true);
                break;

            case StatChange.HpDestruct:
                ModifyHp(false);
                break;

            case StatChange.MpDown:
                ModifyMp(false);
                break;

            case StatChange.AtkDown:
                ModifyAtk(false);
                break;

            case StatChange.DefDown:
                ModifyDef(false);
                break;

            case StatChange.SpdDown:
                ModifySpd(false);
                break;

            default:
                throw new ArgumentOutOfRangeException("statChange", statChange, null);
            }
            return(true);
        }
Esempio n. 6
0
 public bool TryRemoveStatChange(StatChange statChange)
 {
     if (!DoesResistStatChangeRemoval(statChange) && !AfflictedByStatChange(statChange))
     {
         // TODO: afflict the stat change
         RemoveStatChange(statChange);
         statChangeTurnCounter [statChange] = 0;
         return(true);
     }
     return(false);
 }
Esempio n. 7
0
        /// <summary>
        /// Reset stat changes. Invokes stat mod events to notify listeners of stat changes.
        /// </summary>
        /// <param name="statChange">Desired stat change</param>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        public void ResetStatChange(StatChange statChange)
        {
            if (afflictedStatChanges.ContainsKey(statChange))
            {
                afflictedStatChanges[statChange] = false;
            }
            else
            {
                afflictedStatChanges.Add(statChange, false);
            }
            switch (statChange)
            {
            case StatChange.AtkUp:
            case StatChange.AtkDown:
                currentAtk = baseAtk;
                BattleEventManager.bem.InvokeAtkModEvent(affiliation, slot);
//					atkModEvent.Invoke();
                break;

            case StatChange.DefUp:
            case StatChange.DefDown:
                currentDef = baseDef;
                BattleEventManager.bem.InvokeDefModEvent(affiliation, slot);
//					defModEvent.Invoke();
                break;

            case StatChange.SpdUp:
            case StatChange.SpdDown:
                currentSpd = baseSpd;
                BattleEventManager.bem.InvokeSpdModEvent(affiliation, slot);
//					spdModEvent.Invoke();
                break;

            case StatChange.HpUp:
            case StatChange.HpDestruct:
                maxHp = baseHp;
                BattleEventManager.bem.InvokeHpModEvent(affiliation, slot);
//					hpModEvent.Invoke();
                break;

            case StatChange.MpUp:
            case StatChange.MpDown:
                maxMp = baseMp;
                BattleEventManager.bem.InvokeMpModEvent(affiliation, slot);
//					mpModEvent.Invoke();
                break;

            default:
                throw new ArgumentOutOfRangeException("statChange", statChange, null);
            }
        }
Esempio n. 8
0
        private void UpdateIcon(StatChange statChange, Image icon)
        {
            icon.sprite = GetCorrectArrowSprite(statChange);

            if (statChange.StatModifier > 0)
            {
                icon.transform.localRotation = icon.sprite == doubleArrow?
                                               Quaternion.Euler(0, 0, -90) : Quaternion.Euler(0, 0, 90);
            }
            else if (statChange.StatModifier < 0)
            {
                icon.transform.localRotation = icon.sprite == doubleArrow?
                                               Quaternion.Euler(0, 0, 90) : Quaternion.Euler(0, 0, -90);
            }
        }
Esempio n. 9
0
        private int ModStat(StatChange statChange)
        {
            switch (statChange)
            {
            case StatChange.HpUp:
                return(Mathf.RoundToInt(baseHp * 0.15f));

            case StatChange.HpDestruct:
                return(Mathf.RoundToInt(baseHp * -0.15f));

            case StatChange.MpUp:
                return(Mathf.RoundToInt(baseHp * 0.15f));

            case StatChange.MpDown:
                return(Mathf.RoundToInt(baseHp * -0.15f));

            case StatChange.AtkUp:
                return(Mathf.RoundToInt(baseAtk * 0.25f));

            case StatChange.DefUp:
                return(Mathf.RoundToInt(baseDef * 0.25f));

            case StatChange.SpdUp:
                return(Mathf.RoundToInt(baseSpd * 0.2f));

            case StatChange.AtkDown:
                return(Mathf.RoundToInt(baseAtk * -0.25f));

            case StatChange.DefDown:
                return(Mathf.RoundToInt(baseDef * -0.25f));

            case StatChange.SpdDown:
                return(Mathf.RoundToInt(baseSpd * -0.2f));

            default:
                throw new ArgumentOutOfRangeException("statChange", statChange, null);
            }
        }
Esempio n. 10
0
 public bool DoesResistStatChangeRemoval(StatChange statChange)
 {
     return(ResistsStatChangeRemoval(statChange));
 }
Esempio n. 11
0
 public bool DoesResistStatChange(StatChange statChange)
 {
     return(ResistsStatChange(statChange));
 }
Esempio n. 12
0
        public void AddIcon(StatChange mod)
        {
            switch (mod.affectedStat)
            {
            case AffectedStat.Strength:
                strengthChange = mod;
                UpdateIcon(mod, strIcon);
                strIcon.gameObject.SetActive(true);
                strIcon.gameObject.GetComponent <StatusEffectTimer>().SetTimer(mod, unitBase);
                break;

            case AffectedStat.Magic:
                magicChange = mod;
                UpdateIcon(mod, magIcon);
                magIcon.gameObject.SetActive(true);
                magIcon.gameObject.GetComponent <StatusEffectTimer>().SetTimer(mod, unitBase);
                break;

            case AffectedStat.Accuracy:
                accuracyChange = mod;
                UpdateIcon(mod, accIcon);
                accIcon.gameObject.SetActive(true);
                accIcon.gameObject.GetComponent <StatusEffectTimer>().SetTimer(mod, unitBase);
                break;

            case AffectedStat.Initiative:
                initChange = mod;
                UpdateIcon(mod, initIcon);
                initIcon.gameObject.SetActive(true);
                initIcon.gameObject.GetComponent <StatusEffectTimer>().SetTimer(mod, unitBase);
                break;

            case AffectedStat.CriticalChance:
                critChange = mod;
                UpdateIcon(mod, critIcon);
                critIcon.gameObject.SetActive(true);
                critIcon.gameObject.GetComponent <StatusEffectTimer>().SetTimer(mod, unitBase);
                break;

            case AffectedStat.Defense:
                defenseChange = mod;
                UpdateIcon(mod, defIcon);
                defIcon.gameObject.SetActive(true);
                defIcon.gameObject.GetComponent <StatusEffectTimer>().SetTimer(mod, unitBase);
                break;

            case AffectedStat.Resistance:
                resistanceChange = mod;
                UpdateIcon(mod, resIcon);
                resIcon.gameObject.SetActive(true);
                resIcon.gameObject.GetComponent <StatusEffectTimer>().SetTimer(mod, unitBase);
                break;

            case AffectedStat.Agility:
                agilityChange = mod;
                UpdateIcon(mod, agiIcon);
                agiIcon.gameObject.SetActive(true);
                agiIcon.gameObject.GetComponent <StatusEffectTimer>().SetTimer(mod, unitBase);
                break;
            }
        }
Esempio n. 13
0
 public bool AfflictedByStatChange(StatChange statChange)
 {
     return(afflictedStatChanges.ContainsKey(statChange) && afflictedStatChanges[statChange]);
 }
Esempio n. 14
0
 protected bool ResistsStatChangeRemoval(StatChange statChange)
 {
     return(statChangeRemovalResists.ContainsKey(statChange) && statChangeRemovalResists[statChange]);
 }
Esempio n. 15
0
 protected void RemoveStatChange(StatChange statChange)
 {
     afflictedStatChanges[statChange] = false;
 }