Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trial
brandonlind2
7,823 Pointsdoes anyone know why the last function name lootGen() isn't working?
Also is there any suggestions on how to write the lootGen() function better, besides the correction?
//ammo
function Ammo(damage,name){
this.damage=damage;
this.name=name;
}
var ammo={
f556: new Ammo(60,'5.56'),
t308: new Ammo(100,'.308'),
n9mm: new Ammo(60,'9mm'),
f45: new Ammo(100,'45acp'),
s76239: new Ammo(80,'7.62x39'),
t22: new Ammo(15,'.22'),
t300win: new Ammo(100,'300win'),
t3006: new Ammo(100, '30-06'),
s76254: new Ammo(100, '7.62x54')
};
//weapons
function MeleeWeapon(damage,speed,range){
this.damage=damage;
this.speed=speed;
this.id=0;
}
function RangedWeapon(accuracy,damage,speed,capacity,ammo,range,name){
this.accuracy=accuracy;
this.damage=damage;
this.speed=speed;
this.capacity=capacity;
this.ammo=ammo;
this.range=range;
this.name=name;
this.id=0;
this.attachments= [];
this.upgrades= [];
}
RangedWeapon.prototype.attachmentAdd= function(attachment){
this.attachments.push(attachment);}
RangedWeapon.prototype.upgradeAdd= function(upgrade){
this.upgrades.push(upgrade);}
var meleeWeapons= {
baseBallBat: new MeleeWeapon(15,30,5),
kabarKnife: new MeleeWeapon(80,80,2),
kitchenKife: new MeleeWeapon(80,75,2),
bowieKnife: new MeleeWeapon(80,70,2),
machete: new MeleeWeapon(80,40,4),
baton: new MeleeWeapon(20,50,4),
kukri: new MeleeWeapon(100,40,2),
hatchet: new MeleeWeapon(80,20,3),
dagger: new MeleeWeapon(80,80,2),
hammer: new MeleeWeapon(70,15,3),
golfClub: new MeleeWeapon(25,40,6),
karambit: new MeleeWeapon(100,100,1),
huntingKnife: new MeleeWeapon(70,100,1),
saber: new MeleeWeapon(80,40,6),
katana: new MeleeWeapon(100,40,6),
gladius: new MeleeWeapon(90,60,4),
ginunting: new MeleeWeapon(90,60,4),
krisSword: new MeleeWeapon(100,50,4),
norseSword: new MeleeWeapon(80,30,6),
armingSword: new MeleeWeapon(80,30,6),
sansibar: new MeleeWeapon(80,50,4),
krisDagger: new MeleeWeapon(100,80,2),
shovel: new MeleeWeapon(15,20,6),
sludgeHammer: new MeleeWeapon(90,10,6)
};
var rangedWeapons= {
ar15: new RangedWeapon(85,ammo.f556.damage,80,30,ammo.f556,600,'AR15'),
ar10: new RangedWeapon(85,ammo.t308.damage,65,20,ammo.t308,1000,'AR10'),
akm: new RangedWeapon(60,ammo.s76239.damage,70,30,ammo.s76239,300,'AKM'),
rem700: new RangedWeapon(100,ammo.t308.damage,30,5,ammo.t308,1000,'Remington 700'),
mauser: new RangedWeapon(100,ammo.t308.damage,30,5,ammo.t308,1000,'Mauser action rifle'),
mp5: new RangedWeapon(70,ammo.n9mm.damage,80,30,ammo.n9mm,150,'MP5'),
ump: new RangedWeapon(70,ammo.f45.damage,90,30,ammo.f45,100,'UMP'),
n1911: new RangedWeapon(70,ammo.f45.damage,60,7,ammo.f45,75,'1911 pistol'),
cz75: new RangedWeapon(80,ammo.n9mm.damage,60,16,ammo.n9mm,75,'CZ 75 pistol'),
sig226: new RangedWeapon(65,ammo.n9mm.damage,60,16,ammo.n9mm,75,'sig 226'),
glock17: new RangedWeapon(60,ammo.n9mm.damage,60,18,ammo.n9mm,75,'Glock 17'),
rem700Mag: new RangedWeapon(100,ammo.t300win.damage,30,5,ammo.t300win,1400,'Remington 700 Magnum'),
m1Garand: new RangedWeapon(100,ammo.t3006.damage,50,8,ammo.t3006,500,'M1 Garand'),
sks: new RangedWeapon(60,ammo.s76239.damage,65,10,ammo.s76239,300,'SKS rifle'),
mosinNagant: new RangedWeapon(100,ammo.s76254.damage,20,10,ammo.s76254,300,'Mosin Nagant'),
1022: new RangedWeapon(90,ammo.t22.damage,10,ammo.t22,100,'10/22 rifle'),
mkiii: new RangedWeapon(90,ammo.t22.damage,10,ammo.t22,50,'MKIII pistol')
};
function lootGen(){
function rangedGen(){
var num=Math.floor(Math.random() *2 ) + 1;
if( num == 2){
var number=0;
for( var prop in rangedWeapons){
number++
rangedWeapons[prop]['id']=number;
console.log(rangedWeapons[prop]['id']);
}
var randomNumber= Math.floor(Math.random() * Object.keys(rangedWeapons).length ) + 1;
var objArray=Object.keys(rangedWeapons);
var weapon=objArray[randomNumber];
return rangedWeapons[weapon];
}
}
else{
function meleeGen(){
var number=0;
for( var prop in meleeWeapons){
number++
meleeWeapons[prop]['id']=number;
console.log(meleeWeapons[prop]['id']);
}
var randomNumber= Math.floor(Math.random() * Object.keys(meleeWeapons).length ) + 1;
var objArray=Object.keys(meleeWeapons);
var weapon=objArray[randomNumber];
return rangedWeapons[weapon];
}
}
}
1 Answer
Steven Parker
243,656 PointsI'm not sure what you intended to do, but your function lootgen() only defines two internal functions (rangedGen() and meleeGen()) but doesn't call either. So it effectively does nothing.
Also, you have a stray else between those two function definitions causing a syntax error. (This might be a case of misplaced braces).