Пример #1
0
    private WeaponBaseData ApplyOnAttackEffects(WeaponBaseData origValues)
    {
        WeaponBaseData result = origValues;

        foreach (var itemAndEffect in m_OnAttackEffects)
        {
            result = itemAndEffect.Effect(result);
        }
        return(result);
    }
Пример #2
0
    public void HitEnemy(GameObject enemy)
    {
        WeaponBaseData data = new WeaponBaseData(
            m_Manager.GetPlayerData().GetPower() + m_WeaponData.Damage,
            m_WeaponData.KnockbackPower);

        data = ApplyOnAttackEffects(data);
        if (enemy.CompareTag(Consts.PLAYER_TAG))
        {
            PlayerManager other = enemy.GetComponent <PlayerManager>();
            other.TakeDamage(m_WeaponData, data.Damage, m_Manager);
            Vector2 dir = (other.transform.position - transform.position).normalized;
            other.GetComponent <PlayerMovement>().ApplyExternalForce(dir * data.KnockbackPower);
        }
        else if (enemy.CompareTag(Consts.GENERAL_ENEMY_TAG))
        {
            EnemyManager enemyManager = enemy.GetComponent <EnemyManager>();
            enemyManager.TakeDamage(m_WeaponData, data.Damage, m_Manager.GetID());
            Vector2 dir = (enemyManager.transform.position - transform.position).normalized;
            enemyManager.GetComponent <EnemyMovement>().ApplyExternalForce(dir * data.KnockbackPower);
        }
    }
Пример #3
0
        //Roll for MOd Type
        //Roll For Quality
        //if Damage
        //Roll For Damage Type
        //Apply Mod
        public static ItemMod ReRollWeapon(Item item)
        {
            Debug.Log("Rerolling weapon");
            int statTypes    = (int)WeaponModType.COUNT - 1;
            int rollStatType = UnityEngine.Random.Range(0, statTypes);


            WeaponModType statTypeEnum = (WeaponModType)rollStatType;

            int rollQuality = RollHelper.RollForQuality();

            Debug.Log("Weapon Stat Chosen is " + statTypeEnum.ToString() + " value is " + rollQuality);


            EquipmentStats itemEquipStats  = item.GetComponent <EquipmentStats>();
            WeaponStats    itemWeaponStats = item.GetComponent <WeaponStats>();
            WeaponBaseData weaponBaseData  = item.GetComponent <WeaponBaseData>();


            Debug.Log("Weapon stats");
            Debug.Log(itemWeaponStats);

            switch (statTypeEnum)
            {
            //check the weapon damage type exists first
            case WeaponModType.DAMAGE:


                WeaponModDamageType type = RollHelper.RollForDamageType();
                Debug.Log("Damage type chosen is " + type.ToString());

                switch (type)
                {
                case WeaponModDamageType.Physical:
                    if (WeaponHelper.CheckWeaponHasDamageType(item, type))
                    {
                        //add to the current damage
                        Debug.Log("Weapon already has this damage type NotYetImplemented");
                    }
                    else
                    {
                        Debug.Log("Adding Physical damage");
                        WeaponHelper.AddWeaponDamage(item, DamageType.Types.Physical, rollQuality);
                        return(CreateItemModFor <Weapon>(item, rollQuality, "physical", "damage"));
                    }
                    break;

                case WeaponModDamageType.Ethereal:
                    if (WeaponHelper.CheckWeaponHasDamageType(item, type))
                    {
                        Debug.Log("Weapon already has this damage type NotYetImplemented");
                    }
                    else
                    {
                        Debug.Log("Adding Ethereal damage");
                        WeaponHelper.AddWeaponDamage(item, DamageType.Types.Ethereal, rollQuality);
                        return(CreateItemModFor <Weapon>(item, rollQuality, "ethereal", "damage"));
                    }
                    break;

                case WeaponModDamageType.Decay:
                    if (WeaponHelper.CheckWeaponHasDamageType(item, type))
                    {
                        Debug.Log("Weapon already has this damage type NotYetImplemented");
                    }
                    else
                    {
                        Debug.Log("Adding Decay damage");
                        WeaponHelper.AddWeaponDamage(item, DamageType.Types.Decay, rollQuality);
                        return(CreateItemModFor <Weapon>(item, rollQuality, "decay", "damage"));
                    }
                    break;

                case WeaponModDamageType.Electric:
                    if (WeaponHelper.CheckWeaponHasDamageType(item, type))
                    {
                        Debug.Log("Weapon already has this damage type NotYetImplemented");
                    }
                    else
                    {
                        Debug.Log("Adding Electric damage");
                        WeaponHelper.AddWeaponDamage(item, DamageType.Types.Electric, rollQuality);
                        return(CreateItemModFor <Weapon>(item, rollQuality, "electric", "damage"));
                    }
                    break;

                case WeaponModDamageType.Frost:
                    if (WeaponHelper.CheckWeaponHasDamageType(item, type))
                    {
                        Debug.Log("Weapon already has this damage type NotYetImplemented");
                    }
                    else
                    {
                        Debug.Log("Adding Frost damage");
                        WeaponHelper.AddWeaponDamage(item, DamageType.Types.Frost, rollQuality);
                        return(CreateItemModFor <Weapon>(item, rollQuality, "frost", "damage"));
                    }
                    break;

                case WeaponModDamageType.Fire:
                    if (WeaponHelper.CheckWeaponHasDamageType(item, type))
                    {
                        Debug.Log("Weapon already has this damage type NotYetImplemented");
                    }
                    else
                    {
                        Debug.Log("Adding Fire damage");
                        WeaponHelper.AddWeaponDamage(item, DamageType.Types.Fire, rollQuality);
                        return(CreateItemModFor <Weapon>(item, rollQuality, "fire", "damage"));
                    }
                    break;
                }
                break;

            case WeaponModType.SPEED:
                WeaponHelper.UpdateAttackSpeed(item, rollQuality);
                return(CreateItemModFor <Weapon>(item, rollQuality, "speed", "SPEED"));

            case WeaponModType.REACH:
                WeaponHelper.UpdateAttackReach(item, rollQuality);
                return(CreateItemModFor <Weapon>(item, rollQuality, "reach", "REACH"));

            case WeaponModType.DURABILITY:
                WeaponHelper.UpdateDurability(item, rollQuality);
                //outwardUTILS.ReflectionUpdateOrSetFloat(typeof(WeaponBaseData), weaponBaseData, "Durability", rollQuality);
                return(CreateItemModFor <Weapon>(item, rollQuality, "Durability", "DURABILITY"));

            case WeaponModType.IMPACT:
                WeaponHelper.UpdateImpact(item, rollQuality);
                //WeaponHelper.SetAttackStepKnockback(itemWeaponStats.Attacks, rollQuality);
                return(CreateItemModFor <Weapon>(item, rollQuality, "Impact", "IMPACT"));
            }
            return(null);
        }
Пример #4
0
 private WeaponBaseData MultiplyAttackDamage(WeaponBaseData originalData)
 {
     originalData.Damage = (int)(originalData.Damage * m_DamageMultiplier);
     return(originalData);
 }
Пример #5
0
 private WeaponBaseData IncreaseKnockback(WeaponBaseData originalData)
 {
     originalData.KnockbackPower *= m_KnockbackMultiplier;
     return(originalData);
 }