add: } else if (!(ActivateStarShip (UMGAH_SHIP, SPHERE_TRACKING))) {   InitCommunication (TALKING_PET_CONVERSATION); }
context: GenerateTalkingPet (BYTE control){	switch (control)	{		case GENERATE_ENERGY:			if (pSolarSysState->pOrbitalDesc == &pSolarSysState->PlanetDesc[0])			{				COUNT i, which_node;				DWORD rand_val, old_rand;				old_rand = TFB_SeedRandom (						pSolarSysState->SysInfo.PlanetInfo.ScanSeed[ENERGY_SCAN]						);				which_node = i = 0;				do				{					rand_val = TFB_Random ();					pSolarSysState->SysInfo.PlanetInfo.CurPt.x =							(LOBYTE (LOWORD (rand_val)) % (MAP_WIDTH - (8 << 1))) + 8;					pSolarSysState->SysInfo.PlanetInfo.CurPt.y =							(HIBYTE (LOWORD (rand_val)) % (MAP_HEIGHT - (8 << 1))) + 8;					pSolarSysState->SysInfo.PlanetInfo.CurType = 1;					pSolarSysState->SysInfo.PlanetInfo.CurDensity = 0;					if (which_node >= pSolarSysState->CurNode							&& !(pSolarSysState->SysInfo.PlanetInfo.ScanRetrieveMask[ENERGY_SCAN]							& (1L << i)))						break;					++which_node;				} while (++i < 16);				pSolarSysState->CurNode = which_node;				TFB_SeedRandom (old_rand);				break;			}			pSolarSysState->CurNode = 0;			break;		case GENERATE_PLANETS:		{			COUNT angle;			GenerateRandomIP (GENERATE_PLANETS);			pSolarSysState->PlanetDesc[0].data_index = TELLURIC_WORLD;			pSolarSysState->PlanetDesc[0].radius = EARTH_RADIUS * 204L / 100;			angle = ARCTAN (					pSolarSysState->PlanetDesc[0].location.x,					pSolarSysState->PlanetDesc[0].location.y					);			pSolarSysState->PlanetDesc[0].location.x =					COSINE (angle, pSolarSysState->PlanetDesc[0].radius);			pSolarSysState->PlanetDesc[0].location.y =					SINE (angle, pSolarSysState->PlanetDesc[0].radius);			break;		}		case GENERATE_ORBITAL:			if (pSolarSysState->pOrbitalDesc == &pSolarSysState->PlanetDesc[0]					&& (GET_GAME_STATE (UMGAH_ZOMBIE_BLOBBIES)					|| !GET_GAME_STATE (TALKING_PET)					|| ActivateStarShip (UMGAH_SHIP, SPHERE_TRACKING)))			{				NotifyOthers (UMGAH_SHIP, (BYTE)~0);				PutGroupInfo (0L, (BYTE)~0);				ReinitQueue (&GLOBAL (npc_built_ship_q));				if (ActivateStarShip (UMGAH_SHIP, SPHERE_TRACKING))				{					pSolarSysState->MenuState.Initialized += 2;					GLOBAL (CurrentActivity) |= START_INTERPLANETARY;					SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7);					if (!GET_GAME_STATE (UMGAH_ZOMBIE_BLOBBIES))					{						CloneShipFragment (UMGAH_SHIP,								&GLOBAL (npc_built_ship_q), (BYTE)~0);						InitCommunication (UMGAH_CONVERSATION);					}					else					{						COUNT i;						for (i = 0; i < 10; ++i)							CloneShipFragment (UMGAH_SHIP,									&GLOBAL (npc_built_ship_q), 0);						InitCommunication (TALKING_PET_CONVERSATION);					}					pSolarSysState->MenuState.Initialized -= 2;				}				if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD)))				{					BOOLEAN UmgahSurvivors;					UmgahSurvivors = GetHeadLink (							&GLOBAL (npc_built_ship_q)							) != 0;					GLOBAL (CurrentActivity) &= ~START_INTERPLANETARY;					if (GET_GAME_STATE (PLAYER_HYPNOTIZED))						ZapToUrquanEncounter ();					else if (GET_GAME_STATE (UMGAH_ZOMBIE_BLOBBIES)							&& !UmgahSurvivors)						InitCommunication (TALKING_PET_CONVERSATION);					ReinitQueue (&GLOBAL (npc_built_ship_q));					GetGroupInfo (0L, 0);				}				break;			}			if (pSolarSysState->pOrbitalDesc == &pSolarSysState->PlanetDesc[0])			{				pSolarSysState->SysInfo.PlanetInfo.LanderFont =						CaptureFont (								LoadGraphic (LANDER_FONT)								);				pSolarSysState->PlanetSideFrame[1] =						CaptureDrawable (						LoadGraphic (RUINS_MASK_PMAP_ANIM)						);				pSolarSysState->SysInfo.PlanetInfo.DiscoveryString =						CaptureStringTable (								LoadStringTable (RUINS_STRTAB)								);			}			GenerateRandomIP (GENERATE_ORBITAL);			if (pSolarSysState->pOrbitalDesc == &pSolarSysState->PlanetDesc[0])				pSolarSysState->SysInfo.PlanetInfo.Weather = 0;			break;		default:			GenerateRandomIP (control);			break;	}}