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);
    }
    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);
    }