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); } } }
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); } } } }