public static void Tick() { if (World.Act4.Harvest.IsCurrentArea) { if (_currentMiniboss != null) { var name = _currentMiniboss.Name; Monster mob = null; if (name == ShavronneName) { mob = Shavronne; } else if (name == DoedreName) { mob = Doedre; } else if (name == MaligaroName) { mob = Maligaro; } if (mob == null) { return; } if (mob.IsDead) { _currentMiniboss.Killed = true; _currentMiniboss = null; if (Minibosses.All(m => m.Killed)) { _tpAfterLastMiniBossKilled = true; } return; } var pos = mob.WalkablePosition(); if (_currentMiniboss.Position == null) { GlobalLog.Warn($"[EternalNightmare] Registering {pos}"); } _currentMiniboss.Position = pos; } } }
IEnumerator Shooting() { if (Input.GetMouseButtonDown(0)) { animator.SetTrigger("Shoot"); RaycastHit2D hitInfo = Physics2D.Raycast(firePoint.position, firePoint.up); GetComponent <AudioSource>().PlayOneShot(shooting); if (hitInfo) { lr.SetPosition(0, firePoint.position); lr.SetPosition(1, hitInfo.point); enemyA enemyA = hitInfo.transform.GetComponent <enemyA>(); if (enemyA != null) { enemyA.DestroySelf(); } enemyB enemyB = hitInfo.transform.GetComponent <enemyB>(); if (enemyB != null) { enemyB.DestroySelf(); } bullets bullet = hitInfo.transform.GetComponent <bullets>(); if (bullet != null) { bullet.DestroySelf(); } Miniboss miniboss = hitInfo.transform.GetComponent <Miniboss>(); if (miniboss != null) { miniboss.TakeDamage(1); } Boss boss = hitInfo.transform.GetComponent <Boss>(); if (boss != null) { boss.TakeDamage(1); } } else { lr.SetPosition(0, firePoint.position); lr.SetPosition(1, firePoint.position + firePoint.up * 100); } lr.enabled = true; yield return(0.02f); lr.enabled = false; } }
public override bool Use(Player player) { foreach (Ability effect in player.abilities) { effect.OnConsumeItem(player, this); } Vector2i tilePos = MapManager.instance.GetMapTileAtPoint(player.Position); MinibossData data = new MinibossData(tilePos.x, tilePos.y, minibossType); Miniboss spawn = MapManager.instance.AddMinibossEntity(data); spawn.SetHostility(Hostility.Friendly); return(true); //player.Inventory.RemoveItem(index); }
private static async Task KillMinibosses() { if (_currentMiniboss == null) { _currentMiniboss = Minibosses.Where(b => !b.Killed).OrderBy(b => b.TgtPosition.DistanceSqr).FirstOrDefault(); } // ReSharper disable once PossibleNullReferenceException var pos = _currentMiniboss.Position; if (pos != null) { await Helpers.MoveAndWait(pos); return; } _currentMiniboss.TgtPosition.Come(); }
public Miniboss AddMinibossEntity(MinibossData data) { MinibossPrototype proto = MinibossDatabase.GetMinibossPrototype(data.type); Miniboss temp = null; switch (proto.minibossType) { case MinibossType.BogBeast: temp = new BogBeast(proto); temp.Spawn(GetMapTilePosition(data.TilePosition)); break; case MinibossType.Salamander: temp = new Salamander(proto); temp.Spawn(GetMapTilePosition(data.TilePosition)); break; case MinibossType.IceShard: temp = new IceShard(proto); temp.Spawn(GetMapTilePosition(data.TilePosition)); break; case MinibossType.Shroombo: temp = new Shroombo(proto); temp.Spawn(GetMapTilePosition(data.TilePosition)); break; case MinibossType.GiantCrab: temp = new GiantCrab(proto); temp.Spawn(GetMapTilePosition(data.TilePosition)); break; case MinibossType.Voidbeast: temp = new Voidbeast(proto); temp.Spawn(GetMapTilePosition(data.TilePosition)); break; } return(temp); }
// Use this for initialization void Start() { mb = GameObject.Find("Miniboss").GetComponent <Miniboss> (); pt = GameObject.Find("PositionTracker").GetComponent <PositionTracker> (); }