Your usage of the alertify plugin is wrong, it the prompt method is an asynchronous method and all the actions using that have to be done in the callback.
A minified version is as follows
var options = ["STRENGTH", "SPEED", "SMARTS"];
alertify.alert("Before we begin our journey, let's learn a little bit about you.");
alertify.prompt("What is your name?", function (e, str) {
if (e) {
var user = str.toUpperCase();
alertify.prompt("So " + user + ", what is your greatest ability, STRENGTH, SPEED, or SMARTS?", function (e, str) {
if (e) {
var best = str.toUpperCase();
if (best === "STRENGTH" || best === "SPEED" || best === "SMARTS") {
var offset = options.indexOf(best);
if (offset != -1) {
options.splice(offset, 1);
}
alertify.alert("Great! So " + best + " is yor greatest ability.");
} else {
}
} else {
}
}, "Greatest Ability");
} else {
}
}, "Name");
Demo: Fiddle