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.