Вы немного недооценили это. Он остановлен, потому что weapon
сам undefined
, и, следовательно, name
не может быть получена из него. Измените свое условие на это:
if (coopSchedule.details[0].weapons[0].weapon == undefined) {
var currentWeapon1 = coopSchedule.details[0].weapons[0].coop_special_weapon.name;
} else {
var currentWeapon1 = coopSchedule.details[0].weapons[0].weapon.name;
}