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 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 COUNT GenerateVux_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (CurStarDescPtr->Index == MAIDENS_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { // This check is redundant since the retrieval bit will keep the // node from showing up again if (GET_GAME_STATE (SHOFIXTI_MAIDENS)) { // already picked up return 0; } solarSys->SysInfo.PlanetInfo.CurPt.x = MAP_WIDTH / 3; solarSys->SysInfo.PlanetInfo.CurPt.y = MAP_HEIGHT * 5 / 8; return 1; // only matters when count is requested } if (CurStarDescPtr->Index == VUX_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { return GenerateDefault_generateRuins (solarSys, whichNode); } return 0; }
static COUNT GenerateUtwig_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (CurStarDescPtr->Index == UTWIG_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { return GenerateDefault_generateRuins (solarSys, whichNode); } if (CurStarDescPtr->Index == BOMB_DEFINED && matchWorld (solarSys, world, 5, 1)) { // This check is redundant since the retrieval bit will keep the // node from showing up again if (GET_GAME_STATE (UTWIG_BOMB)) { // already picked up return 0; } return GenerateDefault_generateArtifact (solarSys, whichNode); } return 0; }
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 COUNT GenerateVux_generateLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (CurStarDescPtr->Index == MAIDENS_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { COUNT i; DWORD old_rand; old_rand = TFB_SeedRandom ( solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN]); for (i = 0; i <= whichNode && i < 12; ++i) { GenerateRandomLocation (&solarSys->SysInfo); if (i < 4) solarSys->SysInfo.PlanetInfo.CurType = 9; else if (i < 8) solarSys->SysInfo.PlanetInfo.CurType = 14; else /* if (i < 12) */ solarSys->SysInfo.PlanetInfo.CurType = 18; } TFB_SeedRandom (old_rand); return 12; // only matters when count is requested } if (CurStarDescPtr->Index == VUX_BEAST_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { COUNT i; DWORD old_rand; old_rand = TFB_SeedRandom ( solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN]); for (i = 0; i <= whichNode && i < 11; ++i) { GenerateRandomLocation (&solarSys->SysInfo); if (i == 0) /* VUX Beast */ solarSys->SysInfo.PlanetInfo.CurType = NUM_CREATURE_TYPES + 2; else if (i <= 5) /* {SPEED_MOTIONLESS | DANGER_NORMAL, MAKE_BYTE (5, 3)}, */ solarSys->SysInfo.PlanetInfo.CurType = 3; else /* if (i <= 10) */ /* {BEHAVIOR_UNPREDICTABLE | SPEED_SLOW | DANGER_NORMAL, MAKE_BYTE (3, 8)}, */ solarSys->SysInfo.PlanetInfo.CurType = 8; } TFB_SeedRandom (old_rand); return 11; // only matters when count is requested } return GenerateDefault_generateLife (solarSys, world, whichNode); }
static bool GenerateAndrosynth_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) { if (matchWorld (solarSys, world, 1, MATCH_PLANET)) { COUNT i; COUNT visits = 0; LoadStdLanderFont (&solarSys->SysInfo.PlanetInfo); solarSys->PlanetSideFrame[1] = CaptureDrawable (LoadGraphic (RUINS_MASK_PMAP_ANIM)); solarSys->SysInfo.PlanetInfo.DiscoveryString = CaptureStringTable ( LoadStringTable (ANDROSYNTH_RUINS_STRTAB)); // Androsynth ruins are a special case. The DiscoveryString contains // several lander reports which form a story. Each report is given // when the player collides with a new city ruin. Ruins previously // visited are marked in the upper 16 bits of ScanRetrieveMask, and // the lower bits are cleared to keep the ruin nodes on the map. for (i = 16; i < 32; ++i) { if (isNodeRetrieved (&solarSys->SysInfo.PlanetInfo, ENERGY_SCAN, i)) ++visits; } if (visits >= GetStringTableCount ( solarSys->SysInfo.PlanetInfo.DiscoveryString)) { // All the reports were already given DestroyStringTable (ReleaseStringTable ( solarSys->SysInfo.PlanetInfo.DiscoveryString)); solarSys->SysInfo.PlanetInfo.DiscoveryString = 0; } else { // Advance the report sequence to the first unread solarSys->SysInfo.PlanetInfo.DiscoveryString = SetRelStringTableIndex ( solarSys->SysInfo.PlanetInfo.DiscoveryString, visits); } } GenerateDefault_generateOrbital (solarSys, world); if (matchWorld (solarSys, world, 1, MATCH_PLANET)) { solarSys->SysInfo.PlanetInfo.AtmoDensity = EARTH_ATMOSPHERE * 144 / 100; solarSys->SysInfo.PlanetInfo.SurfaceTemperature = 28; solarSys->SysInfo.PlanetInfo.Weather = 1; solarSys->SysInfo.PlanetInfo.Tectonics = 1; } return true; }
static bool GenerateIlwrath_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { if (ActivateStarShip (ILWRATH_SHIP, SPHERE_TRACKING)) { NotifyOthers (ILWRATH_SHIP, IPNL_ALL_CLEAR); PutGroupInfo (GROUPS_RANDOM, GROUP_SAVE_IP); ReinitQueue (&GLOBAL (ip_group_q)); assert (CountLinks (&GLOBAL (npc_built_ship_q)) == 0); CloneShipFragment (ILWRATH_SHIP, &GLOBAL (npc_built_ship_q), INFINITE_FLEET); GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); InitCommunication (ILWRATH_CONVERSATION); if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) { GLOBAL (CurrentActivity) &= ~START_INTERPLANETARY; ReinitQueue (&GLOBAL (npc_built_ship_q)); GetGroupInfo (GROUPS_RANDOM, GROUP_LOAD_IP); } return true; } else { LoadStdLanderFont (&solarSys->SysInfo.PlanetInfo); solarSys->PlanetSideFrame[1] = CaptureDrawable ( LoadGraphic (RUINS_MASK_PMAP_ANIM)); solarSys->SysInfo.PlanetInfo.DiscoveryString = CaptureStringTable (LoadStringTable (RUINS_STRTAB)); } } GenerateDefault_generateOrbital (solarSys, world); if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { solarSys->SysInfo.PlanetInfo.Weather = 2; solarSys->SysInfo.PlanetInfo.Tectonics = 3; } return true; }
static bool GenerateVault_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) { if (matchWorld (solarSys, world, 0, 0)) { LoadStdLanderFont (&solarSys->SysInfo.PlanetInfo); solarSys->PlanetSideFrame[1] = CaptureDrawable (LoadGraphic (VAULT_MASK_PMAP_ANIM)); solarSys->SysInfo.PlanetInfo.DiscoveryString = CaptureStringTable (LoadStringTable (VAULT_STRTAB)); if (GET_GAME_STATE (SHIP_VAULT_UNLOCKED)) { solarSys->SysInfo.PlanetInfo.DiscoveryString = SetAbsStringTableIndex ( solarSys->SysInfo.PlanetInfo.DiscoveryString, 2); } else if (GET_GAME_STATE (SYREEN_SHUTTLE_ON_SHIP)) { solarSys->SysInfo.PlanetInfo.DiscoveryString = SetAbsStringTableIndex ( solarSys->SysInfo.PlanetInfo.DiscoveryString, 1); } } GenerateDefault_generateOrbital (solarSys, world); return true; }
static bool GenerateRainbowWorld_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { BYTE which_rainbow; UWORD rainbow_mask; STAR_DESC *SDPtr; rainbow_mask = MAKE_WORD ( GET_GAME_STATE (RAINBOW_WORLD0), GET_GAME_STATE (RAINBOW_WORLD1)); which_rainbow = 0; SDPtr = &star_array[0]; while (SDPtr != CurStarDescPtr) { if (SDPtr->Index == RAINBOW_DEFINED) ++which_rainbow; ++SDPtr; } rainbow_mask |= 1 << which_rainbow; SET_GAME_STATE (RAINBOW_WORLD0, LOBYTE (rainbow_mask)); SET_GAME_STATE (RAINBOW_WORLD1, HIBYTE (rainbow_mask)); } GenerateDefault_generateOrbital (solarSys, world); return true; }
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 GenerateAndrosynth_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (matchWorld (solarSys, world, 1, MATCH_PLANET)) { PLANET_INFO *planetInfo = &solarSys->SysInfo.PlanetInfo; // Ruins previously visited are marked in the upper 16 bits if (isNodeRetrieved (planetInfo, ENERGY_SCAN, whichNode + 16)) return false; // already visited this ruin, do not remove setNodeRetrieved (planetInfo, ENERGY_SCAN, whichNode + 16); // We set the retrieved bit manually here and need to indicate // the change to the solar system state functions SET_GAME_STATE (PLANETARY_CHANGE, 1); // Androsynth ruins have several lander reports which form a story GenerateDefault_landerReportCycle (solarSys); return false; // do not remove the node from the surface } return false; }
static bool GenerateSpathi_generateMoons (SOLARSYS_STATE *solarSys, PLANET_DESC *planet) { COUNT angle; GenerateDefault_generateMoons (solarSys, planet); if (matchWorld (solarSys, planet, 0, MATCH_PLANET)) { #ifdef NOTYET utf8StringCopy (GLOBAL_SIS (PlanetName), sizeof (GLOBAL_SIS (PlanetName)), "Spathiwa"); #endif /* NOTYET */ solarSys->MoonDesc[0].data_index = PELLUCID_WORLD; solarSys->MoonDesc[0].alternate_colormap = NULL; solarSys->MoonDesc[0].radius = MIN_MOON_RADIUS + MOON_DELTA; angle = NORMALIZE_ANGLE (LOWORD (RandomContext_Random (SysGenRNG))); solarSys->MoonDesc[0].location.x = COSINE (angle, solarSys->MoonDesc[0].radius); solarSys->MoonDesc[0].location.y = SINE (angle, solarSys->MoonDesc[0].radius); ComputeSpeed(&solarSys->MoonDesc[0], TRUE, 1); } return true; }
static bool GeneratePkunk_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 = ((LOWORD (rand_val)) % (MAP_WIDTH - (8 << 1))) + 8; solarSys->SysInfo.PlanetInfo.CurPt.y = ((LOWORD (rand_val)) % (MAP_HEIGHT - (8 << 1))) + 8; // JMS: No more clear spindles! /*if (!GET_GAME_STATE (CLEAR_SPINDLE)) 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); // JMS: No more clear spindles! /*if (!GET_GAME_STATE (CLEAR_SPINDLE)) { SetLanderTakeoff (); SET_GAME_STATE (CLEAR_SPINDLE, 1); SET_GAME_STATE (CLEAR_SPINDLE_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 GenerateZoqFotPik_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { if (ActivateStarShip (ZOQFOTPIK_SHIP, SPHERE_TRACKING)) { PutGroupInfo (GROUPS_RANDOM, GROUP_SAVE_IP); ReinitQueue (&GLOBAL (ip_group_q)); assert (CountLinks (&GLOBAL (npc_built_ship_q)) == 0); if (GET_GAME_STATE (ZOQFOT_DISTRESS)) { CloneShipFragment (BLACK_URQUAN_SHIP, &GLOBAL (npc_built_ship_q), 0); GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); InitCommunication (BLACKURQ_CONVERSATION); if (GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD)) return true; if (GetHeadLink (&GLOBAL (npc_built_ship_q))) { GLOBAL (CurrentActivity) &= ~START_INTERPLANETARY; ReinitQueue (&GLOBAL (npc_built_ship_q)); GetGroupInfo (GROUPS_RANDOM, GROUP_LOAD_IP); return true; } } CloneShipFragment (ZOQFOTPIK_SHIP, &GLOBAL (npc_built_ship_q), INFINITE_FLEET); GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); InitCommunication (ZOQFOTPIK_CONVERSATION); if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) { GLOBAL (CurrentActivity) &= ~START_INTERPLANETARY; ReinitQueue (&GLOBAL (npc_built_ship_q)); GetGroupInfo (GROUPS_RANDOM, GROUP_LOAD_IP); } return true; } LoadStdLanderFont (&solarSys->SysInfo.PlanetInfo); solarSys->PlanetSideFrame[1] = CaptureDrawable (LoadGraphic (RUINS_MASK_PMAP_ANIM)); solarSys->SysInfo.PlanetInfo.DiscoveryString = CaptureStringTable (LoadStringTable (RUINS_STRTAB)); } GenerateDefault_generateOrbital (solarSys, world); return true; }
static bool GenerateBurvixese_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) { COUNT i; DWORD rand_val; rand_val = DoPlanetaryAnalysis (&solarSys->SysInfo, world); solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN] = rand_val; i = (COUNT)~0; rand_val = GenerateLifeForms (&solarSys->SysInfo, &i); solarSys->SysInfo.PlanetInfo.ScanSeed[MINERAL_SCAN] = rand_val; i = (COUNT)~0; GenerateMineralDeposits (&solarSys->SysInfo, &i); solarSys->SysInfo.PlanetInfo.ScanSeed[ENERGY_SCAN] = rand_val; if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { LoadStdLanderFont (&solarSys->SysInfo.PlanetInfo); solarSys->PlanetSideFrame[1] = CaptureDrawable ( LoadGraphic (RUINS_MASK_PMAP_ANIM)); solarSys->SysInfo.PlanetInfo.DiscoveryString = CaptureStringTable ( LoadStringTable (BURV_RUINS_STRTAB)); solarSys->SysInfo.PlanetInfo.Weather = 0; solarSys->SysInfo.PlanetInfo.Tectonics = 0; } else if (matchWorld (solarSys, world, 0, 0) && !GET_GAME_STATE (BURVIXESE_BROADCASTERS)) { LoadStdLanderFont (&solarSys->SysInfo.PlanetInfo); solarSys->PlanetSideFrame[1] = CaptureDrawable ( LoadGraphic (BURV_BCS_MASK_PMAP_ANIM)); solarSys->SysInfo.PlanetInfo.DiscoveryString = CaptureStringTable (LoadStringTable (BURV_BCS_STRTAB)); } LoadPlanet (NULL); return true; }
static bool GenerateSupox_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 (ULTRON_CONDITION)) 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 (ULTRON_CONDITION)) { SetLanderTakeoff (); SET_GAME_STATE (ULTRON_CONDITION, 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 COUNT GenerateIlwrath_generateEnergy (const SOLARSYS_STATE *solarSys, const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, solarSys->SunDesc[0].PlanetByte, MATCH_PLANET)) { return GenerateDefault_generateRuins (solarSys, whichNode, info); } return 0; }
static COUNT GenerateVault_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (matchWorld (solarSys, world, 0, 0)) { return GenerateDefault_generateArtifact (solarSys, whichNode); } return 0; }
static COUNT GenerateWreck_generateEnergy (const SOLARSYS_STATE *solarSys, const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 6, MATCH_PLANET)) { return GenerateDefault_generateArtifact (solarSys, whichNode, info); } return 0; }
static COUNT GenerateDruuge_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { return GenerateDefault_generateRuins (solarSys, whichNode); } return 0; }
static COUNT GenerateSpathi_generateLife (const SOLARSYS_STATE *solarSys, const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { #define NUM_EVIL_ONES 32 return GenerateRandomNodes (&solarSys->SysInfo, BIOLOGICAL_SCAN, NUM_EVIL_ONES, NUM_CREATURE_TYPES, whichNode, info); } return 0; }
static COUNT GenerateBurvixese_generateEnergy (const SOLARSYS_STATE *solarSys, const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { return GenerateDefault_generateRuins (solarSys, whichNode, info); } if (matchWorld (solarSys, world, 0, 0)) { // This check is redundant since the retrieval bit will keep the // node from showing up again if (GET_GAME_STATE (BURVIXESE_BROADCASTERS)) { // already picked up return 0; } return GenerateDefault_generateArtifact (solarSys, whichNode, info); } return 0; }
static bool GenerateIlwrath_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { // Standard ruins report GenerateDefault_landerReportCycle (solarSys); return false; } (void) whichNode; return false; }
static bool GenerateTrap_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) { GenerateDefault_generateOrbital (solarSys, world); if (matchWorld (solarSys, world, 0, MATCH_PLANET) && PrimeSeed) { solarSys->SysInfo.PlanetInfo.AtmoDensity = EARTH_ATMOSPHERE * 2; solarSys->SysInfo.PlanetInfo.SurfaceTemperature = 35; solarSys->SysInfo.PlanetInfo.Weather = 3; solarSys->SysInfo.PlanetInfo.Tectonics = 1; } return true; }
static bool GenerateSupox_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { if (StartSphereTracking (SUPOX_SHIP)) { NotifyOthers (SUPOX_SHIP, IPNL_ALL_CLEAR); PutGroupInfo (GROUPS_RANDOM, GROUP_SAVE_IP); ReinitQueue (&GLOBAL (ip_group_q)); assert (CountLinks (&GLOBAL (npc_built_ship_q)) == 0); CloneShipFragment (SUPOX_SHIP, &GLOBAL (npc_built_ship_q), INFINITE_FLEET); GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); InitCommunication (SUPOX_CONVERSATION); if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) { GLOBAL (CurrentActivity) &= ~START_INTERPLANETARY; ReinitQueue (&GLOBAL (npc_built_ship_q)); GetGroupInfo (GROUPS_RANDOM, GROUP_LOAD_IP); } return true; } else { LoadStdLanderFont (&solarSys->SysInfo.PlanetInfo); solarSys->PlanetSideFrame[1] = CaptureDrawable (LoadGraphic (RUINS_MASK_PMAP_ANIM)); solarSys->SysInfo.PlanetInfo.DiscoveryString = CaptureStringTable (LoadStringTable (SUPOX_RUINS_STRTAB)); if (GET_GAME_STATE (ULTRON_CONDITION)) { // Already picked up the Ultron, skip the report solarSys->SysInfo.PlanetInfo.DiscoveryString = SetAbsStringTableIndex ( solarSys->SysInfo.PlanetInfo.DiscoveryString, 1); } } } GenerateDefault_generateOrbital (solarSys, world); return true; }
static bool GeneratePkunk_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { // JMS: No ships orbit Pkunk homeworld anymore. //if (ActivateStarShip (PKUNK_SHIP, SPHERE_TRACKING)) if (0) { NotifyOthers (PKUNK_SHIP, IPNL_ALL_CLEAR); PutGroupInfo (GROUPS_RANDOM, GROUP_SAVE_IP); ReinitQueue (&GLOBAL (ip_group_q)); assert (CountLinks (&GLOBAL (npc_built_ship_q)) == 0); CloneShipFragment (PKUNK_SHIP, &GLOBAL (npc_built_ship_q), INFINITE_FLEET); GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); InitCommunication (PKUNK_CONVERSATION); if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) { GLOBAL (CurrentActivity) &= ~START_INTERPLANETARY; ReinitQueue (&GLOBAL (npc_built_ship_q)); GetGroupInfo (GROUPS_RANDOM, GROUP_LOAD_IP); } return true; } else { LoadStdLanderFont (&solarSys->SysInfo.PlanetInfo); solarSys->PlanetSideFrame[1] = CaptureDrawable (LoadGraphic (RUINS_MASK_PMAP_ANIM)); solarSys->SysInfo.PlanetInfo.DiscoveryString = CaptureStringTable (LoadStringTable (PKUNK_RUINS_STRTAB)); // JMS: No more clear spindles! //if (GET_GAME_STATE (CLEAR_SPINDLE)) solarSys->SysInfo.PlanetInfo.DiscoveryString = SetAbsStringTableIndex ( solarSys->SysInfo.PlanetInfo.DiscoveryString, 1); } } GenerateDefault_generateOrbital (solarSys, world); 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 GenerateWreck_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) { if (matchWorld (solarSys, world, 6, MATCH_PLANET)) { LoadStdLanderFont (&solarSys->SysInfo.PlanetInfo); solarSys->PlanetSideFrame[1] = CaptureDrawable (LoadGraphic (WRECK_MASK_PMAP_ANIM)); solarSys->SysInfo.PlanetInfo.DiscoveryString = CaptureStringTable (LoadStringTable (WRECK_STRTAB)); if (GET_GAME_STATE (PORTAL_KEY)) { // Already picked it up, skip the first report solarSys->SysInfo.PlanetInfo.DiscoveryString = SetAbsStringTableIndex ( solarSys->SysInfo.PlanetInfo.DiscoveryString, 1); } } GenerateDefault_generateOrbital (solarSys, world); return true; }