private bool CanTryToSummon() { if (Undead.count < maxArmySize()) { var ch = FindChar(CityBossLevel.Pedestal(_nextPedestal)); return(ch == this || ch == null); } return(false); }
public override bool Attack(Character enemy) { if (CanTryToSummon() && pos == CityBossLevel.Pedestal(_nextPedestal)) { Summon(); return(true); } if (FindChar(CityBossLevel.Pedestal(_nextPedestal)) == enemy) { _nextPedestal = !_nextPedestal; } return(base.Attack(enemy)); }
public static Level NewLevel() { Level = null; Actor.Clear(); Depth++; if (Depth > Statistics.DeepestFloor) { Statistics.DeepestFloor = Depth; if (Statistics.QualifiedForNoKilling) { Statistics.CompletedWithNoKilling = true; } else { Statistics.CompletedWithNoKilling = false; } } Arrays.Fill(Visible, false); Level level; switch (Depth) { case 1: case 2: case 3: case 4: level = new SewerLevel(); break; case 5: level = new SewerBossLevel(); break; case 6: case 7: case 8: case 9: level = new PrisonLevel(); break; case 10: level = new PrisonBossLevel(); break; case 11: case 12: case 13: case 14: level = new CavesLevel(); break; case 15: level = new CavesBossLevel(); break; case 16: case 17: case 18: case 19: level = new CityLevel(); break; case 20: level = new CityBossLevel(); break; case 21: level = new LastShopLevel(); break; case 22: case 23: case 24: level = new HallsLevel(); break; case 25: level = new HallsBossLevel(); break; case 26: level = new LastLevel(); break; default: level = new DeadEndLevel(); Statistics.DeepestFloor--; break; } level.Create(); Statistics.QualifiedForNoKilling = !BossLevel(); return(level); }
protected internal override bool CanAttack(Character enemy) { return(CanTryToSummon() ? pos == CityBossLevel.Pedestal(_nextPedestal) : Level.Adjacent(pos, enemy.pos)); }
protected internal override bool GetCloser(int target) { return(CanTryToSummon() ? base.GetCloser(CityBossLevel.Pedestal(_nextPedestal)) : base.GetCloser(target)); }