Example #1
0
        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);
    }
Example #4
0
        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);
    }
Example #6
0
 // Use this for initialization
 void Start()
 {
     mb = GameObject.Find("Miniboss").GetComponent <Miniboss> ();
     pt = GameObject.Find("PositionTracker").GetComponent <PositionTracker> ();
 }