private void addSkills9() { EnemyTimer setOnPlayer = EnemyTimer.Create(() => true, 9f, -1, skillTrans); setOnPlayer.addSetSkill((Orb o) => o.getOrbValue() == ORB_VALUE.ZERO ? ORB_VALUE.NINE : o.getOrbValue()); skillList.Add(setOnPlayer); EnemyBoardSkill setFivesToNullify = EnemyBoardSkill.MarkIfSkill(() => GameController.Instance.isTurnMod(4, 2), (Orb o) => o.getOrbValue() == ORB_VALUE.FIVE, 0.1f, skillTrans); setFivesToNullify.addSetSkill(0.1f, (Orb o) => ORB_VALUE.NULLIFY); skillList.Add(setFivesToNullify); Func <bool> wtu = () => { List <Enemy> eList = GameController.Instance.getCurrEnemies(); foreach (Enemy e in eList) { if (e.getState().number == 6) { return(false); } } return(GameController.Instance.isTurnMod(4, 1)); }; EnemyBoardSkill setNinesToStop = EnemyBoardSkill.MarkIfSkill(wtu, (Orb o) => o.getOrbValue() == ORB_VALUE.NINE, 0.1f, skillTrans); setNinesToStop.addSetSkill(0.1f, (Orb o) => ORB_VALUE.STOP); skillList.Add(setNinesToStop); Func <Orb, bool> allOrbsGreaterThan = (Orb o) => { int range = 6 - (3 - GameController.Instance.getCurrEnemies().Count); return(o.isDigit() && o.getIntValue() >= range); }; EnemyBoardSkill markGreater = EnemyBoardSkill.MarkIfSkill(() => GameController.Instance.isTurnMod(3, 2), allOrbsGreaterThan, 0.1f, skillTrans); skillList.Add(markGreater); Func <int> getDmg = () => { List <Orb> markedOrbs = Board.Instance.getAllMarkedOrbsBy(getSkillID(markGreater, markGreater.getActivatedTurn()), null); int sum = 0; foreach (Orb o in markedOrbs) { if (o.isDigit()) { sum += o.getIntValue(); } } return(sum * -3); }; skillList.Add(EnemyAttack.Create(() => GameController.Instance.isTurnMod(3, 2), false, () => Player.Instance.gameObject, getDmg, skillTrans)); }
private void addSkills6() { EnemyTimer rmvOnPlayer = EnemyTimer.Create(() => true, 6f, -1, skillTrans); rmvOnPlayer.addRmvSkill((Orb o) => o.isDigit() && o.isEven()); skillList.Add(rmvOnPlayer); Func <ORB_VALUE, OrbSpawnRate> decreasedEvens = (ORB_VALUE orbVal) => { if ((int)orbVal <= 9) { return((int)orbVal % 2 == 0 ? OrbSpawnRate.DECREASED : OrbSpawnRate.INCREASED); } return(Board.getDefaultOrbSpawnRates()[(int)orbVal]); }; skillList.Add(EnemyOrbSkill.Create(() => true, decreasedEvens, -1, skillTrans)); Func <bool> wtu = () => GameController.Instance.getCurrEnemies().Count == 1 ? GameController.Instance.isTurnMod(2) : false; EnemyBoardSkill set369ToEmpty = EnemyBoardSkill.MarkIfSkill(wtu, (Orb o) => o.getOrbValue() == ORB_VALUE.THREE || o.getOrbValue() == ORB_VALUE.SIX || o.getOrbValue() == ORB_VALUE.NINE, 0.1f, skillTrans); set369ToEmpty.addSetSkill(0.1f, (Orb o) => ORB_VALUE.EMPTY); skillList.Add(set369ToEmpty); EnemyBoardSkill markAll = EnemyBoardSkill.MarkIfSkill(() => GameController.Instance.isTurnMod(3, 1), (Orb o) => true, 0.1f, skillTrans); skillList.Add(markAll); Func <int> getDmg = () => { List <Orb> markedOrbs = Board.Instance.getAllMarkedOrbsBy(getSkillID(markAll, markAll.getActivatedTurn()), null); int sum = 0; foreach (Orb o in markedOrbs) { if (o.isDigit()) { sum += o.getIntValue(); } } return(sum * -6); }; skillList.Add(EnemyAttack.Create(() => GameController.Instance.isTurnMod(3, 1), false, () => Player.Instance.gameObject, getDmg, skillTrans)); }
private void addSkills81() { Func <bool> wtu0 = () => GameController.Instance.getCurrEnemies().Count == 2 ? GameController.Instance.isTurnMod(4, 1) : GameController.Instance.isTurnMod(2); EnemyBoardSkill onesToStop = EnemyBoardSkill.MarkIfSkill(wtu0, (Orb o) => o.getOrbValue() == ORB_VALUE.ONE, 0.1f, skillTrans); onesToStop.addSetSkill(0.1f, (Orb o) => ORB_VALUE.STOP); skillList.Add(onesToStop); Func <bool> wtu1 = () => GameController.Instance.getCurrEnemies().Count == 2 ? GameController.Instance.isTurnMod(4, 3) : GameController.Instance.isTurnMod(2, 1); EnemyBoardSkill sevensToNullify = EnemyBoardSkill.MarkIfSkill(wtu1, (Orb o) => o.getOrbValue() == ORB_VALUE.SEVEN, 0.1f, skillTrans); sevensToNullify.addSetSkill(0.1f, (Orb o) => ORB_VALUE.NULLIFY); skillList.Add(sevensToNullify); Func <bool> wtu2 = () => GameController.Instance.getCurrEnemies().Count == 2 ? GameController.Instance.isTurnMod(2, 1) : true; Func <Orb, bool> is369 = (Orb o) => o.isUnmarked() && (o.getOrbValue() == ORB_VALUE.THREE || o.getOrbValue() == ORB_VALUE.SIX || o.getOrbValue() == ORB_VALUE.NINE); EnemyBoardSkill mark369 = EnemyBoardSkill.MarkIfSkill(wtu2, is369, 0.1f, skillTrans); mark369.addMarkRemainSkill(); skillList.Add(mark369); Func <int> getDmg = () => { List <Orb> markedOrbs = Board.Instance.getAllMarkedOrbsBy(getSkillID(mark369, mark369.getLastActivatedTurn()), null); int sum = 0; foreach (Orb o in markedOrbs) { sum += o.getIntValue(); } return(-sum * markedOrbs.Count); }; Func <bool> wtu2a = () => GameController.Instance.getCurrEnemies().Count == 2 ? GameController.Instance.isTurnMod(2) : true; skillList.Add(EnemyAttack.Create(wtu2a, false, () => Player.Instance.gameObject, getDmg, skillTrans)); Func <Orb, bool> markedBy369 = (Orb o) => o.getIsMarkedBy(getSkillID(mark369, mark369.getLastActivatedTurn())); EnemyBoardSkill clear369 = EnemyBoardSkill.MarkIfSkill(wtu2a, markedBy369, 0, skillTrans); clear369.addRmvSkill(0.1f); skillList.Add(clear369); Func <bool> wtu3 = () => GameController.Instance.getCurrEnemies().Count == 2 ? GameController.Instance.isTurnMod(2, 1) : false; EnemyBoardSkill markPivot = null; Func <Orb, bool> getPivot = (Orb o) => { for (int c = 0; c < Board.COLUMNS; c++) { for (int r = 0; r < Board.ROWS; r++) { if (Board.Instance.getOrb(c, r).getIsMarkedBy(getSkillID(markPivot, markPivot.getActivatedTurn()))) { return(false); } } } System.Random rand = new System.Random(getRandomSeedByTurn(markPivot)); List <Orb> potentialOrbs = new List <Orb>(); for (int c = 0; c < Board.COLUMNS; c++) { for (int r = 0; r < Board.ROWS; r++) { if (Board.Instance.getOrb(c, r).isUnmarked()) { potentialOrbs.Add(Board.Instance.getOrb(c, r)); } } } int pivotIndex = rand.Next(potentialOrbs.Count); if (potentialOrbs.Count > 0 && o == potentialOrbs[pivotIndex]) { return(true); } return(false); }; markPivot = EnemyBoardSkill.MarkIfSkill(wtu3, getPivot, 0.1f, skillTrans, 0); markPivot.addMarkRemainSkill(); skillList.Add(markPivot); Func <bool> wtu3a = () => GameController.Instance.getCurrEnemies().Count == 2 ? GameController.Instance.isTurnMod(2) : false; Func <List <Vector2Int> > plusPivot = () => { List <Vector2Int> plus = new List <Vector2Int>(); Vector2Int pivot = new Vector2Int(-1, -1); for (int c = 0; c < Board.COLUMNS; c++) { for (int r = 0; r < Board.ROWS; r++) { if (Board.Instance.getOrb(c, r).getIsMarkedBy(getSkillID(markPivot, markPivot.getLastActivatedTurn()))) { pivot = new Vector2Int(c, r); } } } if (pivot.x != -1 && pivot.y != -1) { bool reachedEnd = false; for (int offset = 0; !reachedEnd; offset++) { reachedEnd = true; if (pivot.x + offset < Board.COLUMNS) { plus.Add(new Vector2Int(pivot.x + offset, pivot.y)); reachedEnd = false; } if (pivot.y + offset < Board.ROWS) { plus.Add(new Vector2Int(pivot.x, pivot.y + offset)); reachedEnd = false; } if (pivot.x - offset >= 0) { plus.Add(new Vector2Int(pivot.x - offset, pivot.y)); reachedEnd = false; } if (pivot.y - offset >= 0) { plus.Add(new Vector2Int(pivot.x, pivot.y - offset)); reachedEnd = false; } } } plus = plus.Distinct().ToList(); return(plus); }; EnemyBoardSkill decPlusPivot = EnemyBoardSkill.MarkOrderSkill(wtu3a, plusPivot, 0.1f, skillTrans); decPlusPivot.addRmvSkill(0.1f); skillList.Add(decPlusPivot); Func <bool> wtu4 = () => GameController.Instance.getCurrEnemies().Count != 2; EnemyBoardSkill decPlus = EnemyBoardSkill.MarkOrderSkill(wtu4, null, 0.1f, skillTrans); decPlus.addRmvSkill(0.1f); skillList.Add(decPlus); }
// to-do: go ham on turns when minibosses die for attack and skill 3 private void addSkills3() { EnemyTimer decOnPlayer = EnemyTimer.Create(() => true, 3f, -1, skillTrans); decOnPlayer.addIncSkill((Orb o) => - 1); skillList.Add(decOnPlayer); EnemyBoardSkill setFoursToNullify = EnemyBoardSkill.MarkIfSkill(() => GameController.Instance.isTurnMod(4), (Orb o) => o.getOrbValue() == ORB_VALUE.FOUR, 0.1f, skillTrans); setFoursToNullify.addSetSkill(0.1f, (Orb o) => ORB_VALUE.NULLIFY); skillList.Add(setFoursToNullify); Func <bool> wtu = () => { List <Enemy> eList = GameController.Instance.getCurrEnemies(); foreach (Enemy e in eList) { if (e.getState().number == 6) { return(false); } } return(GameController.Instance.isTurnMod(4, 3)); }; EnemyBoardSkill setHealsToAnti = EnemyBoardSkill.MarkIfSkill(wtu, (Orb o) => o.getOrbValue() == ORB_VALUE.ZERO, 0.1f, skillTrans); setHealsToAnti.addSetSkill(0.1f, (Orb o) => ORB_VALUE.POISON); skillList.Add(setHealsToAnti); Func <Orb, bool> allOrbsLessThan = (Orb o) => { int range = 3 + (3 - GameController.Instance.getCurrEnemies().Count); return(o.isDigit() && o.getIntValue() <= range); }; EnemyBoardSkill markLess = EnemyBoardSkill.MarkIfSkill(() => GameController.Instance.isTurnMod(3), allOrbsLessThan, 0.1f, skillTrans); skillList.Add(markLess); Func <int> getDmg = () => { List <Orb> markedOrbs = Board.Instance.getAllMarkedOrbsBy(getSkillID(markLess, markLess.getActivatedTurn()), null); int sum = 0; foreach (Orb o in markedOrbs) { if (o.isDigit()) { sum += o.getIntValue(); } } return(sum * -9); }; skillList.Add(EnemyAttack.Create(() => GameController.Instance.isTurnMod(3), false, () => Player.Instance.gameObject, getDmg, skillTrans)); }
private void addSkills64() { Func <bool> wtu0 = () => GameController.Instance.getCurrEnemies().Count == 2 ? GameController.Instance.isTurnMod(4) : GameController.Instance.isTurnMod(2); EnemyBoardSkill healsToAnti = EnemyBoardSkill.MarkIfSkill(wtu0, (Orb o) => o.getOrbValue() == ORB_VALUE.ZERO, 0.1f, skillTrans); healsToAnti.addSetSkill(0.1f, (Orb o) => ORB_VALUE.POISON); skillList.Add(healsToAnti); Func <bool> wtu1 = () => GameController.Instance.getCurrEnemies().Count == 2 ? GameController.Instance.isTurnMod(4, 2) : GameController.Instance.isTurnMod(2, 1); EnemyBoardSkill fivesToEmpty = EnemyBoardSkill.MarkIfSkill(wtu1, (Orb o) => o.getOrbValue() == ORB_VALUE.FIVE, 0.1f, skillTrans); fivesToEmpty.addSetSkill(0.1f, (Orb o) => ORB_VALUE.EMPTY); skillList.Add(fivesToEmpty); Func <bool> wtu2 = () => GameController.Instance.getCurrEnemies().Count == 2 ? GameController.Instance.isTurnMod(2) : true; Func <Orb, bool> is248 = (Orb o) => o.isUnmarked() && (o.getOrbValue() == ORB_VALUE.TWO || o.getOrbValue() == ORB_VALUE.FOUR || o.getOrbValue() == ORB_VALUE.EIGHT); EnemyBoardSkill mark248 = EnemyBoardSkill.MarkIfSkill(wtu2, is248, 0.1f, skillTrans); mark248.addMarkRemainSkill(); skillList.Add(mark248); Func <int> getDmg = () => { List <Orb> markedOrbs = Board.Instance.getAllMarkedOrbsBy(getSkillID(mark248, mark248.getLastActivatedTurn()), null); int sum = 0; foreach (Orb o in markedOrbs) { sum += o.getIntValue(); } return(-sum * markedOrbs.Count); }; Func <bool> wtu2a = () => GameController.Instance.getCurrEnemies().Count == 2 ? GameController.Instance.isTurnMod(2, 1) : true; skillList.Add(EnemyAttack.Create(wtu2a, false, () => Player.Instance.gameObject, getDmg, skillTrans)); Func <Orb, bool> markedBy248 = (Orb o) => o.getIsMarkedBy(getSkillID(mark248, mark248.getLastActivatedTurn())); EnemyBoardSkill clear248 = EnemyBoardSkill.MarkIfSkill(wtu2a, markedBy248, 0, skillTrans); clear248.addRmvSkill(0.1f); skillList.Add(clear248); Func <bool> wtu3 = () => GameController.Instance.getCurrEnemies().Count == 2 ? GameController.Instance.isTurnMod(2) : false; EnemyBoardSkill markPivot = null; Func <Orb, bool> getPivot = (Orb o) => { for (int c = 0; c < Board.COLUMNS; c++) { for (int r = 0; r < Board.ROWS; r++) { if (Board.Instance.getOrb(c, r).getIsMarkedBy(getSkillID(markPivot, markPivot.getActivatedTurn()))) { return(false); } } } System.Random rand = new System.Random(getRandomSeedByTurn(markPivot)); List <Orb> potentialOrbs = new List <Orb>(); for (int c = 0; c < Board.COLUMNS; c++) { for (int r = 0; r < Board.ROWS; r++) { if (Board.Instance.getOrb(c, r).isUnmarked()) { potentialOrbs.Add(Board.Instance.getOrb(c, r)); } } } int pivotIndex = rand.Next(potentialOrbs.Count); if (potentialOrbs.Count > 0 && o == potentialOrbs[pivotIndex]) { return(true); } return(false); }; markPivot = EnemyBoardSkill.MarkIfSkill(wtu3, getPivot, 0.1f, skillTrans, 0); markPivot.addMarkRemainSkill(); skillList.Add(markPivot); Func <bool> wtu3a = () => GameController.Instance.getCurrEnemies().Count == 2 ? GameController.Instance.isTurnMod(2, 1) : false; Func <List <Vector2Int> > plusPivot = () => { List <Vector2Int> plus = new List <Vector2Int>(); Vector2Int pivot = new Vector2Int(-1, -1); for (int c = 0; c < Board.COLUMNS; c++) { for (int r = 0; r < Board.ROWS; r++) { if (Board.Instance.getOrb(c, r).getIsMarkedBy(getSkillID(markPivot, markPivot.getLastActivatedTurn()))) { pivot = new Vector2Int(c, r); } } } if (pivot.x != -1 && pivot.y != -1) { bool reachedEnd = false; for (int offset = 0; !reachedEnd; offset++) { reachedEnd = true; if (pivot.x + offset < Board.COLUMNS) { plus.Add(new Vector2Int(pivot.x + offset, pivot.y)); reachedEnd = false; } if (pivot.y + offset < Board.ROWS) { plus.Add(new Vector2Int(pivot.x, pivot.y + offset)); reachedEnd = false; } if (pivot.x - offset >= 0) { plus.Add(new Vector2Int(pivot.x - offset, pivot.y)); reachedEnd = false; } if (pivot.y - offset >= 0) { plus.Add(new Vector2Int(pivot.x, pivot.y - offset)); reachedEnd = false; } } } plus = plus.Distinct().ToList(); return(plus); }; EnemyBoardSkill clearPlusPivot = EnemyBoardSkill.MarkOrderSkill(wtu3a, plusPivot, 0.1f, skillTrans); clearPlusPivot.addRmvSkill(0.1f); skillList.Add(clearPlusPivot); Func <bool> wtu4 = () => GameController.Instance.getCurrEnemies().Count != 2; EnemyBoardSkill clearPlus = EnemyBoardSkill.MarkOrderSkill(wtu4, null, 0.1f, skillTrans); clearPlus.addRmvSkill(0.1f); skillList.Add(clearPlus); }