Exemple #1
0
    private void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.tag == "buffs")
        {
            if (collision.transform.GetComponent <BuffsManager>() != null)
            {
                BuffsManager _db = collision.transform.GetComponent <BuffsManager>();

                if (_db.isAdvantageBuff)
                {
                    if (BossManager_Level1.singleton)
                    {
                        BossManager_Level1.singleton.OnTakingDamage(ABuffsDamage_Lv1);
                    }
                    else
                    {
                        BossManager_Level2.singleton.OnTakingDamage(ABuffsDamage_Lv1);
                    }

                    ManaPoints++;

                    PlayerAbilitiesManager.PAM.OnUpdateQuantityText();

                    OnRecoveringHealth();
                }

                if (_db.isDisadvantageBuff)
                {
                    OnTakenDamage(DbuffDamage_Lv1);
                }

                _db.OnDeactivation();
            }
        }
    }
    private void Awake()
    {
        singleton = this;

        //Test - Void call from other script
        BossAbilities.Add(NormalAttack);            //0
        BossAbilities.Add(SkillOne_SingleRandom);   //1
        BossAbilities.Add(SkillTwo_MultiRandom);    //2
        BossAbilities.Add(SkillThree_SingleTarget); //3
        BossAbilities.Add(SkillFour_MultiTarget);   //4
        BossAbilities.Add(DropBuffsAtRandomSpot);   //5
        BossAbilities.Add(DropDisadvantageBuff);    //6
        BossAbilities.Add(DropAdvantageBuff);       //7

        _skillfourquantity = SkillFour_Quantity;

        //Damage Buffs
        for (int i = 0; i < MaxBuffs_Quantity; i++)
        {
            for (int j = 0; j < AllBuffTypes.Count; j++)
            {
                BuffsManager DB = Instantiate(AllBuffTypes[j].GetComponent <BuffsManager>());

                DB.transform.SetParent(transform);

                Buff_Pools.Add(DB);
            }
        }

        //AOEs
        for (int i = 0; i < MaxSmallAoe; i++)
        {
            for (int j = 0; j < AllAoes.Count; j++)
            {
                GameObject _aoe = Instantiate(AllAoes[j]);

                _aoe.SetActive(false);

                _aoe.transform.SetParent(transform);

                Aoes_Pools.Add(_aoe);
            }


            for (int o = 0; o < AllSpecialEffects.Count; o++)
            {
                ParticleSystem _se = Instantiate(AllSpecialEffects[o].GetComponent <ParticleSystem>());;

                _se.gameObject.SetActive(false);

                _se.transform.SetParent(transform);

                SpecialEffects_Pools.Add(_se);
            }
        }
    }
Exemple #3
0
        public void Init(int ownerId)
        {
            Id = ownerId;

            StatsManager.Init(Id, 0, _dbMob.Dex, 0, 0, _dbMob.Wis, _dbMob.Luc, def: _dbMob.Defense, res: _dbMob.Magic);
            LevelProvider.Init(Id, _dbMob.Level);
            HealthManager.Init(Id, _dbMob.HP, _dbMob.MP, _dbMob.SP, _dbMob.HP, _dbMob.MP, _dbMob.SP);
            BuffsManager.Init(Id);
            CountryProvider.Init(Id, _dbMob.Fraction);
            SpeedManager.Init(Id);
            AttackManager.Init(Id);
            SkillsManager.Init(Id, new Skill[0]);

            var x = new Random().NextFloat(_moveArea.X1, _moveArea.X2);
            var y = new Random().NextFloat(_moveArea.Y1, _moveArea.Y2);
            var z = new Random().NextFloat(_moveArea.Z1, _moveArea.Z2);

            MovementManager.Init(Id, x, y, z, 0, MoveMotion.Walk);

            AIManager.Init(Id,
                           _dbMob.AI,
                           _moveArea,
                           idleTime: _dbMob.NormalTime <= 0 ? 4000 : _dbMob.NormalTime,
                           idleSpeed: _dbMob.NormalStep,
                           chaseRange: _dbMob.ChaseRange,
                           chaseSpeed: _dbMob.ChaseStep,
                           chaseTime: _dbMob.ChaseTime,
                           isAttack1Enabled: _dbMob.AttackOk1 != 0,
                           isAttack2Enabled: _dbMob.AttackOk2 != 0,
                           isAttack3Enabled: _dbMob.AttackOk3 != 0,
                           attack1Range: _dbMob.AttackRange1,
                           attack2Range: _dbMob.AttackRange2,
                           attack3Range: _dbMob.AttackRange3,
                           attackType1: _dbMob.AttackType1,
                           attackType2: _dbMob.AttackType2,
                           attackType3: _dbMob.AttackType3,
                           attackAttrib1: _dbMob.AttackAttrib1,
                           attackAttrib2: _dbMob.AttackAttrib2,
                           attack1: _dbMob.Attack1 < 0 ? (ushort)(_dbMob.Attack1 + ushort.MaxValue) : (ushort)_dbMob.Attack1,
                           attack2: _dbMob.Attack2 < 0 ? (ushort)(_dbMob.Attack2 + ushort.MaxValue) : (ushort)_dbMob.Attack2,
                           attack3: _dbMob.Attack3 < 0 ? (ushort)(_dbMob.Attack3 + ushort.MaxValue) : (ushort)_dbMob.Attack3,
                           attackTime1: _dbMob.AttackTime1,
                           attackTime2: _dbMob.AttackTime2,
                           attackTime3: _dbMob.AttackTime3);
        }
    void BuffsManagement(int Quantity, bool IsOnSpecificLocations, bool isAdvantageBuff, bool isRandom)
    {
        if (IsOnSpecificLocations)
        {
            if (isAdvantageBuff)
            {
                int i = 0;
                foreach (var item in Buff_Pools)
                {
                    if (i >= Buffs_SpecificPosition.Count)
                    {
                        return;
                    }
                    else
                    {
                        if (isRandom)
                        {
                            if (!item.gameObject.activeInHierarchy)
                            {
                                if (Buffs_SpecificPosition[i].tag != "buffpt")
                                {
                                    return;
                                }

                                item.OnBeingPlaced(Buffs_SpecificPosition[i].position);

                                i++;
                            }
                        }
                        else
                        {
                            if (!item.gameObject.activeInHierarchy)
                            {
                                if (item.isAdvantageBuff)
                                {
                                    if (Buffs_SpecificPosition[i].tag != "buffpt")
                                    {
                                        return;
                                    }

                                    item.OnBeingPlaced(Buffs_SpecificPosition[i].position);

                                    i++;
                                }
                            }
                        }
                    }
                }
            }
            else // Disadvantage
            {
                int i = 0;
                foreach (var item in Buff_Pools)
                {
                    if (i >= Buffs_SpecificPosition.Count)
                    {
                        return;
                    }
                    else
                    {
                        if (isRandom)
                        {
                            if (!item.gameObject.activeInHierarchy)
                            {
                                if (Buffs_SpecificPosition[i].tag != "buffpt")
                                {
                                    return;
                                }

                                item.OnBeingPlaced(Buffs_SpecificPosition[i].position);

                                i++;
                            }
                        }
                        else
                        {
                            if (!item.gameObject.activeInHierarchy)
                            {
                                if (item.isDisadvantageBuff)
                                {
                                    if (Buffs_SpecificPosition[i].tag != "buffpt")
                                    {
                                        return;
                                    }

                                    item.OnBeingPlaced(Buffs_SpecificPosition[i].position);

                                    i++;
                                }
                            }
                        }
                    }
                }
            }
        }
        else
        {
            for (int i = 0; i < Quantity; i++)
            {
                float X, Z, RandomX, RandomZ;
                X = (Platform.transform.localScale.x / 2) - 0.5f;
                Z = (Platform.transform.localScale.z / 2) - 0.5f;

                RandomX = Random.Range(-X, X);
                RandomZ = Random.Range(-Z, Z);

                SingleTarget_Position = new Vector3(RandomX, 0.5f, RandomZ);

                SingleTarget_Position = Platform.transform.TransformPoint(SingleTarget_Position / 2f);

                Collider[] Objects = Physics.OverlapSphere(SingleTarget_Position, 0.1f);

                foreach (var item in Objects)
                {
                    if (item.gameObject.tag == "Platforms")
                    {
                        HitPlatform = true;
                    }
                }

                if (HitPlatform)
                {
                    Debug.DrawLine(transform.position, SingleTarget_Position, Color.green, 5f);

                    if (isRandom)
                    {
                        List <BuffsManager> _availableBuff = new List <BuffsManager>();
                        foreach (var item in Buff_Pools)
                        {
                            if (!item.gameObject.activeInHierarchy)
                            {
                                _availableBuff.Add(item);
                            }
                        }

                        BuffsManager bf = _availableBuff[Random.Range(0, _availableBuff.Count)];

                        bf.OnBeingPlaced(SingleTarget_Position);
                    }
                }
                else
                {
                    Debug.DrawLine(transform.position, SingleTarget_Position, Color.red, 5f);
                }
            }
        }
    }