Arash
Arash

Reputation: 17

Text based rpg javascript practice project

I was told making a game would be a good way to learn how to use javascript properly so I have started a game in which thus far the player is prompted to create a hero, and then assign attributes to it based on its hero type(magerouge, necromancer, warlock, or shaman) however when I get to the point of assigning attributes it always says the user picked a necromancer no matter what class he actually chose. So in short something is wrong with my function called "defaultAssign". I hope i am posting this question properly, if i am posting incorrectly please let me know so I can try to fix it, this is my first question. Here is my code:

var heroArray = [];

var yourHero ="";

var hero = {
characterType:"",
Damage:0,
Health:0,
Mana:0,
ManaRegenRate:0,
HealthRegenRate:0,
SpecialSkills:[]
};

var mainMenu = function(){

var nameCheck = prompt("What is your Character's Name?").toUpperCase() ;
    for( var i = 0;i <= heroArray.length ; i++){

         if (nameCheck === heroArray[i]){
                alert("We have found your hero change this string later");
                runGame(heroArray[i]);  
            }


            else{

            alert("You Must Create a Champion");
        var heroName = prompt("What Will You Name Your Sorcerer!").toUpperCase;
            characterCreator(heroName);
        /*use a loop with a regular expression here to check if the name is avalible, if it is countinue, if not
         prompt the user for another name
        */
            }
        /*  run "gameSave" for particular hero
        Run the main Game function and print to the console:
        "Ah yes "+yourHerosNameHere+"," +hisOrHer+" tale echoes far and wide. We last spoke of his journey to"
        +insertCurrentCityHere+" where "+heOrShe+" "mostRecentAction"." 

        */  
        }
    }

var characterCreator = function(yourHero){
yourHero = Object.create(hero);
yourHero.characterType = prompt("Choose your Character Type:\n"+ 
    "MageRouge\n"+
    "Warlock\n"+
    "Shaman\n"+
    "Necromancer").toUpperCase;
    defaultAssign(yourHero.characterType)
}

function defaultAssign(playersType){


for (var j = 0 ; j <= 3 ; j++){
    if (playersType === "MAGEROUGE"){

        yourHero.Damage=25;
        yourHero.Health=50;
        yourHero.Mana=15;
        yourHero.ManaRegenRate=1;
        yourHero.HealthRegenRate=0.4;
        yourHero.SpecialSkills=[["pickpocket",],["sneak",],["lockpick",]];

        alert("Ahha a powerful Magerouge, choose your skills emphasis wisely,"
        +" it could determine your Destiny...");
        skillAssigner(yourHero);
        break;  
    }
    if(playersType === "WARLOCK"){

        yourHero.Damage=50;
        yourHero.Health=50;
        yourHero.Mana=25;
        yourHero.ManaRegenRate=0.6;
        yourHero.HealthRegenRate=0.3;
        yourHero.SpecialSkills=[["summonDemon",0],["bindDemon",0],["portal",0],["illusion",0]];

        alert("Ahha a powerful Warlock, choose your skills emphasis wisely,"
        +"it could determine your Destiny...");
        skillAssigner(yourHero);
        break;
    }

    if(playersType === "SHAMAN"){

        yourHero.Damage=40;
        yourHero.Health=50;
        yourHero.Mana=30;
        yourHero.ManaRegenRate=0;
        yourHero.HealthRegenRate=0.6;
        yourHero.SpecialSkills=[["weatherControl",0],["heal",0],["astralProjection",0]]

        alert("Ahha a powerful Shaman choose your skills emphasis wisely,"
        +"it could determine your Destiny...");
        skillAssigner(yourHero);
        break;  
    }

    else if(playersType === "NECROMANCER") {

        yourHero.Damage=60;
        yourHero.Health=50;
        yourHero.Mana=20;
        yourHero.ManaRegenRate=0.8;
        yourHero.HealthRegenRate=0.4;
        yourHero.SpecialSkills=[["raiseDead",0],["petrify",0],["soulSap",0]];

        alert("Ahha a powerful Necromancer choose your skills emphasis wisely,"
        +"it could determine your Destiny...");

        skillAssigner(yourHero);

        break;

        }

}   

}
/*
create an array of hometowns for the main character to choose from

*/


function skillAssigner(yourHero){

for (var s = 0;s<3;s++){
var p = 0;  
while( p < 10 ){
    var n = prompt("How many points will you spend on "+yourHero.SpecialSkills[s]+"?");
    yourHero.SpecialSkills[s][1] = n;   
    p +=n;
}
}
}



mainMenu();

Upvotes: 1

Views: 263

Answers (1)

Interrobang
Interrobang

Reputation: 17434

Get rid of the else on the line where it checks if the player's type is a Necromancer. It is not necessary.

The for loop is not necessary inside the function defaultAssign (and with its removal, nor are the breaks.)

Finally, toUpperCase is a function so you must invoke it with parentheses, toUpperCase().

Resolving these issues gets your code to work.

You should work on formatting your code (or get an editor that does it for you) to increase its readability-- this will help you find errors.

Upvotes: 1

Related Questions