static bool GenerateWreck_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (matchWorld (solarSys, world, 6, MATCH_PLANET)) { assert (whichNode == 0); GenerateDefault_landerReportCycle (solarSys); if (!GET_GAME_STATE (PORTAL_KEY)) { SetLanderTakeoff (); SET_GAME_STATE (PORTAL_KEY, 1); SET_GAME_STATE (PORTAL_KEY_ON_SHIP, 1); } // The Wreck cannot be "picked up". It is always on the surface. return false; } (void) whichNode; return false; }
static bool GenerateBurvixese_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { // Standard ruins report GenerateDefault_landerReportCycle (solarSys); return false; } if (matchWorld (solarSys, world, 0, 0)) { assert (!GET_GAME_STATE (BURVIXESE_BROADCASTERS) && whichNode == 0); GenerateDefault_landerReport (solarSys); SetLanderTakeoff (); SET_GAME_STATE (BURVIXESE_BROADCASTERS, 1); SET_GAME_STATE (BURV_BROADCASTERS_ON_SHIP, 1); return true; // picked up } (void) whichNode; return false; }
static bool GenerateVux_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (CurStarDescPtr->Index == MAIDENS_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { assert (!GET_GAME_STATE (SHOFIXTI_MAIDENS) && whichNode == 0); GenerateDefault_landerReport (solarSys); SetLanderTakeoff (); SET_GAME_STATE (SHOFIXTI_MAIDENS, 1); SET_GAME_STATE (MAIDENS_ON_SHIP, 1); return true; // picked up } if (CurStarDescPtr->Index == VUX_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { // Standard ruins report GenerateDefault_landerReportCycle (solarSys); return false; } (void) whichNode; return false; }
static bool GenerateUtwig_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (CurStarDescPtr->Index == UTWIG_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { // Standard ruins report GenerateDefault_landerReportCycle (solarSys); return false; } if (CurStarDescPtr->Index == BOMB_DEFINED && matchWorld (solarSys, world, 5, 1)) { assert (!GET_GAME_STATE (UTWIG_BOMB) && whichNode == 0); GenerateDefault_landerReport (solarSys); SetLanderTakeoff (); SET_GAME_STATE (UTWIG_BOMB, 1); SET_GAME_STATE (UTWIG_BOMB_ON_SHIP, 1); SET_GAME_STATE (DRUUGE_MANNER, 1); SET_GAME_STATE (DRUUGE_VISITS, 0); SET_GAME_STATE (DRUUGE_HOME_VISITS, 0); return true; // picked up } (void) whichNode; return false; }
static bool GenerateOrz_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (CurStarDescPtr->Index == TAALO_PROTECTOR_DEFINED && matchWorld (solarSys, world, 1, 2)) { assert (!GET_GAME_STATE (TAALO_PROTECTOR) && whichNode == 0); GenerateDefault_landerReport (solarSys); SetLanderTakeoff (); SET_GAME_STATE (TAALO_PROTECTOR, 1); SET_GAME_STATE (TAALO_PROTECTOR_ON_SHIP, 1); return true; // picked up } if (CurStarDescPtr->Index == ORZ_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { // Standard ruins report GenerateDefault_landerReportCycle (solarSys); return false; } (void) whichNode; return false; }
static bool GenerateDruuge_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT *whichNode) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { COUNT i; COUNT nodeI; DWORD rand_val; DWORD old_rand; old_rand = TFB_SeedRandom ( solarSys->SysInfo.PlanetInfo.ScanSeed[ENERGY_SCAN]); nodeI = 0; i = 0; do { rand_val = TFB_Random (); solarSys->SysInfo.PlanetInfo.CurPt.x = (LOBYTE (LOWORD (rand_val)) % (MAP_WIDTH - (8 << 1))) + 8; solarSys->SysInfo.PlanetInfo.CurPt.y = (HIBYTE (LOWORD (rand_val)) % (MAP_HEIGHT - (8 << 1))) + 8; if (!GET_GAME_STATE (ROSY_SPHERE)) solarSys->SysInfo.PlanetInfo.CurType = 0; else solarSys->SysInfo.PlanetInfo.CurType = 1; solarSys->SysInfo.PlanetInfo.CurDensity = 0; if (solarSys->SysInfo.PlanetInfo.ScanRetrieveMask[ENERGY_SCAN] & (1L << i)) { solarSys->SysInfo.PlanetInfo.ScanRetrieveMask[ENERGY_SCAN] &= ~(1L << i); if (!GET_GAME_STATE (ROSY_SPHERE)) { SetLanderTakeoff (); SET_GAME_STATE (ROSY_SPHERE, 1); SET_GAME_STATE (ROSY_SPHERE_ON_SHIP, 1); } } if (nodeI >= *whichNode && !(solarSys->SysInfo.PlanetInfo.ScanRetrieveMask[ENERGY_SCAN] & (1L << i))) break; ++nodeI; } while (++i < 16); *whichNode = nodeI; TFB_SeedRandom (old_rand); return true; } *whichNode = 0; return true; }
static bool GenerateSpathi_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (matchWorld (solarSys, world, 0, 0)) { assert (!GET_GAME_STATE (UMGAH_BROADCASTERS) && whichNode == 0); GenerateDefault_landerReport (solarSys); SetLanderTakeoff (); SET_GAME_STATE (UMGAH_BROADCASTERS, 1); SET_GAME_STATE (UMGAH_BROADCASTERS_ON_SHIP, 1); return true; // picked up } (void) whichNode; return false; }
static bool GenerateSupox_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { GenerateDefault_landerReportCycle (solarSys); // The artifact can be picked up from any ruin if (!GET_GAME_STATE (ULTRON_CONDITION)) { // Just picked up the Ultron from a ruin SetLanderTakeoff (); SET_GAME_STATE (ULTRON_CONDITION, 1); } return false; // do not remove the node } (void) whichNode; return false; }
static bool GenerateVault_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (matchWorld (solarSys, world, 0, 0)) { assert (whichNode == 0); if (GET_GAME_STATE (SHIP_VAULT_UNLOCKED)) { // Give the final report, "omg empty" and whatnot GenerateDefault_landerReportCycle (solarSys); } else if (GET_GAME_STATE (SYREEN_SHUTTLE_ON_SHIP)) { GenerateDefault_landerReportCycle (solarSys); SetLanderTakeoff (); SET_GAME_STATE (SHIP_VAULT_UNLOCKED, 1); SET_GAME_STATE (SYREEN_SHUTTLE_ON_SHIP, 0); SET_GAME_STATE (SYREEN_HOME_VISITS, 0); } else { GenerateDefault_landerReport (solarSys); if (!GET_GAME_STATE (KNOW_SYREEN_VAULT)) { SET_GAME_STATE (KNOW_SYREEN_VAULT, 1); } } // The Vault cannot be "picked up". It is always on the surface. return false; } (void) whichNode; return false; }
static bool GenerateDruuge_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { GenerateDefault_landerReportCycle (solarSys); // The artifact can be picked up from any ruin if (!GET_GAME_STATE (ROSY_SPHERE)) { // Just picked up the Rosy Sphere from a ruin SetLanderTakeoff (); SET_GAME_STATE (ROSY_SPHERE, 1); SET_GAME_STATE (ROSY_SPHERE_ON_SHIP, 1); } return false; // do not remove the node } (void) whichNode; return false; }
static bool GenerateVux_pickupLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (CurStarDescPtr->Index == VUX_BEAST_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { if (whichNode == 0) { // Picked up Zex' Beauty assert (!GET_GAME_STATE (VUX_BEAST)); GenerateDefault_landerReport (solarSys); SetLanderTakeoff (); SET_GAME_STATE (VUX_BEAST, 1); SET_GAME_STATE (VUX_BEAST_ON_SHIP, 1); } return true; // picked up } return GenerateDefault_pickupLife (solarSys, world, whichNode); }