Cant stop code from being run after reset

These variables -
int lastButtonState; // variable to store last button state probably should be int lastButtonState = 0;
byte lastbuttonState2 = 0; // new global variable - I think you created this one, and thought you used it when you really just wanted to initialize lastButtonState.
byte buttonState1 = 0;
byte buttonState2 = 0;

and this little bit of code -

buttonState1 = digitalRead(buttonPin); // so the button isn't pressed here
delay(20);
buttonState2 = digitalRead(buttonPin); // and the button isn't pressed here

if(buttonState1 == buttonState2) { // then this is true because not pressed == not pressed
if(buttonState2 != lastButtonState) { // and since lastButtonState was never initialized we don't know what it might be so this can be true also.
activate(); // and activate() runs because every condition passed.
lastButtonState = buttonState2;
}
}