Weirdness with JS API and Research (or is it just me?)
Posted: 31 Jul 2013, 07:15
I have been working on implementing a workaround for research topics not unlocking as they should in Cam 4. All seemed to be going well until I got a little more complex with my code.
The subroutine I've been working on is as follows:
It was working until I got two or three branches in .. and the next test run later, it refused to work past that. The game simply does not execute the code past the second branch, when it should.
Yes, it's a bit hacky. No, I probably shouldn't be doing things this way. It's a workaround, as stated.
Any idea what could be going wrong? Guidance on this problem would be very much appreciated.
The subroutine I've been working on is as follows:
Code: Select all
function eventResearched(research, structure)
{
if (structure.player == selectedPlayer && research.name == "R-Sys-Sensor-Turret01" &&research.done == true) // Sensors path
{
enableResearch("R-Sys-Sensor-TurretHvy", selectedPlayer);
enableResearch("R-Sys-Sensor-Tower01", selectedPlayer);
{
if (structure.player == selectedPlayer && research.name == "R-Sys-Sensor-TurretHvy" && research.done == true)
{
enableResearch("R-Sys-Sensor-Tower02", selectedPlayer);
{
if (structure.player == selectedPlayer && research.name == "R-Sys-Sensor-Tower02" && research.done == true)
{
enableResearch("R-Sys-Sensor-Upgrade01", selectedPlayer);
{
if (structure.player == selectedPlayer && research.name == "R-Sys-Sensor-Upgrade01" && research.done == true)
{
enableResearch("R-Sys-RadarDetector01", selectedPlayer); // Make sure their structures are unlocked after researching each one!
enableResearch("R-Sys-CBSensor-Turret01", selectedPlayer);
enableResearch("R-Sys-VTOLStrike-Turret01", selectedPlayer);
enableResearch("R-Sys-VTOLCBS-Turret01", selectedPlayer);
enableResearch("R-Sys-Sensor-Upgrade02", selectedPlayer);
{
if (structure.player == selectedPlayer && research.name == "R-Sys-Sensor-Upgrade02" && research.done == true)
{
enableResearch("R-Sys-RadarDetectorHvy", selectedPlayer);
enableResearch("R-Sys-CBSensor-TurretHvy", selectedPlayer);
enableResearch("R-Sys-VTOLStrike-TurretHvy", selectedPlayer);
enableResearch("R-Sys-VTOLCBS-TurretHvy", selectedPlayer);
enableResearch("R-Sys-Sensor-Upgrade03", selectedPlayer);
{
if (structure.player == selectedPlayer && research.name == "R-Sys-Sensor-Upgrade03" && research.done == true)
{
enableResearch("R-Sys-Sensor-WS", selectedPlayer);
{
if (structure.player == selectedPlayer && research.name == "R-Sys-Sensor-WS" && research.done == true)
{
enableResearch("R-Sys-Sensor-WSTower", selectedPlayer);
{
if (structure.player == selectedPlayer && research.name == "R-Sys-Sensor-WSTower" && research.done == true)
{
enableResearch("R-Sys-Sensor-UpLink", selectedPlayer);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (structure.player == selectedPlayer && research.name == "R-Defense-TankTrap01" && research.done == true) // Walls and Construction items
{
enableResearch("R-Defense-TowerConst01", selectedPlayer);
enableResearch("R-Struc-Materials01", selectedPlayer);
{
if (structure.player == selectedPlayer && research.name == "R-Defense-TowerConst01" && research.done == true)
{
enableResearch("R-Defense-HardcreteWall", selectedPlayer);
{
if (structure.player == selectedPlayer && research.name == "R-Defense-HardcreteWall" && research.done == true)
{
enableResearch("R-Defense-HardcreteGate", selectedPlayer);
enableResearch("R-Defense-TowerConst02", selectedPlayer);
enableResearch("R-Defense-BunkerConst01", selectedPlayer);
enableResearch("R-Defense-WallTowerConst01", selectedPlayer);
enableResearch("R-Defense-EmplConst01", selectedPlayer);
enableResearch("R-Defense-TankTrapGate", selectedPlayer);
enableResearch("R-Defense-WallUpgrade01", selectedPlayer);
{
if (structure.player == selectedPlayer && research.name == "R-Defense-WallUpgrade03" && research.done == true)
{
enableResearch("R-Defense-SupercreteWall", selectedPlayer);
{
if (structure.player == selectedPlayer && research.name == "R-Defense-SupercreteWall" && research.done == true)
{
enableResearch("R-Defense-SupercreteGate", selectedPlayer);
enableResearch("R-Defense-TowerConst03", selectedPlayer);
enableResearch("R-Defense-EmplConst02", selectedPlayer);
enableResearch("R-Defense-WallTowerConst02", selectedPlayer);
enableResearch("R-Defense-BunkerConst02", selectedPlayer);
enableResearch("R-Defense-SuperEmplConst01", selectedPlayer);
enableResearch("R-Defense-FortConst01", selectedPlayer);
enableResearch("R-Defense-WallUpgrade04", selectedPlayer);
enableResearch("R-Struc-Materials04", selectedPlayer);
}
}
}
}
}
}
}
}
}
if (structure.player == selectedPlayer && research.name == "R-Wpn-Artillery-ROF03" && research.done == true) // Mortars
{
enableResearch("R-Wpn-Mortar3", selectedPlayer);
{
if (structure.player == selectedPlayer && research.name == "R-Defense-Empl-MortarRot" && research.done == true)
{
enableResearch("R-Wpn-Mortar-Ramjet", selectedPlayer);
enableResearch("R-Wpn-Artillery-Accuracy04", selectedPlayer);
enableResearch("R-Wpn-Artillery-Damage04", selectedPlayer);
enableResearch("R-Wpn-Artillery-ROF04", selectedPlayer);
}
}
}
// Rockets
// Machineguns
// Cannons
// Flamers
// Arty
// Lasers
// Railguns
// Special Weapons
}
Yes, it's a bit hacky. No, I probably shouldn't be doing things this way. It's a workaround, as stated.
Any idea what could be going wrong? Guidance on this problem would be very much appreciated.