Пример #1
0
    public void UpdateStats(SpellEffectInfo effectInfo, bool isFinal)
    {
        DivineDebug.Log("Update Stats for: ");
        DivineDebug.Log("CurrentHP: " + _currentStats.hp + " FinalHP: " + effectInfo.finalCharacterStats.hp + " IsFinal: " + isFinal);

        if ((effectInfo.isMultiPart && isFinal) || !effectInfo.isMultiPart)
        {
            _currentStats = effectInfo.finalCharacterStats;

            DivineDebug.Log("moniker " + moniker +
                            " hp: " + _currentStats.hp +
                            " shield: " + _currentStats.shield +
                            " damage: " + _currentStats.damage);

            charInfo.SetBaseStats(_currentStats.hp, _currentStats.maxHp, _currentStats.damage,
                                  _currentStats.shield, _currentStats.maxShield);
        }
        else
        {
            for (int i = 0; i < effectInfo.singleStatChanges.Count; i++)
            {
                switch (effectInfo.singleStatChanges[i].charStatChangeType)
                {
                case SpellSingleStatChangeType.None:
                    break;

                case SpellSingleStatChangeType.curHPValChange:
                    _currentStats.SetHP(_currentStats.hp + effectInfo.singleStatChanges[i].intVal);
                    break;

                case SpellSingleStatChangeType.curShieldValChange:
                    _currentStats.SetShield(_currentStats.shield + effectInfo.singleStatChanges[i].intVal);
                    break;

                case SpellSingleStatChangeType.curDamageValChange:
                    _currentStats.damage += effectInfo.singleStatChanges[i].intVal;
                    break;

                case SpellSingleStatChangeType.curFlagValChange:
                    _currentStats.flags = (BattleFlags)effectInfo.singleStatChanges[i].intVal;
                    break;

                default:
                    break;
                }
            }
        }

        DivineDebug.Log("After Update CurrentHP: " + _currentStats.hp +
                        " Shield: " + _currentStats.shield + " Flag: " + _currentStats.flags.ToString());

        ShowUpdatingStatsVisual(effectInfo);

        if (_curState == CharacterState.Idle && _currentStats.hp <= 0)
        {
            SetState_Dying(false);
        }

        _previousFlag = _currentStats.flags;
    }
 public BattleObjStats(int hp, int maxHp, int damage, int shield, int maxShield, BattleFlags flags)
 {
     this.flags = flags;
     this.hp = hp;
     this.maxHp = maxHp;
     this.damage = damage;
     this.shield = shield;
     this.maxShield = maxShield;
 }
Пример #3
0
    private void Show_EffectForFlagChange(BattleFlags newFlag, bool isFromTurnStat)
    {
        DivineDebug.Log("Show_EffectForFlagChange New: " + newFlag.ToString() + " Prev: " + _previousFlag.ToString());

        _charVisual.charUI.newCharHUD.ResetActiveEffects(newFlag);

        _extraSpellHandler.SetExtraSpells(_previousFlag, newFlag, position_pivot, scale, _charVisual, isFromTurnStat);

        _charVisual.charEffects.HandleChangingFlag(newFlag, _previousFlag, scale);
    }
Пример #4
0
    public void HandleChangingFlag(BattleFlags newFlags, BattleFlags previousFlags, Vector3 scale)
    {
        if (newFlags == previousFlags)
        {
            return;
        }

        _vfx = null;
        Vector3 pos = Vector3.zero;

        List <BattleFlags> newFlagList  = new List <BattleFlags>();
        List <BattleFlags> prevFlagList = new List <BattleFlags>();

        foreach (BattleFlags flag in Enum.GetValues(typeof(BattleFlags)))
        {
            if ((newFlags & flag) == flag)
            {
                newFlagList.Add(flag);
            }

            if ((previousFlags & flag) == flag)
            {
                prevFlagList.Add(flag);
            }
        }

        foreach (BattleFlags nFlag in newFlagList)
        {
            if (!prevFlagList.Contains(nFlag))
            {
                switch (nFlag)
                {
                case BattleFlags.Fear:
                    _vfx = _fearEffect;
                    pos  = _tr_Helper_Fear.position;
                    break;

                case BattleFlags.DamageReduction:
                    _vfx = _damageReductionEffect;
                    pos  = _tr_Helper_Fear.position;
                    break;

                case BattleFlags.DeathRattle:
                    _vfx = _deathRattle;
                    pos  = transform.position;
                    break;
                }
            }
        }

        if (_vfx != null)
        {
            CreateVFX(_vfx, pos, scale);
        }
    }
Пример #5
0
    private BattleFlags MakeBattleFlag(WBattleFlags[] wflags)
    {
        BattleFlags battleFlag = BattleFlags.None;

        for (int i = 0; i < wflags.Length; i++)
        {
            battleFlag = battleFlag | (BattleFlags)wflags[i];
        }

        return(battleFlag);
    }
Пример #6
0
    private BattleObjStats MakeBattleObject(WBattleObjStat wbattleObj)
    {
        BattleFlags    flags     = (BattleFlags)wbattleObj.flag;
        BattleObjStats battleObj = new BattleObjStats(wbattleObj.hp,
                                                      wbattleObj.max_hp,
                                                      wbattleObj.damage,
                                                      wbattleObj.shield,
                                                      wbattleObj.max_shield,
                                                      flags);

        return(battleObj);
    }
    public void SetExtraSpells(BattleFlags prevFlag, BattleFlags newFlag, Vector3 pos, Vector3 scale,
                               CharacterVisual owner, bool isFromTurnStat)
    {
        if (isFromTurnStat)
        {
            foreach (IExtraSpell exsp in _dic_extraSpells.Values)
            {
                exsp.TurnReached();
            }
        }

        if (prevFlag == newFlag)
        {
            return;
        }

        //Damage Return
        bool newFlag_haveDmgRet  = (newFlag & BattleFlags.DamageReturn) == BattleFlags.DamageReturn;
        bool prevFlag_haveDmgRet = (prevFlag & BattleFlags.DamageReturn) == BattleFlags.DamageReturn;

        if (!prevFlag_haveDmgRet && newFlag_haveDmgRet)
        {
            AddSpell(ExtraSpellType.DamageReturn, pos, scale, owner);
        }
        else if (prevFlag_haveDmgRet && !newFlag_haveDmgRet)
        {
            RemoveSpell(ExtraSpellType.DamageReturn);
        }

        //Protect
        bool newFlag_haveProtect  = (newFlag & BattleFlags.Protect) == BattleFlags.Protect;
        bool prevFlag_haveProtect = (prevFlag & BattleFlags.Protect) == BattleFlags.Protect;

        if (!prevFlag_haveProtect && newFlag_haveProtect)
        {
            AddSpell(ExtraSpellType.Protect, pos, scale, owner);
        }
        else if (prevFlag_haveProtect && !newFlag_haveProtect)
        {
            RemoveSpell(ExtraSpellType.Protect);
        }

        //Confuse
        bool newFlag_haveConfuse  = (newFlag & BattleFlags.Confuse) == BattleFlags.Confuse;
        bool prevFlag_haveConfuse = (prevFlag & BattleFlags.Confuse) == BattleFlags.Confuse;

        if (!prevFlag_haveConfuse && newFlag_haveConfuse)
        {
            AddSpell(ExtraSpellType.Confuse, pos, scale, owner);
        }
        else if (prevFlag_haveConfuse && !newFlag_haveConfuse)
        {
            RemoveSpell(ExtraSpellType.Confuse);
        }

        //Burn
        bool newFlag_haveBurn  = (newFlag & BattleFlags.Burn) == BattleFlags.Burn;
        bool prevFlag_haveBurn = (prevFlag & BattleFlags.Burn) == BattleFlags.Burn;

        if (!prevFlag_haveBurn && newFlag_haveBurn)
        {
            AddSpell(ExtraSpellType.Burn, pos, scale, owner);
        }
        else if (prevFlag_haveBurn && !newFlag_haveBurn)
        {
            RemoveSpell(ExtraSpellType.Burn);
        }

        //Poison
        bool newFlag_havePoison  = (newFlag & BattleFlags.Poison) == BattleFlags.Poison;
        bool prevFlag_havePoison = (prevFlag & BattleFlags.Poison) == BattleFlags.Poison;

        if (!prevFlag_havePoison && newFlag_havePoison)
        {
            AddSpell(ExtraSpellType.Poison, pos, scale, owner);
        }
        else if (prevFlag_havePoison && !newFlag_havePoison)
        {
            RemoveSpell(ExtraSpellType.Poison);
        }
    }