took a little longer than I expected, but i think it still came out great! sorry for the complicated code
all art by me credits to @GazerOfStars for the characters!