Mom: we've got collision system at home.
Collision system at home:

Ok ok, I HAD to fix this, because the current collision system had a glaring bug that was mentioned multiple times in the feedback. It was detremental to the games funfactor. Luckily I did not have to rewrite everything. I had to change 3 lines of code to improve it. It is not perfect, but it works now. For transparancy and to share my findings I decided to do a deep dive ~~hehe~~ here. Don't feel obligated to read this if you don't really care.
How the system should work:
So, I wrote this baby myself: 1. The code starts with setting a 2D array to NULL values (width * height of screen) 2. Then all the objects that have a collider will be tested in with their special ID, pixel by pixel (every pixel, remember this ~~forshaddowing~~. If there is a NULL value at the pixel spot, the collider id will be written into the 2D array. If there already is an ID there, a function will be called that "reacts" to the combination of the tested ID and the ID that is already in the 2D array. A reaction could be: playing a sound, resetting player velocity, etc.
(For example: If red is already in the array and blue is being checked, the system will see if blue overlaps red. If blue finds a red square, it will react accordingly. If blue finds an empty (white) square, it will place blue in that spot.)

It is important to know that the order of collision detections is a limitation of my implementation. For me it works, but I have to be creative. For instance, my player object has two colliders, a horizontal one to detect X-axis colissions and a vertical one for the Y-axis. Both react diffrently.
How peals were bugging stuff out
While creating pickups, I needed a way for the pickups to each find out which one is hit and delete it from the array of pickups. I could have had every pickup to have it's own ID and test them one by one. Instead I opted for another option: in my infinite wisdom I decided to modify my already tested and perfectly good colission system and shoehorn some code in that returnes true when it found a colission. All the code would still work that "reacts" to the colissions, the only change I made was that the code itself would return true and false when it collided.
(For example: The red and yellow squares are already in the array. When blue is checked and finds ANY square, it returns true and stops checking.)

This caused a problem. It reacted to ANY collision. Remember the code that checks for X and Y axis colissions? And remember how the array is filled with ID's when a NULL value is present at the tested spot? Well.. I've got news for you: When testing for the X axis, the code would write a bunch of values into the 2D array where a null was present. Next it would test for the Y axis. However... it would react to the FIRST colission it encountered, would try to react to it (y axis does not react to the x axis), but it would still return true and stop checking the rest. This was not what I intended, the could should check all of it and then return true if a colission happened. The code checks from left to right, top to bottom. So it only happened in specific ways.
(For example: The red squares are already in the array. The yellow squares are being checked on the X-axis (and since there were white squares in those spots, the system writes them into the array). When checking the Y axis, it finds the X-axis squares and stops. Ideally, it should continue checking further to find the red squares, but it doesn’t.)

How did I fix it?
I added some extra code that would return true if it found a specific ID that is provided with an parameter. Otherwise it would just keep on checking.
This little change lets me control WHICH reaction it should return true with. I can also tell it not to return true at all.
