void OnCollisionEnter(Collision col) { GameObject objectCollision = col.gameObject; string collisionTag = objectCollision.tag; if (collisionTag == "Ship") { if (!ship.CheckReflection() && !ship.CheckRedirection()) { if (projectileType == "EnemyProjectileLaser") { prefabPools.CreateExplosion(transform, 0.16f); ship.PlayerTakeDamage(projectileDamage); } else if (projectileType == "EnemyProjectileRocket") { prefabPools.CreateExplosion(transform, 0.27f); ship.PlayerTakeDamage(projectileDamage); gameManager.audioManager.PlaySound(6); } else if (projectileType == "EnemyProjectileAcid") { ship.ActivateAcid(5); //for (int curIcon = 0; curIcon < 2; curIcon++) //{ randRow = Random.Range(0, Board.GridRows); randColumn = Random.Range(0, Board.GridColumns); board.boardIcons[(randRow), (randColumn)].ActivateAcid(projectileDamage, 5); //} } else if (projectileType == "EnemyProjectileDrain") { if (normalProjectile) { prefabPools.CreateExplosion(transform, 0.22f); ship.PlayerTakeDamage(projectileDamage); } } else if (projectileType == "EnemyProjectileWeaken") { if (normalProjectile) { prefabPools.CreateExplosion(transform, 0.22f); ship.PlayerTakeDamage(projectileDamage); } } else if (projectileType == "EnemyProjectileFire") { randRow = Random.Range(0, Board.GridRows); randColumn = Random.Range(0, Board.GridColumns); for (int curRow = 0; curRow < 3; curRow++) { for (int curCol = 0; curCol < 3; curCol++) { int randomNumber = Random.Range(0, 3); if (randomNumber > 0) { board.boardIcons[(randRow + curRow) % Board.GridRows, (randColumn + curCol) % Board.GridColumns].ActivateFire(projectileDamage); } } } } if (normalProjectile) { PushOnStack(); } } else if (ship.CheckReflection() && normalProjectile) { if (projectileType == "EnemyProjectileRocket" || projectileType == "EnemyProjectileLaser" || projectileType == "EnemyProjectileFire" || projectileType == "EnemyProjectileAcid" || projectileType == "EnemyProjectileDrain" || projectileType == "EnemyProjectileWeaken") { SetReflected(); gameManager.missionTracker.IncrementMissionProgress(11, 1); } } else if (normalProjectile) { if ((projectileType == "EnemyProjectileRocket" || projectileType == "EnemyProjectileLaser" || projectileType == "EnemyProjectileFire" || projectileType == "EnemyProjectileAcid" || projectileType == "EnemyProjectileDrain" || projectileType == "EnemyProjectileWeaken") && normalProjectile) { SetRedirected(); } } } else if (collisionTag == "Enemy") { if (reflected) { if (projectileType == "EnemyProjectileLaser") { prefabPools.CreateExplosion(transform, 0.13f); objectCollision.GetComponent <Enemy>().EnemyTakeDamage(projectileDamage, 1.0f, false); } else if (projectileType == "EnemyProjectileRocket") { prefabPools.CreateExplosion(transform, 0.13f); objectCollision.GetComponent <Enemy>().EnemyTakeDamage(projectileDamage, 1.2f, false); } else if (projectileType == "EnemyProjectileAcid") { objectCollision.GetComponent <Enemy>().ActivateDamageOverTime(projectileDamage, 5, 0); } else if (projectileType == "EnemyProjectileFire") { objectCollision.GetComponent <Enemy>().ActivateDamageOverTime(projectileDamage, 5, 1); } else if (projectileType == "EnemyProjectileDrain") { prefabPools.CreateExplosion(transform, 0.2f); objectCollision.GetComponent <Enemy>().EnemyTakeDamage(projectileDamage, 1.2f, false); } else { prefabPools.CreateExplosion(transform, 0.2f); objectCollision.GetComponent <Enemy>().EnemyTakeDamage(projectileDamage, 1.2f, false); } PushOnStack(); } } else if (collisionTag == "ArmamentSecondary" && normalProjectile) { gameManager.missionTracker.IncrementMissionProgress(3, 1); gameManager.prefabPools.CreateExplosion(transform, 0.16f); PushOnStack(); } else if (collisionTag == "Asteroid") { if (projectileType == "EnemyProjectileLaser") { prefabPools.CreateExplosion(transform, 0.13f); objectCollision.GetComponent <Asteroid>().EnemyTakeDamage(projectileDamage, 0.0f); } else if (projectileType == "EnemyProjectileRocket") { prefabPools.CreateExplosion(transform, 0.13f); objectCollision.GetComponent <Asteroid>().EnemyTakeDamage(projectileDamage, 0.0f); } else if (projectileType == "EnemyProjectileAcid") { objectCollision.GetComponent <Asteroid>().ActivateDamageOverTime(projectileDamage, 5, 0); } else if (projectileType == "EnemyProjectileFire") { objectCollision.GetComponent <Asteroid>().ActivateDamageOverTime(projectileDamage, 5, 1); } else if (projectileType == "EnemyProjectileDrain") { prefabPools.CreateExplosion(transform, 0.2f); objectCollision.GetComponent <Asteroid>().EnemyTakeDamage(projectileDamage, 0.0f); } else { prefabPools.CreateExplosion(transform, 0.2f); objectCollision.GetComponent <Asteroid>().EnemyTakeDamage(projectileDamage, 0.0f); } PushOnStack(); } }