I’m new to JavaScript and, I need help simplifying my JavaScript code, I think i’m coding the monsters and moves a lot more than i have to if you can help, i was thinking something like YourMonster = FireMonster (that would be if they picked fire type), same with moves, for example something like (Monster.Move1 = Punch) but i don’t know how.
/************ MONSTER CLASS ************/
var Monster = new Object();
Monster.MonsterName="Demo";
Monster.Type="";
Monster.Advantage="";
Monster.Disadvantage="";
Monster.Atk=0;
Monster.Def=0;
Monster.HP=0;
Monster.SpAtk=0;
Monster.SpDef=0;
Monster.Speed=0;
Monster.Level=0;
Monster.Experience=0;
Monster.Move=[{
"MoveName":"",
"MoveType":"",
"MoveCategory":"",
"MovePower":0,
"MoveAccuracy":0,
"MovePP":0
}];
/**************** TO CONVERT JSON OBJECT TO STRING ***********/
Monster.toJSON = function(key)
{
var replacement = new Object();
for (var val in this)
{
replacement[val] = this[val]
/*if (typeof (this[val]) === 'string')
replacement[val] = this[val].toUpperCase();
else
replacement[val] = this[val]*/
}
return replacement;
};
/************* FOR COPYING OBJECTS *****************/
function shallowCopy(obj) {
var result = {};
for (var i in obj) {
result[i] = obj[i];
}
return result;
}
/************* FOR MONSTERS INTIALIZATION *****************/
var IntializeMonsters = function(YourMonsterType,YourMonster,OppMonster){
IntializeYourMonster(YourMonsterType,YourMonster);
IntializeOppMonster(OppMonster);
}
var IntializeYourMonster = function(YourMonsterType,YourMonster){
switch(YourMonsterType)
{
case 1: //FIRE
{
YourMonster['Type'] = "Fire";
YourMonster['Advantage'] = "Nature";
YourMonster['Disadvantage'] = "Water";
YourMonster['MonsterName'] = "FireType";
YourMonster['Atk'] = 63;
YourMonster['Def'] = 45;
YourMonster['SpAtk'] = 45;
YourMonster['SpDef'] = 45;
YourMonster['HP'] = 65;
YourMonster['Speed'] = 45;
YourMonster['Level'] = 5;
YourMonster['Experience'] = 1000;
}
break;
case 2: //WATER
{
YourMonster['Type'] = "Water";
YourMonster['Advantage'] = "Fire";
YourMonster['Disadvantage'] = "Nature";
YourMonster['MonsterName'] = "WaterType";
YourMonster['Atk'] = 55;
YourMonster['Def'] = 45;
YourMonster['SpAtk'] = 63;
YourMonster['SpDef'] = 45;
YourMonster['HP'] = 55;
YourMonster['Speed'] = 45;
YourMonster['Level'] = 5;
YourMonster['Experience'] = 1000;
}
break;
case 3: //NATURE
{
YourMonster['Type'] = "Nature";
YourMonster['Advantage'] = "Water";
YourMonster['Disadvantage'] = "Fire";
YourMonster['MonsterName'] = "NatureType";
YourMonster['Atk'] = 45;
YourMonster['Def'] = 55;
YourMonster['SpAtk'] = 45;
YourMonster['SpDef'] = 55;
YourMonster['HP'] = 45;
YourMonster['Speed'] = 63;
YourMonster['Level'] = 5;
YourMonster['Experience'] = 1000;
}
break;
}
};
var IntializeOppMonster = function(OppMonster){
var urMonsterOptn = Math.floor((Math.random()*3)+1);
switch(urMonsterOptn)
{
case 1: //FIRE
{
OppMonster['Type'] = "Fire";
OppMonster['Advantage'] = "Nature";
OppMonster['Disadvantage'] = "Water";
OppMonster['MonsterName'] = "FireType";
OppMonster['Atk'] = 63;
OppMonster['Def'] = 45;
OppMonster['SpAtk'] = 45;
OppMonster['SpDef'] = 45;
OppMonster['HP'] = 65;
OppMonster['Speed'] = 45;
OppMonster['Level'] = 5;
OppMonster['Experience'] = 1000;
}
break;
case 2: //WATER
{
OppMonster['Type'] = "Water";
OppMonster['Advantage'] = "Fire";
OppMonster['Disadvantage'] = "Nature";
OppMonster['MonsterName'] = "WaterType";
OppMonster['Atk'] = 55;
OppMonster['Def'] = 45;
OppMonster['SpAtk'] = 63;
OppMonster['SpDef'] = 45;
OppMonster['HP'] = 55;
OppMonster['Speed'] = 45;
OppMonster['Level'] = 5;
OppMonster['Experience'] = 1000;
}
break;
case 3: //NATURE
{
OppMonster['Type'] = "Nature";
OppMonster['Advantage'] = "Water";
OppMonster['Disadvantage'] = "Fire";
OppMonster['MonsterName'] = "NatureType";
OppMonster['Atk'] = 45;
OppMonster['Def'] = 55;
OppMonster['SpAtk'] = 45;
OppMonster['SpDef'] = 55;
OppMonster['HP'] = 45;
OppMonster['Speed'] = 63;
OppMonster['Level'] = 5;
OppMonster['Experience'] = 1000;
}
break;
}
};
/********************* FOR UPDATING MOVE **************************/
var UpdateMove = function(YourMoveType,YourMonster,OppMonster){
UpdateYourMove(YourMoveType,YourMonster);
UpdateOppMove(OppMonster);
var debug;
debug=0;
};
var UpdateYourMove=function(move,YourMonster)
{
if(move == "Punch")
{
YourMonster['Move'][0]['MoveName']="Punch";
YourMonster['Move'][0]['MoveType']="Normal";
YourMonster['Move'][0]['MoveCategory']="Physical";
YourMonster['Move'][0]['MovePower']=20;
YourMonster['Move'][0]['MoveAccuracy']=100;
YourMonster['Move'][0]['MovePP']=10;
}
else if(move == "Kick")
{
YourMonster['Move'][0]['MoveName']="Kick";
YourMonster['Move'][0]['MoveType']="Normal";
YourMonster['Move'][0]['MoveCategory']="Physical";
YourMonster['Move'][0]['MovePower']=25;
YourMonster['Move'][0]['MoveAccuracy']=100;
YourMonster['Move'][0]['MovePP']=10;
}
else if(move == "Tackle")
{
YourMonster['Move'][0]['MoveName']="Tackle";
YourMonster['Move'][0]['MoveType']="Normal";
YourMonster['Move'][0]['MoveCategory']="Physical";
YourMonster['Move'][0]['MovePower']=30;
YourMonster['Move'][0]['MoveAccuracy']=100;
YourMonster['Move'][0]['MovePP']=10;
}
else if(move == "FirePunch")
{
YourMonster['Move'][0]['MoveName']="FirePunch";
YourMonster['Move'][0]['MoveType']="Fire";
YourMonster['Move'][0]['MoveCategory']="Physical";
YourMonster['Move'][0]['MovePower']=20;
YourMonster['Move'][0]['MoveAccuracy']=100;
YourMonster['Move'][0]['MovePP']=10;
}
else if(move == "WaterPunch")
{
YourMonster['Move'][0]['MoveName']="WaterPunch";
YourMonster['Move'][0]['MoveType']="Water";
YourMonster['Move'][0]['MoveCategory']="Physical";
YourMonster['Move'][0]['MovePower']=20;
YourMonster['Move'][0]['MoveAccuracy']=100;
YourMonster['Move'][0]['MovePP']=10;
}
else if(move == "NaturePunch")
{
YourMonster['Move'][0]['MoveName']="NaturePunch";
YourMonster['Move'][0]['MoveType']="Nature";
YourMonster['Move'][0]['MoveCategory']="Physical";
YourMonster['Move'][0]['MovePower']=20;
YourMonster['Move'][0]['MoveAccuracy']=100;
YourMonster['Move'][0]['MovePP']=10;
}
};
var UpdateOppMove=function(OppMonster)
{
var oppMovieChoice = Math.floor((Math.random()*6)+1);
switch(oppMovieChoice)
{
case 1:
{
OppMonster['Move'][0]['MoveName']="Punch";
OppMonster['Move'][0]['MoveType']="Normal";
OppMonster['Move'][0]['MoveCategory']="Physical";
OppMonster['Move'][0]['MovePower']=20;
OppMonster['Move'][0]['MoveAccuracy']=100;
OppMonster['Move'][0]['MovePP']=10;
} break;
case 2:
{
OppMonster['Move'][0]['MoveName']="Kick";
OppMonster['Move'][0]['MoveType']="Normal";
OppMonster['Move'][0]['MoveCategory']="Physical";
OppMonster['Move'][0]['MovePower']=25;
OppMonster['Move'][0]['MoveAccuracy']=100;
OppMonster['Move'][0]['MovePP']=10;
}break;
case 3:
{
OppMonster['Move'][0]['MoveName']="Tackle";
OppMonster['Move'][0]['MoveType']="Normal";
OppMonster['Move'][0]['MoveCategory']="Physical";
OppMonster['Move'][0]['MovePower']=30;
OppMonster['Move'][0]['MoveAccuracy']=100;
OppMonster['Move'][0]['MovePP']=10;
}break;
case 4:
{
OppMonster['Move'][0]['MoveName']="FirePunch";
OppMonster['Move'][0]['MoveType']="Fire";
OppMonster['Move'][0]['MoveCategory']="Physical";
OppMonster['Move'][0]['MovePower']=20;
OppMonster['Move'][0]['MoveAccuracy']=100;
OppMonster['Move'][0]['MovePP']=10;
}break;
case 5:
{
OppMonster['Move'][0]['MoveName']="WaterPunch";
OppMonster['Move'][0]['MoveType']="Water";
OppMonster['Move'][0]['MoveCategory']="Physical";
OppMonster['Move'][0]['MovePower']=20;
OppMonster['Move'][0]['MoveAccuracy']=100;
OppMonster['Move'][0]['MovePP']=10;
}break;
case 6:
{
OppMonster['Move'][0]['MoveName']="NaturePunch";
OppMonster['Move'][0]['MoveType']="Nature";
OppMonster['Move'][0]['MoveCategory']="Physical";
OppMonster['Move'][0]['MovePower']=20;
OppMonster['Move'][0]['MoveAccuracy']=100;
OppMonster['Move'][0]['MovePP']=10;
}break;
}
};
/************* FOR GETTING MONSTER RELATED INFORMATION *************/
var GetAttack = function(monster)
{
return monster['Atk'];
};
var GetDefense = function(monster)
{
return monster['Def'];
};
var GetType = function(monster)
{
return monster['Type'];
};
var GetSpAttack = function(monster)
{
return monster['SpAtk'];
};
var GetSpDefense = function(monster)
{
return monster['SpDef'];
};
var GetLevel = function(monster){
return monster['Level'];
};
var GetHealth = function(monster){
return monster['HP'];
};
var SetHealth = function(monster,hp){
monster['HP'] = hp;
};
/************* FOR GETTING MOVE RELATED INFORMATION *************/
var GetMoveName = function(monster){
return monster['Move'][0]['MoveName'];
};
var GetMoveCategory = function(monster){
return monster['Move'][0]['MoveCategory'];
};
var GetMoveType = function(monster){
return monster['Move'][0]['MoveType'];
};
var GetMovePower = function(monster){
return monster['Move'][0]['MovePower'];
};
/************* FOR COMAPERING MONSTERS *************/
var CompareMonster = function(Attacker,Defender){
if (GetMoveType(Attacker) === "Fire" && GetType(Defender) === "Water")
return 0.5;
if (GetMoveType(Attacker) === "Fire" && GetType(Defender) === "Nature")
return 2.0;
if (GetMoveType(Attacker) === "Water" && GetType(Defender) === "Fire")
return 2.0;
if (GetMoveType(Attacker) === "Water" && GetType(Defender) === "Nature")
return 0.5;
if (GetMoveType(Attacker) === "Nature" && GetType(Defender) === "Fire")
return 0.5;
if (GetMoveType(Attacker) === "Nature" && GetType(Defender) === "Water")
return 2.0;
return 1; // same types
};
var SameTypeAttackBonus = function(monster)
{
if (GetMoveType(monster) == GetType(monster))
return 1.5;
else
return 1;
};