void CreateBosses() { EnemyMovementPattern mp = new EnemyMovementPattern(enterLeave); mp.Customize("StayTime", 27f); mp.Customize("LeaveDir", "Up"); bossMid1 = new Wave(55f, mp, null, 1, false, 150, false, 3f, 1); bossMid1.SetUpBoss(0.5f, "Asura"); bossMid1.isMidBoss = true; mp = new EnemyMovementPattern(enterLeave); mp.Customize("StayTime", 0); boss1 = new Wave(96f, mp, null, 1, false, 200, true, 3f, 2); boss1.SetUpBoss(1, "Forest Guardian"); boss2 = new Wave(30f, null, null, 1, false, 200, true, 3f, 2); boss2.SetUpBoss(2, "Spider Queen"); boss2.movementPattern = enterFromTop; }
public IEnumerator Execute(string boss, int phase, EnemyShoot enemy, EnemyMovement enemyMove) { endOfPhase = false; EnemyLib lib = GameController.gameControl.enemyLib; patterns.Clear(); p1 = null; p2 = null; p3 = null; p4 = null; p5 = null; mp1 = null; mp2 = null; mp3 = null; mp4 = null; mp5 = null; GameController.gameControl.ui.UpdateTopPlayer("Boss" + enemy.wave.bossIndex + "_" + (phase)); // Debug.Log ("executing phase " + phase); switch (boss) { case "Boss0.5": switch (phase) { case 0: enemy.NextBossPhase(); break; case 1: GameController.gameControl.ui.UpdateTopPlayer(1f); enemy.enemyLife.SetInvulnerable(true); p1 = new Pattern(lib.spiral); p1.Customize(new BulletMovementPattern(true, "WaitAndExplode", 5f, p1, 0, 14)); p1.Customize("LoopCircles", 1440); p1.Customize("BulletCount", 100); p1.SetSprite("Circle", "Glow", "Green"); p2 = new Pattern(lib.maelStrom); p2.Customize(new BulletMovementPattern(true, "Explode", 6f, p2, 0, 14)); p2.Customize("RotationDirection", 1); p2.SetSprite("Circle", "Glow", "Green"); p3 = new Pattern(lib.maelStrom); p3.SetSprite("Circle", "Glow", "Yellow"); p3.Customize(new BulletMovementPattern(true, "Explode", 6f, p3, 0, 14)); p3.Customize("RotationDirection", -1); mp1 = new EnemyMovementPattern(lib.centerHor); mp1.Customize("Speed", 7f); enemyMove.SetUpPatternAndMove(mp1); for (int i = 0; i < 5; i++) { yield return(new WaitForSeconds(2f)); enemy.BossShoot(p2); enemy.BossShoot(p3); yield return(new WaitForSeconds(2.2f)); p2.stop = true; p3.stop = true; } mp1 = new EnemyMovementPattern("Leaving", new Vector3(lib.centerX, 13, 0), false, 0); enemyMove.SetUpPatternAndMove(mp1); yield return(new WaitForSeconds(2f)); enemy.enemyLife.Die(); p2.stop = true; p3.stop = true; break; } break; //BOSS 1 - FOREST GUARDIAN case "Boss1": switch (phase) { case 0: p1 = new Pattern(lib.spiral); p1.Customize(new BulletMovementPattern(true, "WaitAndExplode", 5f, p1, 0, 14)); p1.Customize("LoopCircles", 1440); p1.Customize("BulletCount", 100); p1.SetSprite("Circle", "Glow", "Green"); p2 = new Pattern(lib.maelStrom); p2.Customize(new BulletMovementPattern(true, "Explode", 6f, p2, 0, 14)); p2.Customize("RotationDirection", 1); p2.SetSprite("Circle", "Glow", "Green"); p3 = new Pattern(lib.maelStrom); p3.SetSprite("Circle", "Glow", "Yellow"); p3.Customize(new BulletMovementPattern(true, "Explode", 6f, p3, 0, 14)); p3.Customize("RotationDirection", -1); mp1 = new EnemyMovementPattern(lib.centerHor); mp1.Customize("Speed", 7f); mp2 = new EnemyMovementPattern(lib.rocking); mp2.Customize("Speed", 7f); while (!endOfPhase) { enemyMove.SetUpPatternAndMove(mp1); yield return(new WaitForSeconds(2f)); enemy.BossShoot(p2); enemy.BossShoot(p3); yield return(new WaitForSeconds(2.2f)); p2.stop = true; p3.stop = true; if (endOfPhase) { break; } enemyMove.SetUpPatternAndMove(new EnemyMovementPattern(lib.rocking)); yield return(new WaitForSeconds(1f)); enemy.BossShoot(p1); yield return(new WaitForSeconds(2.2f)); enemy.BossShoot(p1); yield return(new WaitForSeconds(3f)); } p2.stop = true; p3.stop = true; break; case 1: GameController.gameControl.sound.PlaySpellSound("Enemy"); GameController.gameControl.ui.ShowActivatedPhase("Boss", "Justice Seal: Ninetailed Spear"); p1 = new Pattern(lib.curtain); p1.Customize("BulletCount", 9); p1.SetSprite("Circle", "Bevel", "Lilac"); p1.Customize(new BulletMovementPattern(false, "TurnToSpears", 6f, p1, 0, 14)); p2 = new Pattern(lib.maelStrom); p2.Customize(new BulletMovementPattern(true, "Explode", 6f, p2, 0, 14)); p2.Customize("RotationDirection", 1); p2.SetSprite("Circle", "Glow", "Green"); p3 = new Pattern(lib.maelStrom); p3.SetSprite("Circle", "Glow", "Yellow"); p3.Customize(new BulletMovementPattern(true, "Explode", 4f, p3, 0, 14)); p3.Customize("RotationDirection", -1); mp1 = new EnemyMovementPattern("", new Vector3(-15, 6f, 0f), false, 0); mp1.Customize("Speed", 7f); mp2 = new EnemyMovementPattern("", new Vector3(1, 6, 0), false, 0); mp2.Customize("Speed", 7f); enemyMove.SetUpPatternAndMove(mp1); yield return(new WaitForSeconds(2.2f)); while (!endOfPhase) { yield return(new WaitUntil(() => mp1.CheckIfReachedDestination(enemyMove) == true)); enemyMove.SetUpPatternAndMove(mp2); enemy.BossShoot(p1); yield return(new WaitUntil(() => mp1.CheckIfReachedDestination(enemyMove) == true)); yield return(new WaitForSeconds(1f)); enemy.BossShoot(p2); enemy.BossShoot(p3); yield return(new WaitForSeconds(2.2f)); p2.stop = true; p3.stop = true; yield return(new WaitForSeconds(1f)); enemyMove.SetUpPatternAndMove(mp1); enemy.BossShoot(p1); yield return(new WaitUntil(() => mp1.CheckIfReachedDestination(enemyMove) == true)); yield return(new WaitForSeconds(1f)); enemy.BossShoot(p2); enemy.BossShoot(p3); yield return(new WaitForSeconds(2.2f)); p2.stop = true; p3.stop = true; yield return(new WaitForSeconds(1f)); } break; case 2: mp1 = new EnemyMovementPattern("", new Vector3(lib.centerX + 4f, enemy.transform.position.y, 0), false, 0); mp1.Customize("Teleport", 1); mp2 = new EnemyMovementPattern("", new Vector3(lib.centerX - 4f, enemy.transform.position.y, 0), false, 0); mp2.Customize("Teleport", 1); while (!endOfPhase) { enemyMove.SetUpPatternAndMove(mp1); yield return(new WaitForSeconds(5f)); enemyMove.SetUpPatternAndMove(mp2); yield return(new WaitForSeconds(5f)); } break; case 3: /*p2 = new Pattern (lib.maelStrom); * p2.Customize (new BulletMovementPattern (true, "Explode", 6f, p2, 0, 14)); * p2.Customize ("RotationDirection", 1); * p2.SetSprite ("Circle", "Glow", "Green"); * * p3 = new Pattern (lib.maelStrom); * p3.SetSprite ("Circle", "Glow", "Yellow"); * p3.Customize (new BulletMovementPattern (true, "Explode", 6f, p3, 0, 14)); * p3.Customize ("RotationDirection", -1);*/ GameController.gameControl.ui.ShowActivatedPhase("Boss", "Guardian Seal: Fox Fires"); p1 = new Pattern("Cluster", true, 150, 0, 0.01f, 0, 1f); p1.SetSprite("Fireball", "Glow", "Orange"); p2 = new Pattern(lib.maelStrom); p2.Customize(new BulletMovementPattern(true, "Explode", 6f, p2, 0, 14)); p2.Customize("RotationDirection", 1); p2.SetSprite("Circle", "Big", "Red"); p2.Customize("BulletCount", 6); p2.Customize("CoolDown", .5f); mp1 = new EnemyMovementPattern("Swing", new Vector3(-13, enemy.transform.position.y, 0), false, 0); mp1.Customize("Speed", 5f); mp1.Customize("Direction", 1); mp2 = new EnemyMovementPattern("", new Vector3(lib.centerX, lib.centerY, 0), false, 0); while (!endOfPhase) { enemyMove.SetUpPatternAndMove(mp1); yield return(new WaitForSeconds(2f)); enemy.BossShoot(p1); yield return(new WaitForSeconds(4f)); mp1.Customize("Speed", 7f); enemyMove.SetUpPatternAndMove(mp2); yield return(new WaitForSeconds(1f)); enemy.BossShoot(p2); yield return(new WaitForSeconds(4f)); p2.stop = true; } //mp1.Customize ("Speed", 1f); break; } break; //BOSS 2 - SPIDER BOSS case "Boss2": switch (phase) { case 0: p1 = lib.singleHoming; p1.Customize(new BulletMovementPattern(true, null, 0.5f, p1, 0, 14)); p1.SetSprite("Circle", "Big", "Red"); p2 = lib.maelStrom; p2.Customize(new BulletMovementPattern(true, "Explode", 6f, p2, 0, 14)); p2.SetSprite("Diamond", "Glow", "Red"); enemy.BossShoot(p2); while (!endOfPhase) { if (endOfPhase) { break; } enemy.BossShoot(p1); yield return(new WaitForSeconds(1f)); } break; case 1: enemyMove.SetUpPatternAndMove(GameController.gameControl.enemyLib.centerHor); GameController.gameControl.ui.ShowActivatedPhase("Boss", "Dark Core: Web of Lies"); p1 = new Pattern(lib.giantWeb); p2 = lib.maelStrom; p2.Customize(new BulletMovementPattern(true, "Explode", 6f, p2, 0, 14)); p2.SetSprite("Diamond", "Glow", "Red"); enemy.BossShoot(p2); while (!endOfPhase) { enemy.BossShoot(p1); yield return(new WaitForSeconds(10)); } endOfPhase = true; break; case 2: yield return(new WaitForSeconds(2f)); p1 = new Pattern(lib.spiral); p1.Customize(new BulletMovementPattern(true, "WaitAndExplode", 6f, p1, 0, 14)); p1.SetSprite("Diamond", "Glow", "Red"); p2 = lib.spiderWeb; p2.Customize(new BulletMovementPattern(false, "DownAndExplode", 0.5f, p2, 0, 14)); p2.SetSprite("Circle", "Glow", "Red"); while (!endOfPhase) { for (int i = 0; i < 2; i++) { enemy.BossShoot(p1); p1.SetSprite("Circle", "Glow", "Yellow"); yield return(new WaitForSeconds(2f)); enemy.BossShoot(p1); p1.SetSprite("Circle", "Glow", "Green"); } yield return(new WaitForSeconds(2f)); enemyMove.SetUpPatternAndMove(new EnemyMovementPattern(GameController.gameControl.enemyLib.rocking)); for (int i = 0; i < 4; i++) { enemy.BossShoot(p2); yield return(new WaitForSeconds(1f)); enemy.BossShoot(p1); yield return(new WaitForSeconds(1f)); } } break; case 3: enemyMove.SetUpPatternAndMove(new EnemyMovementPattern(GameController.gameControl.enemyLib.centerHor)); yield return(new WaitForSeconds(2f)); GameController.gameControl.ui.ShowActivatedPhase("Boss", "Dark Core: Weave Misfortune"); p1 = lib.laser; p1.Customize("BulletCount", 6); p1.SetSprite("Circle", "Glow", "White"); p2 = lib.giantWeb; while (!endOfPhase) { for (int i = 0; i < 12; i++) { enemy.BossShoot(p1); yield return(new WaitForSeconds(1f)); } enemy.BossShoot(p2); yield return(new WaitForSeconds(2f)); } break; } break; } }
public void InitWaves(int stage) { stageWaves.Clear(); Pattern p; EnemyMovementPattern mp; switch (stage) { case 1: // //1ST PHASE mp = new EnemyMovementPattern(enterLeave); mp.Customize("LeaveDir", "Right"); mp.Customize("StayTime", .5f); p = new Pattern(singleHoming); p.Customize(new BulletMovementPattern(true, null, 0.5f, p, 0, 14)); p.SetSprite("Circle", "Big", "Red"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(1f, mp, p, 5, false, 0, false, .6f, 0), new ArrayList { rightTop }); mp = new EnemyMovementPattern(enterLeave); mp.Customize("LeaveDir", "Left"); mp.Customize("StayTime", 2f); p = new Pattern(singleHoming); p.Customize(new BulletMovementPattern(true, null, 0.5f, p, 0, 14)); p.SetSprite("Circle", "Big", "Red"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(3f, mp, p, 5, false, 0, false, .6f, 0), new ArrayList { leftTop }); //2ND PHASE mp = new EnemyMovementPattern(enterLeave); mp.Customize("LeaveDir", "Right"); mp.Customize("StayTime", .5f); p = new Pattern(singleHoming); p.Customize(new BulletMovementPattern(true, null, 0.5f, p, 0, 14)); p.SetSprite("Circle", "Big", "Red"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(4f, mp, p, 5, false, 0, false, .6f, 0), new ArrayList { rightTop }); mp = new EnemyMovementPattern(enterLeave); mp.Customize("LeaveDir", "Left"); mp.Customize("StayTime", 2f); p = new Pattern(singleHoming); p.Customize(new BulletMovementPattern(true, null, 0.5f, p, 0, 14)); p.SetSprite("Circle", "Big", "Red"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(15f, mp, p, 5, false, 0, false, .6f, 0), new ArrayList { leftTop }); mp = new EnemyMovementPattern(zigZag); p = new Pattern(circle); p.Customize(new BulletMovementPattern(false, "Explode", 7f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Green"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(16f, mp, p, 5, false, 0, false, .6f, 0), new ArrayList { rightTop }); mp = new EnemyMovementPattern(stopOnce); mp.Customize("LeaveDir", "Right"); p = new Pattern(circle); p.Customize(new BulletMovementPattern(false, "Explode", 7f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Green"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(17f, mp, p, 5, false, 0, false, .6f, 0), new ArrayList { topLeft }); //PHASE3 mp = new EnemyMovementPattern(stopOnce); mp.Customize("LeaveDir", "Right"); //mp.targetPos = new Vector3 (-14, 7, 0); p = new Pattern(circle); p.Customize(new BulletMovementPattern(false, "Explode", 7f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Green"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(28f, mp, p, 5, false, 0, false, .6f, 0), new ArrayList { topLeft }); mp = new EnemyMovementPattern(stopOnce); mp.Customize("LeaveDir", "Left"); mp.targetPos = new Vector3(1, 6, 0); p = new Pattern(circle); p.Customize(new BulletMovementPattern(false, "Explode", 7f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Green"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(31f, mp, p, 5, false, 0, false, .6f, 0), new ArrayList { topRight }); mp = new EnemyMovementPattern(stopOnce); mp.Customize("LeaveDir", "Right"); //mp.targetPos = new Vector3 (-14, 7, 0); p = new Pattern(circle); p.Customize("BulletCount", 10); p.Customize(new BulletMovementPattern(false, "Explode", 7f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Green"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(33f, mp, p, 3, false, 0, false, .6f, 0), new ArrayList { topRight }); mp = new EnemyMovementPattern(stopOnce); mp.Customize("LeaveDir", "Left"); mp.targetPos = new Vector3(1, 6, 0); p = new Pattern(circle); p.Customize("BulletCount", 10); p.Customize(new BulletMovementPattern(false, "Explode", 7f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Green"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(36f, mp, p, 3, false, 0, false, .6f, 0), new ArrayList { topLeft }); mp = new EnemyMovementPattern(enterLeave); mp.targetPos = new Vector3(0, 7, 0); mp.speed = 2f; mp.Customize("LeaveDir", "Right"); mp.Customize("StayTime", 2f); p = new Pattern(circle); p.Customize("BulletCount", 20); p.Customize(new BulletMovementPattern(false, "Explode", 11f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Green"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(41f, mp, p, 3, false, 40, false, .6f, 0), new ArrayList { rightTop }); mp = new EnemyMovementPattern(enterLeave); mp.targetPos = new Vector3(-14, 7, 0); mp.speed = 2f; mp.Customize("LeaveDir", "Left"); mp.Customize("StayTime", 2f); p = new Pattern(circle); p.Customize("BulletCount", 20); p.Customize(new BulletMovementPattern(false, "Explode", 11f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Yellow"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(41.5f, mp, p, 3, false, 40, false, .6f, 0), new ArrayList { leftTop }); //MID-BOSS NewWave(stageWaves, bossMid1, new ArrayList { middleTop }); //CONTD mp = new EnemyMovementPattern(stopOnce); mp.Customize("LeaveDir", "Left"); mp.targetPos = new Vector3(1, 6, 0); p = new Pattern(circle); p.Customize(new BulletMovementPattern(false, "Explode", 7f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Green"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(82f, mp, p, 5, false, 0, false, .6f, 0), new ArrayList { topRight }); mp = new EnemyMovementPattern(stopOnce); mp.Customize("LeaveDir", "Right"); //mp.targetPos = new Vector3 (-14, 7, 0); p = new Pattern(circle); p.Customize("BulletCount", 10); p.Customize(new BulletMovementPattern(false, "Explode", 7f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Green"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(87f, mp, p, 3, false, 0, false, .6f, 0), new ArrayList { topRight }); mp = new EnemyMovementPattern(stopOnce); mp.Customize("LeaveDir", "Left"); mp.targetPos = new Vector3(1, 6, 0); p = new Pattern(circle); p.Customize("BulletCount", 10); p.Customize(new BulletMovementPattern(false, "Explode", 7f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Green"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(90f, mp, p, 3, false, 0, false, .6f, 0), new ArrayList { topLeft }); mp = new EnemyMovementPattern(enterLeave); mp.targetPos = new Vector3(0, 7, 0); mp.speed = 2f; mp.Customize("LeaveDir", "Right"); mp.Customize("StayTime", 2f); p = new Pattern(circle); p.Customize("BulletCount", 20); p.Customize(new BulletMovementPattern(false, "Explode", 11f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Green"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(90f, mp, p, 3, false, 40, false, .6f, 0), new ArrayList { rightTop }); mp = new EnemyMovementPattern(enterLeave); mp.targetPos = new Vector3(-14, 7, 0); mp.speed = 2f; mp.Customize("LeaveDir", "Left"); mp.Customize("StayTime", 2f); p = new Pattern(circle); p.Customize("BulletCount", 20); p.Customize(new BulletMovementPattern(false, "Explode", 11f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Yellow"); //enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions NewWave(stageWaves, new Wave(90.5f, mp, p, 3, false, 40, false, .6f, 0), new ArrayList { leftTop }); NewWave(stageWaves, boss1, new ArrayList { middleTop }); break; case 2: // enmyCnt simul hlth isBoss, cd, hlthBars, spawnPositions p = new Pattern(singleHoming); p.Customize(new BulletMovementPattern(true, null, 0.5f, p, 0, 14)); p.SetSprite("Circle", "Big", "Red"); NewWave(stageWaves, new Wave(2f, zigZag, p, 5, false, 0, false, 1f, 0), new ArrayList { middleTop }); /*w = (Wave)stage1Waves [stage1Waves.Count - 1]; * w.shootPattern.Customize(new BulletMovementPattern (true, null, 0.5f, w.shootPattern, 0, 14)); * w.shootPattern.SetSprite("Circle", "Big", "Red"); * */ p = new Pattern(circle); p.Customize(new BulletMovementPattern(true, "Explode", 2f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Green"); NewWave(stageWaves, new Wave(3f, stopOnce, p, 6, false, 0, false, 1f, 0), new ArrayList { topRight }); //NewWave (stage1Waves, new Wave (6f, zigZag, singleHoming, 6, false, 0, false, 1f, 0), new ArrayList { middleTop }); //NewWave (stage1Waves, new Wave (10f, zigZag, circle, 6, false, 0, false, 1f, 0), new ArrayList { middleTop }); p = new Pattern(circle); p.Customize(new BulletMovementPattern(true, "Explode", 6f, p, 0, 14)); p.SetSprite("Circle", "Glow", "Yellow"); NewWave(stageWaves, new Wave(10f, stopOnce, p, 6, false, 0, false, 1f, 0), new ArrayList { topRight }); //p = new Pattern (laser); /*NewWave (stage1Waves, new Wave (25f, enterAndLeave, p, 2, true, 10, false, 1f, 0), new ArrayList { * rightTop, * leftTop * });*/ p = new Pattern(singleHoming); p.Customize(new BulletMovementPattern(true, null, 0.5f, p, 0, 14)); p.SetSprite("Circle", "Big", "Red"); NewWave(stageWaves, new Wave(15f, zigZag, p, 5, false, 0, false, 1f, 0), new ArrayList { middleTop }); NewWave(stageWaves, new Wave(20f, stopOnce, p, 6, false, 0, false, 2f, 0), new ArrayList { topRight }); NewWave(stageWaves, new Wave(boss2), new ArrayList { middleTop }); break; } }