Esempio n. 1
0
static void
Trade (RESPONSE_REF R)
{
	if (!PLAYER_SAID (R, whats_the_sphere_again))
	{
		NPCPhrase (TRADE_FOR_SPHERE);
		LastResponse = R;
	}
	else
	{
		NPCPhrase (SPHERE_IS);

		DISABLE_PHRASE (whats_the_sphere_again);
	}

	Response (no_way, Sell);
	Response (way, Sell);
	if (PHRASE_ENABLED (whats_the_sphere_again))
	{
		Response (whats_the_sphere_again, Trade);
	}
}
Esempio n. 2
0
static void
ConsoleShofixti (RESPONSE_REF R)
{
    if (PLAYER_SAID (R, dont_do_it))
    {
        NPCPhrase (YES_I_DO_IT);
        DISABLE_PHRASE (dont_do_it);
    }
    else
        NPCPhrase (VERY_SAD_KILL_SELF);

    if (GET_GAME_STATE (MAIDENS_ON_SHIP))
    {
        Response (important_duty, GiveMaidens);
    }
    if (PHRASE_ENABLED (dont_do_it))
    {
        Response (dont_do_it, ConsoleShofixti);
    }
    Response (need_you_for_duty, ExitConversation);
    Response (go_ahead, ExitConversation);
}
Esempio n. 3
0
static void
SpathiInfo (RESPONSE_REF R)
{
	BYTE InfoLeft;
	
	InfoLeft = FALSE;
	if (PLAYER_SAID (R, like_some_info))
		NPCPhrase (WHAT_ABOUT);
	else if (PLAYER_SAID (R, what_about_hierarchy))
	{
		NPCPhrase (ABOUT_HIERARCHY);

		DISABLE_PHRASE (what_about_hierarchy);
	}
	else if (PLAYER_SAID (R, what_about_history))
	{
		NPCPhrase (ABOUT_HISTORY);

		DISABLE_PHRASE (what_about_history);
	}
	else if (PLAYER_SAID (R, what_about_alliance))
	{
		NPCPhrase (ABOUT_ALLIANCE);

		DISABLE_PHRASE (what_about_alliance);
	}
	else if (PLAYER_SAID (R, what_about_other))
	{
		NPCPhrase (ABOUT_OTHER);

		DISABLE_PHRASE (what_about_other);
	}
	else if (PLAYER_SAID (R, what_about_precursors))
	{
		NPCPhrase (ABOUT_PRECURSORS);

		DISABLE_PHRASE (what_about_precursors);
	}

	if (PHRASE_ENABLED (what_about_hierarchy))
	{
		InfoLeft = TRUE;
		Response (what_about_hierarchy, SpathiInfo);
	}
	if (PHRASE_ENABLED (what_about_history))
	{
		InfoLeft = TRUE;
		Response (what_about_history, SpathiInfo);
	}
	if (PHRASE_ENABLED (what_about_alliance))
	{
		InfoLeft = TRUE;
		Response (what_about_alliance, SpathiInfo);
	}
	if (PHRASE_ENABLED (what_about_other))
	{
		InfoLeft = TRUE;
		Response (what_about_other, SpathiInfo);
	}
	if (PHRASE_ENABLED (what_about_precursors))
	{
		InfoLeft = TRUE;
		Response (what_about_precursors, SpathiInfo);
	}
	Response (enough_info, SpathiAllies);

	if (!InfoLeft)
	{
		DISABLE_PHRASE (like_some_info);
	}
}
Esempio n. 4
0
static void
ZoqFotIntro (RESPONSE_REF R)
{
	if (PLAYER_SAID (R, we_are_vindicator0))
	{
		NPCPhrase_cb (WE_GLAD0, &SelectAlienZOQ);
		NPCPhrase_cb (WE_GLAD1, &SelectAlienPIK);
		NPCPhrase_cb (WE_GLAD2, &SelectAlienZOQ);
		NPCPhrase_cb (WE_GLAD3, &SelectAlienPIK);
		NPCPhrase_cb (WE_GLAD4, &SelectAlienZOQ);
		NPCPhrase_cb (WE_GLAD5, &SelectAlienPIK);
		ZFPTalkSegue ((COUNT)~0);
		
		DISABLE_PHRASE (we_are_vindicator0);
	}
	else if (PLAYER_SAID (R, your_race))
	{
		NPCPhrase_cb (YEARS_AGO0, &SelectAlienZOQ);
		NPCPhrase_cb (YEARS_AGO1, &SelectAlienPIK);
		NPCPhrase_cb (YEARS_AGO2, &SelectAlienZOQ);
		NPCPhrase_cb (YEARS_AGO3, &SelectAlienPIK);
		NPCPhrase_cb (YEARS_AGO4, &SelectAlienZOQ);
		NPCPhrase_cb (YEARS_AGO5, &SelectAlienPIK);
		NPCPhrase_cb (YEARS_AGO6, &SelectAlienZOQ);
		NPCPhrase_cb (YEARS_AGO7, &SelectAlienPIK);
		NPCPhrase_cb (YEARS_AGO8, &SelectAlienZOQ);
		NPCPhrase_cb (YEARS_AGO9, &SelectAlienPIK);
		NPCPhrase_cb (YEARS_AGO10, &SelectAlienZOQ);
		NPCPhrase_cb (YEARS_AGO11, &SelectAlienPIK);
		NPCPhrase_cb (YEARS_AGO12, &SelectAlienZOQ);
		NPCPhrase_cb (YEARS_AGO13, &SelectAlienPIK);
		ZFPTalkSegue ((COUNT)~0);
		
		DISABLE_PHRASE (your_race);
	}
	else if (PLAYER_SAID (R, where_from))
	{
		NPCPhrase_cb (TRAVELED_FAR0, &SelectAlienZOQ);
		NPCPhrase_cb (TRAVELED_FAR1, &SelectAlienPIK);
		NPCPhrase_cb (TRAVELED_FAR2, &SelectAlienZOQ);
		NPCPhrase_cb (TRAVELED_FAR3, &SelectAlienPIK);
		NPCPhrase_cb (TRAVELED_FAR4, &SelectAlienZOQ);
		NPCPhrase_cb (TRAVELED_FAR5, &SelectAlienPIK);
		ZFPTalkSegue ((COUNT)~0);

		DISABLE_PHRASE (where_from);
	}
	else if (PLAYER_SAID (R, what_emergency))
	{
		NPCPhrase_cb (UNDER_ATTACK0, &SelectAlienZOQ);
		NPCPhrase_cb (UNDER_ATTACK1, &SelectAlienPIK);
		NPCPhrase_cb (UNDER_ATTACK2, &SelectAlienZOQ);
		NPCPhrase_cb (UNDER_ATTACK3, &SelectAlienPIK);
		NPCPhrase_cb (UNDER_ATTACK4, &SelectAlienZOQ);
		NPCPhrase_cb (UNDER_ATTACK5, &SelectAlienPIK);
		NPCPhrase_cb (UNDER_ATTACK6, &SelectAlienZOQ);
		NPCPhrase_cb (UNDER_ATTACK7, &SelectAlienPIK);
		NPCPhrase_cb (UNDER_ATTACK8, &SelectAlienZOQ);
		NPCPhrase_cb (UNDER_ATTACK9, &SelectAlienPIK);
		NPCPhrase_cb (UNDER_ATTACK10, &SelectAlienZOQ);
		NPCPhrase_cb (UNDER_ATTACK11, &SelectAlienPIK);
		ZFPTalkSegue ((COUNT)~0);

		DISABLE_PHRASE (what_emergency);
	}
	else if (PLAYER_SAID (R, tough_luck))
	{
		NPCPhrase_cb (NOT_HELPFUL0, &SelectAlienZOQ);
		NPCPhrase_cb (NOT_HELPFUL1, &SelectAlienPIK);
		NPCPhrase_cb (NOT_HELPFUL2, &SelectAlienZOQ);
		NPCPhrase_cb (NOT_HELPFUL3, &SelectAlienPIK);
		NPCPhrase_cb (NOT_HELPFUL4, &SelectAlienZOQ);
		NPCPhrase_cb (NOT_HELPFUL5, &SelectAlienPIK);
		ZFPTalkSegue ((COUNT)~0);

		DISABLE_PHRASE (tough_luck);
	}
	else if (PLAYER_SAID (R, what_look_like))
	{
		NPCPhrase_cb (LOOK_LIKE0, &SelectAlienZOQ);
		NPCPhrase_cb (LOOK_LIKE1, &SelectAlienPIK);
		NPCPhrase_cb (LOOK_LIKE2, &SelectAlienZOQ);
		NPCPhrase_cb (LOOK_LIKE3, &SelectAlienPIK);
		ZFPTalkSegue ((COUNT)~0);

		DISABLE_PHRASE (what_look_like);
	}
	
	if (PHRASE_ENABLED (your_race)
			|| PHRASE_ENABLED (where_from)
			|| PHRASE_ENABLED (what_emergency))
	{
		if (PHRASE_ENABLED (your_race))
			 Response (your_race, ZoqFotIntro);
		if (PHRASE_ENABLED (where_from))
			 Response (where_from, ZoqFotIntro);
		if (PHRASE_ENABLED (what_emergency))
			 Response (what_emergency, ZoqFotIntro);
	}
	else
	{
		if (PHRASE_ENABLED (tough_luck))
			 Response (tough_luck, ZoqFotIntro);
		if (PHRASE_ENABLED (what_look_like))
			 Response (what_look_like, ZoqFotIntro);
		Response (all_very_interesting, ExitConversation);
		if (GET_GAME_STATE (GLOBAL_FLAGS_AND_DATA) & (1 << 7))
		{
			Response (how_can_i_help, FormAlliance);
		}
		else
		{
			Response (how_can_i_help, ExitConversation);
		}
		Response (valuable_info, ExitConversation);
	}
}
Esempio n. 5
0
static void
FriendlySpaceArilou (RESPONSE_REF R)
{
	BYTE NumVisits;

	if (PLAYER_SAID (R, confused_by_hello))
		NPCPhrase (CONFUSED_RESPONSE);
	else if (PLAYER_SAID (R, happy_by_hello))
		NPCPhrase (HAPPY_RESPONSE);
	else if (PLAYER_SAID (R, miffed_by_hello))
		NPCPhrase (MIFFED_RESPONSE);
	else if (PLAYER_SAID (R, whats_up_1)
			|| PLAYER_SAID (R, whats_up_2))
	{
		NumVisits = GET_GAME_STATE (ARILOU_INFO);
		switch (NumVisits++)
		{
			case 0:
				NPCPhrase (GENERAL_INFO_1);
				break;
			case 1:
				NPCPhrase (GENERAL_INFO_2);
				break;
			case 2:
				NPCPhrase (GENERAL_INFO_3);
				break;
			case 3:
				NPCPhrase (GENERAL_INFO_4);
				--NumVisits;
				break;
		}
		SET_GAME_STATE (ARILOU_INFO, NumVisits);

		DISABLE_PHRASE (whats_up_2);
	}
	else if (PLAYER_SAID (R, why_you_here))
	{
		NPCPhrase (LEARN_THINGS);

		SET_GAME_STATE (ARILOU_STACK_5, 1);
	}
	else if (PLAYER_SAID (R, what_things))
	{
		NPCPhrase (THESE_THINGS);

		SET_GAME_STATE (ARILOU_STACK_5, 2);
	}
	else if (PLAYER_SAID (R, why_do_it))
	{
		NPCPhrase (DO_IT_BECAUSE);

		SET_GAME_STATE (ARILOU_STACK_5, 3);
	}
	else if (PLAYER_SAID (R, give_me_info_1)
			|| PLAYER_SAID (R, give_me_info_2))
	{
		NumVisits = GET_GAME_STATE (ARILOU_HINTS);
		switch (NumVisits++)
		{
			case 0:
				NPCPhrase (ARILOU_HINTS_1);
				break;
			case 1:
				NPCPhrase (ARILOU_HINTS_2);
				if (GET_GAME_STATE (KNOW_ABOUT_SHATTERED) < 2)
				{
					SET_GAME_STATE (KNOW_ABOUT_SHATTERED, 2);
				}
				break;
			case 2:
				NPCPhrase (ARILOU_HINTS_3);
				SET_GAME_STATE (KNOW_URQUAN_STORY, 1);
				SET_GAME_STATE (KNOW_KOHR_AH_STORY, 1);
				break;
			case 3:
				NPCPhrase (ARILOU_HINTS_4);
				--NumVisits;
				break;
		}
		SET_GAME_STATE (ARILOU_HINTS, NumVisits);

		DISABLE_PHRASE (give_me_info_2);
	}

	switch (GET_GAME_STATE (ARILOU_STACK_5))
	{
		case 0:
			Response (why_you_here, FriendlySpaceArilou);
			break;
		case 1:
			Response (what_things, FriendlySpaceArilou);
			break;
		case 2:
			Response (why_do_it, FriendlySpaceArilou);
			break;
	}
	if (PHRASE_ENABLED (whats_up_2))
	{
		if (GET_GAME_STATE (ARILOU_INFO) == 0)
			Response (whats_up_1, FriendlySpaceArilou);
		else
			Response (whats_up_2, FriendlySpaceArilou);
	}
	if (PHRASE_ENABLED (give_me_info_2))
	{
		if (GET_GAME_STATE (ARILOU_HINTS) == 0)
			Response (give_me_info_1, FriendlySpaceArilou);
		else
			Response (give_me_info_2, FriendlySpaceArilou);
	}
	Response (bye_friendly_space, ExitConversation);
}
static void
SlylandroInfo (RESPONSE_REF R)
{
	BYTE InfoLeft;

	if (PLAYER_SAID (R, like_more_about_you))
	{
		NPCPhrase (SURE_KNOW_WHAT);
	}
	else if (PLAYER_SAID (R, what_about_home))
	{
		NPCPhrase (ABOUT_HOME);

		DISABLE_PHRASE (what_about_home);
	}
	else if (PLAYER_SAID (R, what_about_culture))
	{
		NPCPhrase (ABOUT_CULTURE);

		DISABLE_PHRASE (what_about_culture);
	}
	else if (PLAYER_SAID (R, what_about_history))
	{
		NPCPhrase (ABOUT_HISTORY);

		DISABLE_PHRASE (what_about_history);
	}
	else if (PLAYER_SAID (R, what_about_biology))
	{
		NPCPhrase (ABOUT_BIOLOGY);

		DISABLE_PHRASE (what_about_biology);
	}

	InfoLeft = FALSE;
	if (PHRASE_ENABLED (what_about_home))
	{
		InfoLeft = TRUE;
		Response (what_about_home, SlylandroInfo);
	}
	if (PHRASE_ENABLED (what_about_culture))
	{
		InfoLeft = TRUE;
		Response (what_about_culture, SlylandroInfo);
	}
	if (PHRASE_ENABLED (what_about_history))
	{
		InfoLeft = TRUE;
		Response (what_about_history, SlylandroInfo);
	}
	if (PHRASE_ENABLED (what_about_biology))
	{
		InfoLeft = TRUE;
		Response (what_about_biology, SlylandroInfo);
	}

	Response (enough_info, HomeWorld);
	if (!InfoLeft)
	{
		DISABLE_PHRASE (like_more_about_you);
	}
}
static void
ProbeInfo (RESPONSE_REF R)
{
	BYTE i, LastStack, InfoLeft;
	RESPONSE_REF pStr[3];

	LastStack = 0;
	pStr[0] = pStr[1] = pStr[2] = 0;
	if (PLAYER_SAID (R, what_are_probes))
	{
		NPCPhrase (PROBES_ARE);

		SET_GAME_STATE (SLYLANDRO_STACK5, 1);
	}
	else if (PLAYER_SAID (R, know_more_probe))
		NPCPhrase (OK_WHAT_MORE_PROBE);
	else if (PLAYER_SAID (R, why_probe_always_attack))
	{
		NPCPhrase (ONLY_DEFEND);

		SET_GAME_STATE (SLYLANDRO_STACK6, 1);
	}
	else if (PLAYER_SAID (R, talk_more_probe_attack))
	{
		ProbeFunction (R);
		return;
	}
	else if (PLAYER_SAID (R, where_probes_from))
	{
		NPCPhrase (PROBES_FROM_MELNORME);

		LastStack = 1;
		SET_GAME_STATE (SLYLANDRO_STACK7, 1);
	}
	else if (PLAYER_SAID (R, why_sell))
	{
		NPCPhrase (SELL_FOR_INFO);

		LastStack = 1;
		SET_GAME_STATE (SLYLANDRO_STACK7, 2);
	}
	else if (PLAYER_SAID (R, how_long_ago))
	{
		NPCPhrase (FIFTY_THOUSAND_ROTATIONS);

		SET_GAME_STATE (SLYLANDRO_STACK7, 3);
	}
	else if (PLAYER_SAID (R, whats_probes_mission))
	{
		NPCPhrase (SEEK_OUT_NEW_LIFE);

		LastStack = 2;
		SET_GAME_STATE (SLYLANDRO_STACK8, 1);
	}
	else if (PLAYER_SAID (R, if_only_one))
	{
		NPCPhrase (THEY_REPLICATE);

		SET_GAME_STATE (SLYLANDRO_STACK8, 2);
	}
	else if (PLAYER_SAID (R, enough_problem))
		NPCPhrase (OK_ENOUGH_PROBLEM);

	if (!GET_GAME_STATE (SLYLANDRO_KNOW_BROKEN)
			&& GET_GAME_STATE (PROBE_EXHIBITED_BUG))
	{
		switch (GET_GAME_STATE (SLYLANDRO_STACK6))
		{
			case 0:
				pStr[0] = why_probe_always_attack;
				break;
			case 1:
				pStr[0] = talk_more_probe_attack;
				break;
		}
	}
	switch (GET_GAME_STATE (SLYLANDRO_STACK7))
	{
		case 0:
			pStr[1] = where_probes_from;
			break;
		case 1:
			pStr[1] = why_sell;
			break;
		case 2:
			pStr[1] = how_long_ago;
			break;
	}
	switch (GET_GAME_STATE (SLYLANDRO_STACK8))
	{
		case 0:
			pStr[2] = whats_probes_mission;
			break;
		case 1:
			pStr[2] = if_only_one;
			break;
	}

	InfoLeft = FALSE;
	if (pStr[LastStack])
	{
		InfoLeft = TRUE;
		Response (pStr[LastStack], ProbeInfo);
	}
	for (i = 0; i < 3; ++i)
	{
		if (i != LastStack && pStr[i])
		{
			InfoLeft = TRUE;
			Response (pStr[i], ProbeInfo);
		}
	}

	Response (enough_probe, HomeWorld);
	if (!InfoLeft)
	{
		DISABLE_PHRASE (know_more_probe);
	}
}
Esempio n. 8
0
static void
AllianceOffer (RESPONSE_REF R)
{
	if (PLAYER_SAID (R, misunderstanding))
	{
		NPCPhrase (JUST_MISUNDERSTANDING);
		XFormColorMap (GetColorMapAddress (
				SetAbsColorMapIndex (CommData.AlienColorMap, 1)
				), ONE_SECOND / 4);

		SET_GAME_STATE (SPATHI_MANNER, 3);
		SET_GAME_STATE (SPATHI_VISITS, 0);
	}
	else if (PLAYER_SAID (R, we_come_in_peace))
		NPCPhrase (OF_COURSE);
	else if (PLAYER_SAID (R, hand_in_friendship))
	{
		NPCPhrase (TOO_AFRAID);

		DISABLE_PHRASE (hand_in_friendship);
	}
	else if (PLAYER_SAID (R, stronger))
	{
		NPCPhrase (YOURE_NOT);

		DISABLE_PHRASE (stronger);
	}
	else if (PLAYER_SAID (R, yes_we_are))
	{
		NPCPhrase (NO_YOURE_NOT);

		DISABLE_PHRASE (yes_we_are);
	}
	else if (PLAYER_SAID (R, share_info))
	{
		NPCPhrase (NO_INFO);

		DISABLE_PHRASE (share_info);
	}
	else if (PLAYER_SAID (R, give_us_resources))
	{
		NPCPhrase (NO_RESOURCES);

		DISABLE_PHRASE (give_us_resources);
	}

	if (PHRASE_ENABLED (hand_in_friendship))
		Response (hand_in_friendship, AllianceOffer);
	else if (PHRASE_ENABLED (stronger))
		Response (stronger, AllianceOffer);
	else if (PHRASE_ENABLED (yes_we_are))
		Response (yes_we_are, AllianceOffer);
	else
	{
		Response (how_prove, LearnQuest);
	}
	if (PHRASE_ENABLED (share_info))
		Response (share_info, AllianceOffer);
	if (PHRASE_ENABLED (give_us_resources))
		Response (give_us_resources, AllianceOffer);
}
Esempio n. 9
0
static void
ZoqFotHome (RESPONSE_REF R)
{
	BYTE NumVisits;

	if (PLAYER_SAID (R, whats_up_homeworld))
	{
		NumVisits = GET_GAME_STATE (ZOQFOT_INFO);
		switch (NumVisits++)
		{
			case 0:
				NPCPhrase_cb (GENERAL_INFO_10, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_11, &SelectAlienPIK);
				NPCPhrase_cb (GENERAL_INFO_12, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_13, &SelectAlienPIK);
				ZFPTalkSegue ((COUNT)~0);
				break;
			case 1:
				NPCPhrase_cb (GENERAL_INFO_20, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_21, &SelectAlienPIK);
				NPCPhrase_cb (GENERAL_INFO_22, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_23, &SelectAlienPIK);
				NPCPhrase_cb (GENERAL_INFO_24, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_25, &SelectAlienPIK);
				NPCPhrase_cb (GENERAL_INFO_26, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_27, &SelectAlienPIK);
				ZFPTalkSegue ((COUNT)~0);
				break;
			case 2:
				NPCPhrase_cb (GENERAL_INFO_30, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_31, &SelectAlienPIK);
				NPCPhrase_cb (GENERAL_INFO_32, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_33, &SelectAlienPIK);
				NPCPhrase_cb (GENERAL_INFO_34, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_35, &SelectAlienPIK);
				ZFPTalkSegue ((COUNT)~0);
				break;
			case 3:
				NPCPhrase_cb (GENERAL_INFO_40, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_41, &SelectAlienPIK);
				NPCPhrase_cb (GENERAL_INFO_42, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_43, &SelectAlienPIK);
				NPCPhrase_cb (GENERAL_INFO_44, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_45, &SelectAlienPIK);
				NPCPhrase_cb (GENERAL_INFO_46, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_47, &SelectAlienPIK);
				NPCPhrase_cb (GENERAL_INFO_48, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_49, &SelectAlienPIK);
				NPCPhrase_cb (GENERAL_INFO_410, &SelectAlienZOQ);
				NPCPhrase_cb (GENERAL_INFO_411, &SelectAlienPIK);
				ZFPTalkSegue ((COUNT)~0);
				--NumVisits;
				break;
		}
		SET_GAME_STATE (ZOQFOT_INFO, NumVisits);

		DISABLE_PHRASE (whats_up_homeworld);
	}
	else if (PLAYER_SAID (R, any_war_news))
	{
#define UTWIG_BUY_TIME (1 << 0)
#define KOHR_AH_WIN (1 << 1)
#define URQUAN_LOSE (1 << 2)
#define KOHR_AH_KILL (1 << 3)
#define KNOW_ALL (UTWIG_BUY_TIME | KOHR_AH_WIN | URQUAN_LOSE | KOHR_AH_KILL)
		BYTE KnowMask;

		NumVisits = GET_GAME_STATE (UTWIG_SUPOX_MISSION);
		KnowMask = GET_GAME_STATE (ZOQFOT_KNOW_MASK);
		if (!(KnowMask & KOHR_AH_KILL) && GET_GAME_STATE (KOHR_AH_FRENZY))
		{
			NPCPhrase_cb (KOHRAH_FRENZY0, &SelectAlienZOQ);
			NPCPhrase_cb (KOHRAH_FRENZY1, &SelectAlienPIK);
			NPCPhrase_cb (KOHRAH_FRENZY2, &SelectAlienZOQ);
			NPCPhrase_cb (KOHRAH_FRENZY3, &SelectAlienPIK);
			NPCPhrase_cb (KOHRAH_FRENZY4, &SelectAlienZOQ);
			NPCPhrase_cb (KOHRAH_FRENZY5, &SelectAlienPIK);
			NPCPhrase_cb (KOHRAH_FRENZY6, &SelectAlienZOQ);
			NPCPhrase_cb (KOHRAH_FRENZY7, &SelectAlienPIK);
			NPCPhrase_cb (KOHRAH_FRENZY8, &SelectAlienZOQ);
			NPCPhrase_cb (KOHRAH_FRENZY9, &SelectAlienPIK);
			NPCPhrase_cb (KOHRAH_FRENZY10, &SelectAlienZOQ);
			NPCPhrase_cb (KOHRAH_FRENZY11, &SelectAlienPIK);
			ZFPTalkSegue ((COUNT)~0);

			KnowMask = KNOW_ALL;
		}
		else if (!(KnowMask & UTWIG_BUY_TIME)
				&& NumVisits > 0 && NumVisits < 5)
		{
			NPCPhrase_cb (UTWIG_DELAY0, &SelectAlienZOQ);
			NPCPhrase_cb (UTWIG_DELAY1, &SelectAlienPIK);
			NPCPhrase_cb (UTWIG_DELAY2, &SelectAlienZOQ);
			NPCPhrase_cb (UTWIG_DELAY3, &SelectAlienPIK);
			NPCPhrase_cb (UTWIG_DELAY4, &SelectAlienZOQ);
			NPCPhrase_cb (UTWIG_DELAY5, &SelectAlienPIK);
			NPCPhrase_cb (UTWIG_DELAY6, &SelectAlienZOQ);
			NPCPhrase_cb (UTWIG_DELAY7, &SelectAlienPIK);
			NPCPhrase_cb (UTWIG_DELAY8, &SelectAlienZOQ);
			NPCPhrase_cb (UTWIG_DELAY9, &SelectAlienPIK);
			NPCPhrase_cb (UTWIG_DELAY10, &SelectAlienZOQ);
			NPCPhrase_cb (UTWIG_DELAY11, &SelectAlienPIK);
			NPCPhrase_cb (UTWIG_DELAY12, &SelectAlienZOQ);
			NPCPhrase_cb (UTWIG_DELAY13, &SelectAlienPIK);
			ZFPTalkSegue ((COUNT)~0);

			KnowMask |= UTWIG_BUY_TIME;
		}
		else
		{
			SIZE i;

			i = START_YEAR + YEARS_TO_KOHRAH_VICTORY;
			if (NumVisits)
				++i;
			if ((i -= GLOBAL (GameClock.year_index)) == 1
					&& GLOBAL (GameClock.month_index) > 2)
				i = 0;
			if (!(KnowMask & URQUAN_LOSE) && i <= 0)
			{
				NPCPhrase_cb (URQUAN_NEARLY_GONE0, &SelectAlienZOQ);
				NPCPhrase_cb (URQUAN_NEARLY_GONE1, &SelectAlienPIK);
				NPCPhrase_cb (URQUAN_NEARLY_GONE2, &SelectAlienZOQ);
				NPCPhrase_cb (URQUAN_NEARLY_GONE3, &SelectAlienPIK);
				NPCPhrase_cb (URQUAN_NEARLY_GONE4, &SelectAlienZOQ);
				NPCPhrase_cb (URQUAN_NEARLY_GONE5, &SelectAlienPIK);
				ZFPTalkSegue ((COUNT)~0);

				KnowMask |= KOHR_AH_WIN | URQUAN_LOSE;
			}
			else if (!(KnowMask & KOHR_AH_WIN) && i == 1)
			{
				NPCPhrase_cb (KOHRAH_WINNING0, &SelectAlienZOQ);
				NPCPhrase_cb (KOHRAH_WINNING1, &SelectAlienPIK);
				NPCPhrase_cb (KOHRAH_WINNING2, &SelectAlienZOQ);
				NPCPhrase_cb (KOHRAH_WINNING3, &SelectAlienPIK);
				NPCPhrase_cb (KOHRAH_WINNING4, &SelectAlienZOQ);
				NPCPhrase_cb (KOHRAH_WINNING5, &SelectAlienPIK);
				NPCPhrase_cb (KOHRAH_WINNING6, &SelectAlienZOQ);
				NPCPhrase_cb (KOHRAH_WINNING7, &SelectAlienPIK);
				NPCPhrase_cb (KOHRAH_WINNING8, &SelectAlienZOQ);
				NPCPhrase_cb (KOHRAH_WINNING9, &SelectAlienPIK);
				ZFPTalkSegue ((COUNT)~0);

				KnowMask |= KOHR_AH_WIN;
			}
			else
			{
				NPCPhrase_cb (NO_WAR_NEWS0, &SelectAlienZOQ);
				NPCPhrase_cb (NO_WAR_NEWS1, &SelectAlienPIK);
				ZFPTalkSegue ((COUNT)~0);
			}
		}
		SET_GAME_STATE (ZOQFOT_KNOW_MASK, KnowMask);

		DISABLE_PHRASE (any_war_news);
	}
	else if (PLAYER_SAID (R, i_want_alliance))
	{
		NPCPhrase_cb (GOOD0, &SelectAlienZOQ);
		NPCPhrase_cb (GOOD1, &SelectAlienPIK);
		NPCPhrase_cb (GOOD2, &SelectAlienZOQ);
		NPCPhrase_cb (GOOD3, &SelectAlienPIK);
		NPCPhrase_cb (GOOD4, &SelectAlienZOQ);
		NPCPhrase_cb (GOOD5, &SelectAlienPIK);
		NPCPhrase_cb (GOOD6, &SelectAlienZOQ);
		NPCPhrase_cb (GOOD7, &SelectAlienPIK);
		NPCPhrase_cb (GOOD8, &SelectAlienZOQ);
		NPCPhrase_cb (GOOD9, &SelectAlienPIK);
		ZFPTalkSegue ((COUNT)~0);

		SetRaceAllied (ZOQFOTPIK_SHIP, TRUE);
		AddEvent (RELATIVE_EVENT, 3, 0, 0, ZOQFOT_DISTRESS_EVENT);
	}
	else if (PLAYER_SAID (R, enough_info))
	{
		NPCPhrase_cb (OK_ENOUGH_INFO, &SelectAlienZOQ);
		ZFPTalkSegue ((COUNT)~0);
	}

	if (PHRASE_ENABLED (whats_up_homeworld))
		Response (whats_up_homeworld, ZoqFotHome);
	if (PHRASE_ENABLED (any_war_news))
		Response (any_war_news, ZoqFotHome);
	if (CheckAlliance (ZOQFOTPIK_SHIP) != GOOD_GUY)
		Response (i_want_alliance, ZoqFotHome);
	else if (PHRASE_ENABLED (want_specific_info))
	{
		Response (want_specific_info, ZoqFotInfo);
	}
	Response (bye_homeworld, ExitConversation);
}
Esempio n. 10
0
static void
UmgahReward (RESPONSE_REF R)
{
	if (PLAYER_SAID (R, what_before_tpet))
	{
		NPCPhrase (TRKD_SPATHI_AND_ILWRATH);

		DISABLE_PHRASE (what_before_tpet);
	}
	else if (PLAYER_SAID (R, where_caster))
	{
		NPCPhrase (SPATHI_TOOK_THEM);

		DISABLE_PHRASE (where_caster);
	}
	else if (PLAYER_SAID (R, owe_me_big_time))
	{
		NPCPhrase (THANKS);

		GLOBAL_SIS (TotalBioMass) += 1000 / BIO_CREDIT_VALUE;
		DISABLE_PHRASE (owe_me_big_time);
		DISABLE_PHRASE (our_largesse);
	}
	else if (PLAYER_SAID (R, our_largesse))
	{
		NPCPhrase (GIVE_LIFEDATA);

		GLOBAL_SIS (TotalBioMass) += 1000 / BIO_CREDIT_VALUE;
		DISABLE_PHRASE (our_largesse);
		DISABLE_PHRASE (owe_me_big_time);
	}
	else if (PLAYER_SAID (R, what_do_with_tpet))
	{
		NPCPhrase (TRICK_URQUAN);

		DISABLE_PHRASE (what_do_with_tpet);
	}
	else if (PLAYER_SAID (R, any_jokes))
	{
		NPCPhrase (SURE);

		DISABLE_PHRASE (any_jokes);
	}
	else if (PLAYER_SAID (R, so_what_for_now))
	{
		NPCPhrase (DO_THIS_NOW);

		DISABLE_PHRASE (so_what_for_now);
	}

	if (!GET_GAME_STATE (MET_NORMAL_UMGAH))
	{
		if (PHRASE_ENABLED (what_before_tpet))
			Response (what_before_tpet, UmgahReward);
		else if (PHRASE_ENABLED (where_caster))
			Response (where_caster, UmgahReward);
	}
	if (PHRASE_ENABLED (owe_me_big_time))
	{
		Response (owe_me_big_time, UmgahReward);
		Response (our_largesse, UmgahReward);
	}
	if (PHRASE_ENABLED (what_do_with_tpet))
		Response (what_do_with_tpet, UmgahReward);
	else if (PHRASE_ENABLED (any_jokes) && GET_GAME_STATE (UMGAH_MENTIONED_TRICKS) < 2)
		Response (any_jokes, UmgahReward);
	if (PHRASE_ENABLED (so_what_for_now))
		Response (so_what_for_now, UmgahReward);
	Response (bye_post_zombie, CombatIsInevitable);
}
Esempio n. 11
0
static void
UrquanHypno (RESPONSE_REF R)
{
	if (GET_GAME_STATE (URQUAN_HYPNO_VISITS) == 0)
	{
		if (R == 0)
			NPCPhrase (INIT_URQUAN_WAKE_UP);
		else if (PLAYER_SAID (R, where_am_i))
		{
			NPCPhrase (YOU_ARE_HERE);

			DISABLE_PHRASE (where_am_i);
		}
		else if (PLAYER_SAID (R, why_does_my_head_hurt))
		{
			NPCPhrase (HURTS_BECAUSE);

			DISABLE_PHRASE (why_does_my_head_hurt);
		}
		else if (PLAYER_SAID (R, what_about_2_weeks))
		{
			NPCPhrase (ABOUT_2_WEEKS);

			DISABLE_PHRASE (what_about_2_weeks);
		}

		if (PHRASE_ENABLED (where_am_i))
			Response (where_am_i, UrquanHypno);
		if (PHRASE_ENABLED (why_does_my_head_hurt))
			Response (why_does_my_head_hurt, UrquanHypno);
		if (PHRASE_ENABLED (what_about_2_weeks))
			Response (what_about_2_weeks, UrquanHypno);
		Response (compulsion, MentionCompulsion);
		Response (bye_init_hypno, CombatIsInevitable);
	}
	else
	{
		if (R == 0)
			NPCPhrase (SUBSEQUENT_URQUAN_WAKE_UP);
		else if (PLAYER_SAID (R, uh_oh))
		{
			NPCPhrase (NO_UH_OH);

			DISABLE_PHRASE (uh_oh);
		}
		else if (PLAYER_SAID (R, stop_meeting))
		{
			NPCPhrase (NO_STOP_MEETING);

			DISABLE_PHRASE (stop_meeting);
		}

		if (PHRASE_ENABLED (uh_oh))
			Response (uh_oh, UrquanHypno);
		if (PHRASE_ENABLED (stop_meeting))
			Response (stop_meeting, UrquanHypno);
		if (!GET_GAME_STATE (MENTIONED_PET_COMPULSION))
		{
			Response (compulsion, MentionCompulsion);
		}
		Response (bye_sub_hypno, CombatIsInevitable);
	}
}
Esempio n. 12
0
static void
BombWorld (RESPONSE_REF R)
{
	BYTE LastStack;
	RESPONSE_REF pStr[2];

	LastStack = 0;
	pStr[0] = pStr[1] = 0;
	if (PLAYER_SAID (R, why_you_here))
	{
		NPCPhrase (WE_GUARD_BOMB);

		SET_GAME_STATE (BOMB_STACK1, 1);
	}
	else if (PLAYER_SAID (R, what_about_bomb))
	{
		NPCPhrase (ABOUT_BOMB);

		SET_GAME_STATE (BOMB_STACK1, 2);
	}
	else if (PLAYER_SAID (R, give_us_bomb_or_die))
	{
		NPCPhrase (GUARDS_WARN);

		SET_GAME_STATE (BOMB_STACK1, 3);
	}
	else if (PLAYER_SAID (R, demand_bomb))
	{
		NPCPhrase (GUARDS_FIGHT);

		setSegue (Segue_hostile);
		SET_GAME_STATE (UTWIG_HOSTILE, 1);
		SET_GAME_STATE (UTWIG_INFO, 0);
		SET_GAME_STATE (UTWIG_HOME_VISITS, 0);
		SET_GAME_STATE (UTWIG_VISITS, 0);
		SET_GAME_STATE (BOMB_VISITS, 0);
		return;
	}
	else if (PLAYER_SAID (R, may_we_have_bomb))
	{
		NPCPhrase (NO_BOMB);

		LastStack = 1;
		SET_GAME_STATE (BOMB_STACK2, 1);
	}
	else if (PLAYER_SAID (R, please))
	{
		NPCPhrase (SORRY_NO_BOMB);

		SET_GAME_STATE (BOMB_STACK2, 2);
	}
	else if (PLAYER_SAID (R, whats_up_bomb))
	{
		if (GET_GAME_STATE (BOMB_INFO))
			NPCPhrase (GENERAL_INFO_BOMB_2);
		else
		{
			NPCPhrase (GENERAL_INFO_BOMB_1);

			SET_GAME_STATE (BOMB_INFO, 1);
		}

		DISABLE_PHRASE (whats_up_bomb);
	}

	switch (GET_GAME_STATE (BOMB_STACK2))
	{
		case 0:
			pStr[1] = may_we_have_bomb;
			break;
		case 1:
			pStr[1] = please;
			break;
	}
	switch (GET_GAME_STATE (BOMB_STACK1))
	{
		case 0:
			pStr[0] = why_you_here;
			pStr[1] = 0;
			break;
		case 1:
			pStr[0] = what_about_bomb;
			pStr[1] = 0;
			break;
		case 2:
			pStr[0] = give_us_bomb_or_die;
			break;
		case 3:
			pStr[0] = demand_bomb;
			break;
	}

	if (pStr[LastStack])
		Response (pStr[LastStack], BombWorld);
	LastStack ^= 1;
	if (pStr[LastStack])
		Response (pStr[LastStack], BombWorld);

	if (PHRASE_ENABLED (whats_up_bomb) && (GET_GAME_STATE (BOMB_STACK1) > 1))
		Response (whats_up_bomb, BombWorld);

	if (GET_GAME_STATE (ULTRON_CONDITION)
			&& !GET_GAME_STATE (REFUSED_ULTRON_AT_BOMB))
		Response (got_ultron, ExitConversation);

	if (GET_GAME_STATE (BOMB_INFO))
	{
		Response (bye_bomb, ExitConversation);
	}
	else
	{
		Response (bye_neutral, ExitConversation);
	}
}
Esempio n. 13
0
static void
Zombies (RESPONSE_REF R)
{
	if (GET_GAME_STATE (MET_NORMAL_UMGAH))
	{
		if (PLAYER_SAID (R, whats_up_zombies))
		{
			NPCPhrase (GENERAL_INFO_ZOMBIE);

			DISABLE_PHRASE (whats_up_zombies);
		}
		else if (PLAYER_SAID (R, how_goes_tpet))
		{
			NPCPhrase (WHAT_TPET);

			DISABLE_PHRASE (how_goes_tpet);
		}
		else if (PLAYER_SAID (R, you_told_us))
		{
			NPCPhrase (SADLY_IT_DIED);

			DISABLE_PHRASE (you_told_us);
		}

		if (PHRASE_ENABLED (whats_up_zombies) && PHRASE_ENABLED (how_goes_tpet))
			Response (whats_up_zombies, Zombies);
		if (PHRASE_ENABLED (how_goes_tpet))
			Response (how_goes_tpet, Zombies);
		else if (PHRASE_ENABLED (you_told_us))
			Response (you_told_us, Zombies);
		else
		{
			Response (dont_believe, CombatIsInevitable);
		}
		if (PHRASE_ENABLED (whats_up_zombies) && !PHRASE_ENABLED (how_goes_tpet))
			Response (whats_up_zombies, Zombies);
		Response (threat, CombatIsInevitable);
		Response (bye_unknown, CombatIsInevitable);
	}
	else
	{
		BYTE i, LastStack;
		RESPONSE_REF pStr[4];

		LastStack = 0;
		pStr[0] = pStr[1] = pStr[2] = pStr[3] = 0;
		if (PLAYER_SAID (R, evil_blobbies))
		{
			NPCPhrase (YES_VERY_EVIL);

			DISABLE_PHRASE (evil_blobbies);
			LastStack = 0;
		}
		else if (PLAYER_SAID (R, we_vindicator0))
		{
			NPCPhrase (GOOD_FOR_YOU_1);

			DISABLE_PHRASE (we_vindicator0);
			LastStack = 1;
		}
		else if (PLAYER_SAID (R, come_in_peace))
		{
			NPCPhrase (GOOD_FOR_YOU_2);

			DISABLE_PHRASE (come_in_peace);
			LastStack = 1;
		}
		else if (PLAYER_SAID (R, know_any_jokes))
		{
			NPCPhrase (JOKE_1);

			DISABLE_PHRASE (know_any_jokes);
			LastStack = 2;
		}
		else if (PLAYER_SAID (R, better_joke))
		{
			NPCPhrase (JOKE_2);

			DISABLE_PHRASE (better_joke);
			LastStack = 2;
		}
		else if (PLAYER_SAID (R, not_very_funny))
		{
			NPCPhrase (YES_WE_ARE);

			DISABLE_PHRASE (not_very_funny);
			LastStack = 2;
		}
		else if (PLAYER_SAID (R, what_about_tpet))
		{
			NPCPhrase (WHAT_TPET);

			DISABLE_PHRASE (what_about_tpet);
			LastStack = 3;
		}
		else if (PLAYER_SAID (R, give_up_or_die))
		{
			NPCPhrase (NOT_GIVE_UP);

			SET_GAME_STATE (BATTLE_SEGUE, 1);
			return;
		}
		else if (PLAYER_SAID (R, arilou_told_us))
		{
			NPCPhrase (THEN_DIE);

			SET_GAME_STATE (BATTLE_SEGUE, 1);
			SET_GAME_STATE (KNOW_UMGAH_ZOMBIES, 1);
			SET_GAME_STATE (UMGAH_VISITS, 0);
			return;
		}

		if (PHRASE_ENABLED (evil_blobbies))
			pStr[0] = evil_blobbies;
		else
			pStr[0] = give_up_or_die;

		if (PHRASE_ENABLED (we_vindicator0))
		{
			construct_response (shared_phrase_buf,
					we_vindicator0,
					GLOBAL_SIS (CommanderName),
					we_vindicator1,
					GLOBAL_SIS (ShipName),
					we_vindicator2,
					(UNICODE*)NULL);
			pStr[1] = we_vindicator0;
		}
		else if (PHRASE_ENABLED (come_in_peace))
			pStr[1] = come_in_peace;

		if (PHRASE_ENABLED (know_any_jokes))
			pStr[2] = know_any_jokes;
		else if (PHRASE_ENABLED (better_joke))
			pStr[2] = better_joke;
		else if (PHRASE_ENABLED (not_very_funny))
			pStr[2] = not_very_funny;

		if (PHRASE_ENABLED (what_about_tpet))
			pStr[3] = what_about_tpet;
		else
			pStr[3] = arilou_told_us;

		if (pStr[LastStack])
		{
			if (pStr[LastStack] != we_vindicator0)
				Response (pStr[LastStack], Zombies);
			else
				DoResponsePhrase (pStr[LastStack], Zombies, shared_phrase_buf);
		}
		for (i = 0; i < 4; ++i)
		{
			if (i != LastStack && pStr[i])
			{
				if (pStr[i] != we_vindicator0)
					Response (pStr[i], Zombies);
				else
					DoResponsePhrase (pStr[i], Zombies, shared_phrase_buf);
			}
		}
		Response (bye_zombie, CombatIsInevitable);
	}
}
Esempio n. 14
0
static void
AlliedHome (RESPONSE_REF R)
{
	BYTE NumVisits, News;

	News = GET_GAME_STATE (UTWIG_WAR_NEWS);
	NumVisits = GET_GAME_STATE (UTWIG_SUPOX_MISSION);
	if (PLAYER_SAID (R, how_went_war))
	{
		NPCPhrase (ABOUT_BATTLE);

		News |= (1 << 0);
	}
	else if (PLAYER_SAID (R, how_goes_war))
	{
		if (NumVisits == 1)
		{
			NPCPhrase (FLEET_ON_WAY);

			SET_GAME_STATE (UTWIG_WAR_NEWS, 1);
		}
		else switch (GET_GAME_STATE (UTWIG_WAR_NEWS))
		{
			case 0:
				NPCPhrase (BATTLE_HAPPENS_1);
				News = 1;
				break;
			case 1:
				NPCPhrase (BATTLE_HAPPENS_2);
				News = 2;
				break;
		}

		DISABLE_PHRASE (how_goes_war);
	}
	else if (PLAYER_SAID (R, learn_new_info))
	{
		if (NumVisits < 5)
			NPCPhrase (NO_NEW_INFO);
		else
		{
			NPCPhrase (SAMATRA);

			News |= (1 << 1);
		}

		DISABLE_PHRASE (learn_new_info);
	}
	else if (PLAYER_SAID (R, what_now_homeworld))
	{
		if (NumVisits < 5)
			NPCPhrase (UP_TO_YOU);
		else
			NPCPhrase (HOPE_KILL_EACH_OTHER);

		DISABLE_PHRASE (what_now_homeworld);
	}
	else if (PLAYER_SAID (R, how_is_ultron))
	{
		NPCPhrase (ULTRON_IS_GREAT);

		DISABLE_PHRASE (how_is_ultron);
	}
	SET_GAME_STATE (UTWIG_WAR_NEWS, News);

	if (NumVisits >= 5)
	{
		if (!(News & (1 << 0)))
			Response (how_went_war, AlliedHome);
	}
	else if (PHRASE_ENABLED (how_goes_war)
			&& ((NumVisits == 1 && News == 0)
			|| (NumVisits && News < 2)))
		Response (how_goes_war, AlliedHome);
	if (PHRASE_ENABLED (learn_new_info))
		Response (learn_new_info, AlliedHome);
	if (PHRASE_ENABLED (what_now_homeworld))
		Response (what_now_homeworld, AlliedHome);
	if (PHRASE_ENABLED (how_is_ultron))
		Response (how_is_ultron, AlliedHome);
	if (NumVisits == 0 && EscortFeasibilityStudy (UTWIG_SHIP) != 0)
		Response (can_you_help, ExitConversation);
	Response (bye_allied_homeworld, ExitConversation);
}
Esempio n. 15
0
static void
GodsSpeak (RESPONSE_REF R)
{
	BYTE NumVisits;

	if (R == 0)
	{
		if (GET_GAME_STATE (ILWRATH_FIGHT_THRADDASH))
			NPCPhrase (GLORIOUS_WORSHIP);
		else if (GET_GAME_STATE (ILWRATH_DECEIVED))
			NPCPhrase (ON_WAY);
		else
		{
			NumVisits = GET_GAME_STATE (ILWRATH_GODS_SPOKEN);
			switch (NumVisits++)
			{
				case 0:
					NPCPhrase (ILWRATH_BELIEVE);
					break;
				case 1:
					NPCPhrase (GODS_RETURN_1);
					break;
				case 2:
					NPCPhrase (GODS_RETURN_2);
					break;
				case 3:
					NPCPhrase (GODS_RETURN_3);
					--NumVisits;
					break;
			}
			SET_GAME_STATE (ILWRATH_GODS_SPOKEN, NumVisits);
		}
	}
	else if (PLAYER_SAID (R, go_kill_thraddash))
	{
		NPCPhrase (OK_KILL_THRADDASH);

		SET_GAME_STATE (ILWRATH_DECEIVED, 1);
		AddEvent (RELATIVE_EVENT, 0, 0, 0, ADVANCE_ILWRATH_MISSION);
	}
	else if (PLAYER_SAID (R, worship_us))
	{
		NumVisits = GET_GAME_STATE (ILWRATH_WORSHIP);
		switch (NumVisits++)
		{
			case 0:
				NPCPhrase (WE_WORSHIP_1);
				break;
			case 1:
				NPCPhrase (WE_WORSHIP_2);
				break;
			case 2:
				NPCPhrase (WE_WORSHIP_3);
				--NumVisits;
				break;
		}
		SET_GAME_STATE (ILWRATH_WORSHIP, NumVisits);

		DISABLE_PHRASE (worship_us);
	}
	else if (PLAYER_SAID (R, enough_orders))
		NPCPhrase (NEVER_ENOUGH);

	if (!GET_GAME_STATE (ILWRATH_DECEIVED))
		Response (go_kill_thraddash, GodsSpeak);
	if (PHRASE_ENABLED (worship_us))
		Response (worship_us, GodsSpeak);
	if (PHRASE_ENABLED (other_divine_orders))
	{
		Response (other_divine_orders, GodsOrder);
	}
	Response (bye_gods, CombatIsInevitable);
}
Esempio n. 16
0
static void
IlwrathInfo (RESPONSE_REF R)
{
	BYTE InfoLeft;

	InfoLeft = FALSE;
	if (PLAYER_SAID (R, want_info_on_ilwrath))
		NPCPhrase (WHAT_ABOUT_ILWRATH);
	else if (PLAYER_SAID (R, what_about_physio))
	{
		NPCPhrase (ABOUT_PHYSIO);

		DISABLE_PHRASE (what_about_physio);
	}
	else if (PLAYER_SAID (R, what_about_history))
	{
		NPCPhrase (ABOUT_HISTORY);

		DISABLE_PHRASE (what_about_history);
	}
	else if (PLAYER_SAID (R, what_about_culture))
	{
		NPCPhrase (ABOUT_CULTURE);

		DISABLE_PHRASE (what_about_culture);
	}
	else if (PLAYER_SAID (R, what_about_urquan))
	{
		NPCPhrase (URQUAN_TOO_NICE);

		DISABLE_PHRASE (what_about_urquan);
	}
	else if (PLAYER_SAID (R, are_you_evil))
	{
		NPCPhrase (OF_COURSE_WERE_EVIL);

		DISABLE_PHRASE (are_you_evil);
	}

	if (PHRASE_ENABLED (what_about_physio))
	{
		Response (what_about_physio, IlwrathInfo);
		InfoLeft = TRUE;
	}
	if (PHRASE_ENABLED (what_about_history))
	{
		Response (what_about_history, IlwrathInfo);
		InfoLeft = TRUE;
	}
	if (PHRASE_ENABLED (what_about_culture))
	{
		Response (what_about_culture, IlwrathInfo);
		InfoLeft = TRUE;
	}
	if (PHRASE_ENABLED (what_about_urquan))
	{
		Response (what_about_urquan, IlwrathInfo);
		InfoLeft = TRUE;
	}
	if (PHRASE_ENABLED (are_you_evil))
	{
		Response (are_you_evil, IlwrathInfo);
		InfoLeft = TRUE;
	}
	else
	{
		Response (but_evil_is_defined, CombatIsInevitable);
		InfoLeft = TRUE;
	}
	Response (enough_ilwrath, IlwrathHome);

	if (!InfoLeft)
		DISABLE_PHRASE (want_info_on_ilwrath);
}
Esempio n. 17
0
static void
SpathiAllies (RESPONSE_REF R)
{
	BYTE NumVisits;

	if (R == 0)
	{
		NumVisits = GET_GAME_STATE (SPATHI_HOME_VISITS);
		switch (NumVisits++)
		{
			case 0:
				NPCPhrase (HELLO_ALLIES_1);
				break;
			case 1:
				NPCPhrase (HELLO_ALLIES_2);
				break;
			case 2:
				NPCPhrase (HELLO_ALLIES_3);
				--NumVisits;
				break;
		}
		SET_GAME_STATE (SPATHI_HOME_VISITS, NumVisits);
	}
	else if (PLAYER_SAID (R, whats_up))
	{
		NumVisits = GET_GAME_STATE (SPATHI_INFO);
		switch (NumVisits++)
		{
			case 0:
				NPCPhrase (GENERAL_INFO_1);
				break;
			case 1:
				NPCPhrase (GENERAL_INFO_2);
				break;
			case 2:
				NPCPhrase (GENERAL_INFO_3);
				SET_GAME_STATE (KNOW_URQUAN_STORY, 1);
				SET_GAME_STATE (KNOW_KOHR_AH_STORY, 1);
				break;
			case 3:
				NPCPhrase (GENERAL_INFO_4);
				break;
			case 4:
				NPCPhrase (GENERAL_INFO_5);
				--NumVisits;
				break;
			case 5:
				NPCPhrase (GENERAL_INFO_5);
				--NumVisits;
				break;
		}
		SET_GAME_STATE (SPATHI_INFO, NumVisits);

		DISABLE_PHRASE (whats_up);
	}
	else if (PLAYER_SAID (R, resources_please))
	{
		NPCPhrase (SORRY_NO_RESOURCES);

		DISABLE_PHRASE (resources_please);
	}
	else if (PLAYER_SAID (R, something_fishy))
	{
		NPCPhrase (NOTHING_FISHY);

		SET_GAME_STATE (SPATHI_INFO, 5);
	}
	else if (PLAYER_SAID (R, enough_info))
		NPCPhrase (OK_ENOUGH_INFO);

	if (GET_GAME_STATE (SPATHI_INFO) == 4)
		Response (something_fishy, SpathiAllies);
	if (PHRASE_ENABLED (whats_up))
		Response (whats_up, SpathiAllies);
	if (PHRASE_ENABLED (resources_please))
		Response (resources_please, SpathiAllies);
	if (PHRASE_ENABLED (like_some_info))
		Response (like_some_info, SpathiInfo);
	Response (bye_ally, ExitConversation);
}
Esempio n. 18
0
static void
SpathiCouncil (RESPONSE_REF R)
{
	if (R == 0)
		NPCPhrase (HELLO_AGAIN);
	else if (PLAYER_SAID (R, good_password))
	{
		NPCPhrase (YES_GOOD_PASSWORD);
		XFormColorMap (GetColorMapAddress (
				SetAbsColorMapIndex (CommData.AlienColorMap, 1)
				), ONE_SECOND / 4);

		SET_GAME_STATE (KNOW_SPATHI_PASSWORD, 1);
		SET_GAME_STATE (SPATHI_HOME_VISITS, 0);
	}
	else if (PLAYER_SAID (R, we_come_in_peace))
	{
		NPCPhrase (KILLED_SPATHI);

		DISABLE_PHRASE (we_come_in_peace);
	}
	else if (PLAYER_SAID (R, spathi_on_pluto))
	{
		NPCPhrase (WHERE_SPATHI);

		DISABLE_PHRASE (spathi_on_pluto);
	}
	else if (PLAYER_SAID (R, hostage))
	{
		NPCPhrase (GUN_TO_HEAD);

		SET_GAME_STATE (FOUND_PLUTO_SPATHI, 3);
		DISABLE_PHRASE (hostage);
	}
	else if (PLAYER_SAID (R, killed_fwiffo))
	{
		NPCPhrase (POOR_FWIFFO);

		SET_GAME_STATE (FOUND_PLUTO_SPATHI, 3);
		DISABLE_PHRASE (killed_fwiffo);
	}
	else if (PLAYER_SAID (R, fwiffo_fine))
	{
		NPCPhrase (NOT_LIKELY);

		R = killed_fwiffo;
		DISABLE_PHRASE (fwiffo_fine);
	}
	else if (PLAYER_SAID (R, surrender))
	{
		NPCPhrase (NO_SURRENDER);

		DISABLE_PHRASE (surrender);
	}

	if (GET_GAME_STATE (SPATHI_MANNER) == 0)
	{
		Response (we_come_in_peace, AllianceOffer);
	}
	else if (PHRASE_ENABLED (we_come_in_peace))
	{
		Response (we_come_in_peace, SpathiCouncil);
	}
	else
	{
		Response (misunderstanding, AllianceOffer);
	}
	if (GET_GAME_STATE (FOUND_PLUTO_SPATHI)
			&& GET_GAME_STATE (FOUND_PLUTO_SPATHI) < 3)
	{
		if (PHRASE_ENABLED (spathi_on_pluto))
			Response (spathi_on_pluto, SpathiCouncil);
		else if (ActivateStarShip (SPATHI_SHIP, ESCORTING_FLAGSHIP))
		{
			if (PHRASE_ENABLED (hostage))
				Response (hostage, SpathiCouncil);
		}
		else if (PHRASE_ENABLED (killed_fwiffo))
		{
			Response (killed_fwiffo, SpathiCouncil);
			if (PHRASE_ENABLED (fwiffo_fine))
				Response (fwiffo_fine, SpathiCouncil);
		}
	}
	if (PHRASE_ENABLED (surrender))
		Response (surrender, SpathiCouncil);
	else
	{
		Response (surrender_or_die, ExitConversation);
	}
	Response (bye_no_ally_offer, ExitConversation);
}
Esempio n. 19
0
static void
LearnQuest (RESPONSE_REF R)
{
	if (R == 0)
	{
		NPCPhrase (QUEST_AGAIN);

		DISABLE_PHRASE (what_test);
		if (GET_GAME_STATE (KNOW_SPATHI_EVIL))
		{
			DISABLE_PHRASE (tell_evil);
		}
	}
	else if (PLAYER_SAID (R, how_prove))
		NPCPhrase (BETTER_IDEA);
	else if (PLAYER_SAID (R, what_test))
	{
		NPCPhrase (WIPE_EVIL);

		SET_GAME_STATE (KNOW_SPATHI_QUEST, 1);
		DISABLE_PHRASE (what_test);
	}
	else if (PLAYER_SAID (R, tell_evil))
	{
		NPCPhrase (BEFORE_ACCEPT);

		SET_GAME_STATE (KNOW_SPATHI_EVIL, 1);
		DISABLE_PHRASE (tell_evil);
		DISABLE_PHRASE (prove_strength);
	}
	else if (PLAYER_SAID (R, prove_strength))
	{
		NPCPhrase (YOUR_BEHAVIOR);

		DISABLE_PHRASE (prove_strength);
	}
	else if (PLAYER_SAID (R, why_dont_you_do_it))
	{
		NPCPhrase (WE_WONT_BECAUSE);

		DISABLE_PHRASE (why_dont_you_do_it);
	}

	if (PHRASE_ENABLED (what_test))
		Response (what_test, LearnQuest);
	else if (GET_GAME_STATE (SPATHI_CREATURES_ELIMINATED))
	{
		Response (already_got_them, ExitConversation);
	}
	else if (PHRASE_ENABLED (tell_evil))
	{
		Response (too_dangerous, ExitConversation);
		Response (tell_evil, LearnQuest);
	}
	else
	{
		Response (too_dangerous, ExitConversation);
		Response (think_more, ExitConversation);
		Response (i_accept, ExitConversation);
	}
	if (PHRASE_ENABLED (prove_strength) && !GET_GAME_STATE (KNOW_SPATHI_QUEST))
		Response (prove_strength, LearnQuest);
	if (PHRASE_ENABLED (why_dont_you_do_it))
		Response (why_dont_you_do_it, LearnQuest);
}
Esempio n. 20
0
static void
AskAfterRadios (RESPONSE_REF R)
{
	if (PLAYER_SAID (R, i_lost_my_lander))
	{
		NPCPhrase (HERE_IS_A_NEW_LANDER);
		++GLOBAL_SIS (NumLanders);
		LockMutex (GraphicsLock);
		DrawLanders ();
		DeltaSISGauges (4, 0, 0);
		UnlockMutex (GraphicsLock);

		SET_GAME_STATE (LANDERS_LOST, 1);
	}
	else if (PLAYER_SAID (R, i_lost_another_lander))
	{
		NPCPhrase (HERE_IS_ANOTHER_LANDER);
		++GLOBAL_SIS (NumLanders);
		LockMutex (GraphicsLock);
		DrawLanders ();
		DeltaSISGauges (4, 0, 0);
		UnlockMutex (GraphicsLock);
	}
	else if (PLAYER_SAID (R, need_fuel_mercury) ||
			PLAYER_SAID (R, need_fuel_luna))
	{
		NPCPhrase (GIVE_FUEL);
		LockMutex (GraphicsLock);
		DeltaSISGauges (0, 5 * FUEL_TANK_SCALE, 0);
		UnlockMutex (GraphicsLock);

		SET_GAME_STATE (GIVEN_FUEL_BEFORE, 1);
	}
	else if (PLAYER_SAID (R, need_fuel_again))
	{
		NPCPhrase (GIVE_FUEL_AGAIN);
		LockMutex (GraphicsLock);
		DeltaSISGauges (0, 5 * FUEL_TANK_SCALE, 0);
		UnlockMutex (GraphicsLock);
	}
	else if (PLAYER_SAID (R, where_get_radios))
	{
		NPCPhrase (RADIOS_ON_MERCURY);

		DISABLE_PHRASE (where_get_radios);
	}

	{
		if (GLOBAL_SIS (NumLanders) == 0
				&& GET_GAME_STATE (CHMMR_BOMB_STATE) < 2)
		{
			if (GET_GAME_STATE (LANDERS_LOST))
				Response (i_lost_another_lander, AskAfterRadios);
			else
				Response (i_lost_my_lander, AskAfterRadios);
		}
		if (GLOBAL_SIS (FuelOnBoard) < 2 * FUEL_TANK_SCALE)
		{
			if (GET_GAME_STATE (GIVEN_FUEL_BEFORE))
				Response (need_fuel_again, AskAfterRadios);
			else
				Response (need_fuel_mercury, AskAfterRadios);
		}
		Response (well_go_get_them_now, ByeBye);
		if (PHRASE_ENABLED (where_get_radios))
		{
			Response (where_get_radios, AskAfterRadios);
		}
	}
}
Esempio n. 21
0
static void
SpathiParty (RESPONSE_REF R)
{
	if (R == 0)
	{
		BYTE NumVisits;

		NumVisits = GET_GAME_STATE (SPATHI_HOME_VISITS);
		switch (NumVisits++)
		{
			case 0:
				NPCPhrase (MUST_PARTY_1);
				break;
			case 1:
				NPCPhrase (MUST_PARTY_2);
				break;
			case 2:
				NPCPhrase (MUST_PARTY_3);
				--NumVisits;
				break;
		}
		SET_GAME_STATE (SPATHI_HOME_VISITS, NumVisits);
	}
	else if (PLAYER_SAID (R, deals_a_deal))
	{
		NPCPhrase (WAIT_A_WHILE);

		DISABLE_PHRASE (deals_a_deal);
	}
	else if (PLAYER_SAID (R, how_long))
	{
		NPCPhrase (TEN_YEARS);

		DISABLE_PHRASE (how_long);
	}
	else if (PLAYER_SAID (R, reneging))
	{
		NPCPhrase (ADULT_VIEW);

		DISABLE_PHRASE (reneging);
	}
	else if (PLAYER_SAID (R, return_beasts))
	{
		NPCPhrase (WHAT_RELATIONSHIP);

		DISABLE_PHRASE (return_beasts);
	}
	else if (PLAYER_SAID (R, minds_and_might))
	{
		NPCPhrase (HUH);

		DISABLE_PHRASE (minds_and_might);
	}
	else if (PLAYER_SAID (R, fellowship))
	{
		NPCPhrase (WHAT);

		DISABLE_PHRASE (fellowship);
	}

	if (PHRASE_ENABLED (deals_a_deal))
		Response (deals_a_deal, SpathiParty);
	else if (PHRASE_ENABLED (how_long))
		Response (how_long, SpathiParty);
	else if (PHRASE_ENABLED (reneging))
		Response (reneging, SpathiParty);
	else if (PHRASE_ENABLED (return_beasts))
		Response (return_beasts, SpathiParty);
	else
	{
		if (PHRASE_ENABLED (minds_and_might))
			Response (minds_and_might, SpathiParty);
		if (PHRASE_ENABLED (fellowship))
			Response (fellowship, SpathiParty);
		Response (do_as_we_say, ExitConversation);

		return;
	}
	switch (GET_GAME_STATE (SPATHI_HOME_VISITS) - 1)
	{
		case 0:
			Response (bye_from_party_1, ExitConversation);
			break;
		case 1:
			Response (bye_from_party_2, ExitConversation);
			break;
		default:
			Response (bye_from_party_3, ExitConversation);
			break;
	}
}
Esempio n. 22
0
static void
ZoqFotInfo (RESPONSE_REF R)
{
	BYTE InfoLeft;

	if (PLAYER_SAID (R, want_specific_info))
	{
		NPCPhrase_cb (WHAT_SPECIFIC_INFO0, &SelectAlienZOQ);
		NPCPhrase_cb (WHAT_SPECIFIC_INFO1, &SelectAlienPIK);
		ZFPTalkSegue ((COUNT)~0);
	}
	else if (PLAYER_SAID (R, what_about_others))
	{
		NPCPhrase_cb (ABOUT_OTHERS0, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_OTHERS1, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_OTHERS2, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_OTHERS3, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_OTHERS4, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_OTHERS5, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_OTHERS6, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_OTHERS7, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_OTHERS8, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_OTHERS9, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_OTHERS10, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_OTHERS11, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_OTHERS12, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_OTHERS13, &SelectAlienPIK);
		ZFPTalkSegue ((COUNT)~0);

		DISABLE_PHRASE (what_about_others);
	}
	else if (PLAYER_SAID (R, what_about_zebranky))
	{
		NPCPhrase_cb (ABOUT_ZEBRANKY0, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_ZEBRANKY1, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_ZEBRANKY2, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_ZEBRANKY3, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_ZEBRANKY4, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_ZEBRANKY5, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_ZEBRANKY6, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_ZEBRANKY7, &SelectAlienPIK);
		ZFPTalkSegue ((COUNT)~0);

		DISABLE_PHRASE (what_about_zebranky);
	}
	else if (PLAYER_SAID (R, what_about_stinger))
	{
		NPCPhrase_cb (ABOUT_STINGER0, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_STINGER1, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_STINGER2, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_STINGER3, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_STINGER4, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_STINGER5, &SelectAlienPIK);
		ZFPTalkSegue ((COUNT)~0);

		DISABLE_PHRASE (what_about_stinger);
	}
	else if (PLAYER_SAID (R, what_about_guy_in_back))
	{
		NPCPhrase_cb (ABOUT_GUY0, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_GUY1, &SelectAlienPIK);
		ZFPTalkSegue ((COUNT)~0);

		DISABLE_PHRASE (what_about_guy_in_back);
	}
	else if (PLAYER_SAID (R, what_about_past))
	{
		NPCPhrase_cb (ABOUT_PAST0, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_PAST1, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_PAST2, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_PAST3, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_PAST4, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_PAST5, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_PAST6, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_PAST7, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_PAST8, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_PAST9, &SelectAlienPIK);
		NPCPhrase_cb (ABOUT_PAST10, &SelectAlienZOQ);
		NPCPhrase_cb (ABOUT_PAST11, &SelectAlienPIK);
		ZFPTalkSegue ((COUNT)~0);

		DISABLE_PHRASE (what_about_past);
	}

	InfoLeft = FALSE;
	if (PHRASE_ENABLED (what_about_others))
	{
		Response (what_about_others, ZoqFotInfo);
		InfoLeft = TRUE;
	}
	if (PHRASE_ENABLED (what_about_zebranky))
	{
		Response (what_about_zebranky, ZoqFotInfo);
		InfoLeft = TRUE;
	}
	if (PHRASE_ENABLED (what_about_stinger))
	{
		Response (what_about_stinger, ZoqFotInfo);
		InfoLeft = TRUE;
	}
	if (PHRASE_ENABLED (what_about_guy_in_back))
	{
		Response (what_about_guy_in_back, ZoqFotInfo);
		InfoLeft = TRUE;
	}
	if (PHRASE_ENABLED (what_about_past))
	{
		Response (what_about_past, ZoqFotInfo);
		InfoLeft = TRUE;
	}
	Response (enough_info, ZoqFotHome);

	if (!InfoLeft)
	{
		DISABLE_PHRASE (want_specific_info);
	}
}
Esempio n. 23
0
static void
NoRadioactives (RESPONSE_REF R)
{
	if (PLAYER_SAID (R, yes_this_is_supply_ship))
	{
		NPCPhrase (ABOUT_TIME);

		if (GLOBAL_SIS (ElementAmounts[RADIOACTIVE]))
			GiveRadios (0);
		else
		{
			Response (i_lied, NoRadioactives);
			Response (plumb_out, NoRadioactives);
		}
	}
	else
	{
		if (PLAYER_SAID (R, where_can_i_get_radios))
		{
			NPCPhrase (RADIOS_ON_MERCURY);

			DISABLE_PHRASE (where_can_i_get_radios);
		}
		else if (PLAYER_SAID (R, no_but_well_help0))
			NPCPhrase (THE_WHAT_FROM_WHERE);
		else if (PLAYER_SAID (R, what_slave_planet)
				|| PLAYER_SAID (R, i_lied))
			NPCPhrase (DONT_KNOW_WHO_YOU_ARE);
		else if (PLAYER_SAID (R, plumb_out))
			NPCPhrase (WHAT_KIND_OF_IDIOT);
		else if (PLAYER_SAID (R, i_lost_my_lander))
		{
			NPCPhrase (HERE_IS_A_NEW_LANDER);
			++GLOBAL_SIS (NumLanders);
			LockMutex (GraphicsLock);
			DrawLanders ();
			DeltaSISGauges (4, 0, 0);
			UnlockMutex (GraphicsLock);

			SET_GAME_STATE (LANDERS_LOST, 1);
		}
		else if (PLAYER_SAID (R, i_lost_another_lander))
		{
			NPCPhrase (HERE_IS_ANOTHER_LANDER);
			++GLOBAL_SIS (NumLanders);
			LockMutex (GraphicsLock);
			DrawLanders ();
			DeltaSISGauges (4, 0, 0);
			UnlockMutex (GraphicsLock);
		}
		else if (PLAYER_SAID (R, need_fuel_mercury) ||
				PLAYER_SAID (R, need_fuel_luna))
		{
			NPCPhrase (GIVE_FUEL);
			LockMutex (GraphicsLock);
			DeltaSISGauges (0, 5 * FUEL_TANK_SCALE, 0);
			UnlockMutex (GraphicsLock);

			SET_GAME_STATE (GIVEN_FUEL_BEFORE, 1);
		}
		else if (PLAYER_SAID (R, need_fuel_again))
		{
			NPCPhrase (GIVE_FUEL_AGAIN);
			LockMutex (GraphicsLock);
			DeltaSISGauges (0, 5 * FUEL_TANK_SCALE, 0);
			UnlockMutex (GraphicsLock);
		}

		if (GLOBAL_SIS (ElementAmounts[RADIOACTIVE]))
			GiveRadios (0);
		else
		{
			if (GLOBAL_SIS (NumLanders) == 0
					&& GET_GAME_STATE (CHMMR_BOMB_STATE) < 2)
			{
				if (GET_GAME_STATE (LANDERS_LOST))
					Response (i_lost_another_lander, NoRadioactives);
				else
					Response (i_lost_my_lander, NoRadioactives);
			}
			if (GLOBAL_SIS (FuelOnBoard) < 2 * FUEL_TANK_SCALE)
			{
				if (GET_GAME_STATE (GIVEN_FUEL_BEFORE))
					Response (need_fuel_again, NoRadioactives);
				else
					Response (need_fuel_mercury, NoRadioactives);
			}
	
			Response (ok_i_will_get_radios, ByeBye);
			if (PHRASE_ENABLED (where_can_i_get_radios))
			{
				Response (where_can_i_get_radios, NoRadioactives);
			}
		}
	}
}
Esempio n. 24
0
static void
TaaloWorld (RESPONSE_REF R)
{
    // We can only get here when ORZ_MANNER != HOSTILE (2)
    BYTE Manner;

    Manner = GET_GAME_STATE (ORZ_MANNER);
    if (PLAYER_SAID (R, demand_to_land))
    {
        NPCPhrase (ASK_NICELY);

        DISABLE_PHRASE (demand_to_land);
    }
    else if (PLAYER_SAID (R, why_you_here))
    {
        if (Manner != 1)
            NPCPhrase (FRIENDLY_EXPLANATION);
        else
            NPCPhrase (ANGRY_EXPLANATION);

        DISABLE_PHRASE (why_you_here);
    }
    else if (PLAYER_SAID (R, what_is_this_place))
    {
        if (Manner != 1)
            NPCPhrase (FRIENDLY_PLACE);
        else
            NPCPhrase (ANGRY_PLACE);

        DISABLE_PHRASE (what_is_this_place);
    }
    else if (PLAYER_SAID (R, may_we_land))
    {
        NPCPhrase (ALLIES_CAN_VISIT);

        DISABLE_PHRASE (may_we_land);
    }
    else if (PLAYER_SAID (R, make_alliance))
    {
        NPCPhrase (CANT_ALLY_HERE);

        DISABLE_PHRASE (make_alliance);
    }
    else if (PLAYER_SAID (R, why_busy))
    {
        NPCPhrase (BUSY_BECAUSE);

        DISABLE_PHRASE (why_busy);
    }

    if (PHRASE_ENABLED (may_we_land))
    {
        if (Manner == 3 && CheckAlliance (ORZ_SHIP) == GOOD_GUY)
            Response (may_we_land, ExitConversation);
        else
            Response (may_we_land, TaaloWorld);
    }
    else if (PHRASE_ENABLED (make_alliance))
        Response (make_alliance, TaaloWorld);
    else if (PHRASE_ENABLED (why_busy))
        Response (why_busy, TaaloWorld);
    if (PHRASE_ENABLED (demand_to_land))
    {
        if (Manner == 1)
            Response (demand_to_land, ExitConversation);
        else
            Response (demand_to_land, TaaloWorld);
    }
    if (PHRASE_ENABLED (why_you_here))
        Response (why_you_here, TaaloWorld);
    if (PHRASE_ENABLED (what_is_this_place))
        Response (what_is_this_place, TaaloWorld);
    Response (bye_taalo, ExitConversation);
}
Esempio n. 25
0
static void
RevealSelf (RESPONSE_REF R)
{
	BYTE i, stack;

	stack = 0;
	if (PLAYER_SAID (R, we_are_vindicator0))
	{
		NPCPhrase (THATS_IMPOSSIBLE);

		DISABLE_PHRASE (we_are_vindicator0);
	}
	else if (PLAYER_SAID (R, our_mission_was_secret))
	{
		NPCPhrase (ACKNOWLEDGE_SECRET);

		DISABLE_PHRASE (our_mission_was_secret);
	}
	else if (PLAYER_SAID (R, first_give_info))
	{
		NPCPhrase (ASK_AWAY);

		stack = 1;
		DISABLE_PHRASE (first_give_info);
	}
	else if (PLAYER_SAID (R, whats_this_starbase))
	{
		NPCPhrase (STARBASE_IS);

		stack = 1;
		DISABLE_PHRASE (whats_this_starbase);
	}
	else if (PLAYER_SAID (R, what_about_earth))
	{
		NPCPhrase (HAPPENED_TO_EARTH);

		stack = 1;
		DISABLE_PHRASE (what_about_earth);
	}
	else if (PLAYER_SAID (R, where_are_urquan))
	{
		NPCPhrase (URQUAN_LEFT);

		stack = 1;
		DISABLE_PHRASE (where_are_urquan);
	}
	else if (PLAYER_SAID (R, it_went_away))
		NPCPhrase (DEEP_TROUBLE);
	else if (PLAYER_SAID (R, we_destroyed_it))
		NPCPhrase (GOOD_NEWS);
	else if (PLAYER_SAID (R, what_probe))
		NPCPhrase (SURE_HOPE);

	for (i = 0; i < 2; ++i, stack ^= 1)
	{
		if (stack == 1)
		{
			if (PHRASE_ENABLED (first_give_info))
				Response (first_give_info, RevealSelf);
			else if (PHRASE_ENABLED (whats_this_starbase))
				Response (whats_this_starbase, RevealSelf);
			else if (PHRASE_ENABLED (what_about_earth))
				Response (what_about_earth, RevealSelf);
			else if (PHRASE_ENABLED (where_are_urquan))
				Response (where_are_urquan, RevealSelf);
			else if (PHRASE_ENABLED (what_was_red_thing))
			{
				Response (what_was_red_thing, TellProbe);
			}
		}
		else
		{
			if (PHRASE_ENABLED (we_are_vindicator0))
			{
				construct_response (shared_phrase_buf,
						we_are_vindicator0,
						GLOBAL_SIS (CommanderName),
						we_are_vindicator1,
						GLOBAL_SIS (ShipName),
						we_are_vindicator2,
						(UNICODE*)NULL);
				DoResponsePhrase (we_are_vindicator0, RevealSelf, shared_phrase_buf);
			}
			else if (PHRASE_ENABLED (our_mission_was_secret))
				Response (our_mission_was_secret, RevealSelf);
			else
			{
				if (GET_GAME_STATE (MOONBASE_DESTROYED) == 0)
					Response (we_are_here_to_help, TellMoonBase);
				else
					Response (we_are_here_to_help, BaseDestroyed);
			}
		}
	}
}
Esempio n. 26
0
static void
OrzAllied (RESPONSE_REF R)
{
    BYTE NumVisits;

    if (PLAYER_SAID (R, whats_up_ally))
    {
        NumVisits = GET_GAME_STATE (ORZ_GENERAL_INFO);
        switch (NumVisits++)
        {
        case 0:
            NPCPhrase (GENERAL_INFO_ALLY_1);
            break;
        case 1:
            NPCPhrase (GENERAL_INFO_ALLY_2);
            break;
        case 2:
            NPCPhrase (GENERAL_INFO_ALLY_3);
            break;
        case 3:
            NPCPhrase (GENERAL_INFO_ALLY_4);
            --NumVisits;
            break;
        }
        SET_GAME_STATE (ORZ_GENERAL_INFO, NumVisits);

        DISABLE_PHRASE (whats_up_ally);
    }
    else if (PLAYER_SAID (R, more_about_you))
    {
        NumVisits = GET_GAME_STATE (ORZ_PERSONAL_INFO);
        switch (NumVisits++)
        {
        case 0:
            NPCPhrase (ABOUT_US_1);
            break;
        case 1:
            NPCPhrase (ABOUT_US_2);
            break;
        case 2:
            NPCPhrase (ABOUT_US_3);
            break;
        case 3:
            NPCPhrase (ABOUT_US_4);
            --NumVisits;
            break;
        }
        SET_GAME_STATE (ORZ_PERSONAL_INFO, NumVisits);

        DISABLE_PHRASE (more_about_you);
    }
    else if (PLAYER_SAID (R, about_andro_1))
    {
        NPCPhrase (FORGET_ANDRO_1);

        SET_GAME_STATE (ORZ_ANDRO_STATE, 1);
    }
    else if (PLAYER_SAID (R, about_andro_2))
    {
        NPCPhrase (FORGET_ANDRO_2);

        SET_GAME_STATE (ORZ_ANDRO_STATE, 2);
    }

    if (GET_GAME_STATE (ORZ_ANDRO_STATE) == 0)
        Response (about_andro_1, OrzAllied);
    else if (GET_GAME_STATE (ORZ_ANDRO_STATE) == 1)
        Response (about_andro_2, OrzAllied);
    else
    {
        Response (about_andro_3, ExitConversation);
    }
    if (PHRASE_ENABLED (whats_up_ally))
        Response (whats_up_ally, OrzAllied);
    if (PHRASE_ENABLED (more_about_you))
        Response (more_about_you, OrzAllied);
    Response (bye_ally, ExitConversation);
}
Esempio n. 27
0
static void
ProbeFunction (RESPONSE_REF R)
{
	BYTE LastStack;
	RESPONSE_REF pStr[2];

	LastStack = 0;
	pStr[0] = pStr[1] = 0;
	if (PLAYER_SAID (R, talk_more_probe_attack))
	{
		NPCPhrase (NO_PROBLEM_BUT_SURE);
	}
	else if (PLAYER_SAID (R, tell_me_about_basics))
	{
		NPCPhrase (BASIC_COMMANDS);

		SET_GAME_STATE (PLAYER_KNOWS_PROGRAM, 1);
		DISABLE_PHRASE (tell_basics_again);
	}
	else if (PLAYER_SAID (R, tell_basics_again))
	{
		NPCPhrase (OK_BASICS_AGAIN);

		DISABLE_PHRASE (tell_basics_again);
	}
	else if (PLAYER_SAID (R, what_effect))
	{
		NPCPhrase (AFFECTS_BEHAVIOR);

		SET_GAME_STATE (PLAYER_KNOWS_EFFECTS, 1);
		DISABLE_PHRASE (what_effect);
	}
	else if (PLAYER_SAID (R, tell_me_about_rep_1))
	{
		NPCPhrase (ABOUT_REP);

		LastStack = 2;
		SET_GAME_STATE (SLYLANDRO_STACK8, 3);
	}
	else if (PLAYER_SAID (R, what_set_priority))
	{
		NPCPhrase (MAXIMUM);

		SET_GAME_STATE (PLAYER_KNOWS_PRIORITY, 1);
		DISABLE_PHRASE (what_set_priority);
	}
	else if (PLAYER_SAID (R, how_does_probe_defend))
	{
		NPCPhrase (ONLY_SELF_DEFENSE);

		LastStack = 1;
		SET_GAME_STATE (SLYLANDRO_STACK9, 1);
	}
	else if (PLAYER_SAID (R, combat_behavior))
	{
		NPCPhrase (MISSILE_BATTERIES);

		LastStack = 1;
		SET_GAME_STATE (SLYLANDRO_STACK9, 2);
	}
	else if (PLAYER_SAID (R, what_missile_batteries))
	{
		NPCPhrase (LIGHTNING_ONLY_FOR_HARVESTING);

		SET_GAME_STATE (SLYLANDRO_STACK9, 3);
	}

	switch (GET_GAME_STATE (SLYLANDRO_STACK9))
	{
		case 0:
			pStr[0] = how_does_probe_defend;
			break;
		case 1:
			pStr[0] = combat_behavior;
			break;
		case 2:
			pStr[0] = what_missile_batteries;
			break;
	}
	switch (GET_GAME_STATE (SLYLANDRO_STACK8))
	{
		case 2:
			pStr[1] = tell_me_about_rep_1;
			break;
		case 3:
			if (PHRASE_ENABLED (what_set_priority))
				pStr[1] = what_set_priority;
			break;
	}

	if (LastStack && pStr[LastStack - 1])
		Response (pStr[LastStack - 1], ProbeFunction);
	if (!GET_GAME_STATE (PLAYER_KNOWS_PROGRAM))
		Response (tell_me_about_basics, ProbeFunction);
	else
	{
		if (GET_GAME_STATE (PLAYER_KNOWS_PRIORITY))
		{
			if (GET_GAME_STATE (PLAYER_KNOWS_EFFECTS))
			{
				Response (probe_has_bug, ProbeBug);
			}
			if (PHRASE_ENABLED (what_effect))
				Response (what_effect, ProbeFunction);
		}
		if (PHRASE_ENABLED (tell_basics_again))
			Response (tell_basics_again, ProbeFunction);
	}
	if (LastStack == 0)
	{
		do
		{
			if (pStr[LastStack])
				Response (pStr[LastStack], ProbeFunction);
		} while (++LastStack < 2);
	}
	else
	{
		LastStack = (LastStack - 1) ^ 1;
		if (pStr[LastStack])
			Response (pStr[LastStack], ProbeFunction);
	}

	Response (enough_problem, ProbeInfo);
}
Esempio n. 28
0
static void
OrzNeutral (RESPONSE_REF R)
{
    BYTE i, LastStack;
    RESPONSE_REF pStr[3];

    LastStack = 0;
    pStr[0] = pStr[1] = pStr[2] = 0;
    if (PLAYER_SAID (R, hostile_1))
    {
        NPCPhrase (HOSTILITY_IS_BAD_1);

        DISABLE_PHRASE (hostile_1);
        LastStack = 2;
    }
    else if (PLAYER_SAID (R, we_are_vindicator))
    {
        NPCPhrase (NICE_TO_MEET_YOU);

        SET_GAME_STATE (ORZ_STACK0, 1);
        LastStack = 1;
    }
    else if (PLAYER_SAID (R, who_you))
    {
        NPCPhrase (WE_ARE_ORZ);

        SET_GAME_STATE (ORZ_ANDRO_STATE, 1);
    }
    else if (PLAYER_SAID (R, why_here))
    {
        NPCPhrase (HERE_BECAUSE);

        SET_GAME_STATE (ORZ_ANDRO_STATE, 2);
    }
    else if (PLAYER_SAID (R, no_alliance))
    {
        NPCPhrase (MAYBE_LATER);

        DISABLE_PHRASE (talk_about_alliance);
        SET_GAME_STATE (REFUSED_ORZ_ALLIANCE, 1);
    }
    else if (PLAYER_SAID (R, decide_later))
    {
        NPCPhrase (OK_LATER);

        DISABLE_PHRASE (talk_about_alliance);
        SET_GAME_STATE (REFUSED_ORZ_ALLIANCE, 1);
    }
    else if (PLAYER_SAID (R, dont_really_care))
        NPCPhrase (YOU_ARE_OUR_FRIENDS);
    else if (PLAYER_SAID (R, where_androsyn))
    {
        WhereAndrosyn (R);
        return;
    }
    else if (PLAYER_SAID (R, talk_about_alliance)
             || PLAYER_SAID (R, seem_like_nice_guys))
    {
        OfferAlliance (R);
        return;
    }
    else if (PLAYER_SAID (R, hostile_2))
    {
        ExitConversation (R);
        return;
    }

    if (GET_GAME_STATE (ORZ_ANDRO_STATE) == 0)
        pStr[0] = who_you;
    else if (GET_GAME_STATE (ORZ_ANDRO_STATE) == 1)
        pStr[0] = why_here;
    else if (PHRASE_ENABLED (where_androsyn) && GET_GAME_STATE (ORZ_ANDRO_STATE) == 2)
        pStr[0] = where_androsyn;
    if (GET_GAME_STATE (REFUSED_ORZ_ALLIANCE))
    {
        if (PHRASE_ENABLED (talk_about_alliance))
            pStr[1] = talk_about_alliance;
    }
    else if (GET_GAME_STATE (ORZ_STACK0) == 0)
    {
        pStr[1] = we_are_vindicator;
    }
    else
        pStr[1] = seem_like_nice_guys;
    if (PHRASE_ENABLED (hostile_1))
        pStr[2] = hostile_1;
    else
        pStr[2] = hostile_2;

    if (pStr[LastStack])
        Response (pStr[LastStack], OrzNeutral);

    for (i = 0; i < 3; ++i)
    {
        if (i != LastStack && pStr[i])
            Response (pStr[i], OrzNeutral);
    }
    Response (bye_neutral, ExitConversation);
}
Esempio n. 29
0
static void
HomeWorld (RESPONSE_REF R)
{
	BYTE i, LastStack;
	RESPONSE_REF pStr[3];

	LastStack = 0;
	pStr[0] = pStr[1] = pStr[2] = 0;
	if (PLAYER_SAID (R, we_are_us0))
	{
		NPCPhrase (TERRIBLY_EXCITING);

		SET_GAME_STATE (SLYLANDRO_STACK1, 1);
		DISABLE_PHRASE (we_are_us0);
	}
	else if (PLAYER_SAID (R, what_other_visitors))
	{
		NPCPhrase (VISITORS);

		SET_GAME_STATE (PLAYER_KNOWS_PROBE, 1);
		SET_GAME_STATE (SLYLANDRO_STACK1, 2);
	}
	else if (PLAYER_SAID (R, any_other_visitors))
	{
		NPCPhrase (LONG_AGO);

		SET_GAME_STATE (SLYLANDRO_STACK1, 3);
	}
	else if (PLAYER_SAID (R, what_about_sentient_milieu))
	{
		NPCPhrase (MET_TAALO_THEY_ARE_FROM);

		SET_GAME_STATE (SLYLANDRO_STACK1, 4);
	}
	else if (PLAYER_SAID (R, who_else))
	{
		NPCPhrase (PRECURSORS);

		SET_GAME_STATE (SLYLANDRO_STACK1, 5);
	}
	else if (PLAYER_SAID (R, precursors_yow))
	{
		NPCPhrase (ABOUT_PRECURSORS);

		SET_GAME_STATE (SLYLANDRO_STACK1, 6);
	}
	else if (PLAYER_SAID (R, must_know_more))
	{
		NPCPhrase (ALL_WE_KNOW);

		SET_GAME_STATE (SLYLANDRO_STACK1, 7);
	}
	else if (PLAYER_SAID (R, who_are_you))
	{
		NPCPhrase (WE_ARE_SLY);

		LastStack = 1;
		SET_GAME_STATE (SLYLANDRO_STACK2, 1);
	}
	else if (PLAYER_SAID (R, where_are_you))
	{
		NPCPhrase (DOWN_HERE);

		LastStack = 2;
		SET_GAME_STATE (SLYLANDRO_STACK3, 1);
	}
	else if (PLAYER_SAID (R, thats_impossible_1))
	{
		NPCPhrase (NO_ITS_NOT_1);

		LastStack = 2;
		SET_GAME_STATE (SLYLANDRO_STACK3, 2);
	}
	else if (PLAYER_SAID (R, thats_impossible_2))
	{
		NPCPhrase (NO_ITS_NOT_2);

		LastStack = 2;
		SET_GAME_STATE (SLYLANDRO_STACK3, 3);
	}
	else if (PLAYER_SAID (R, like_more_about_you))
	{
		SlylandroInfo (R);
		return;
	}
	else if (PLAYER_SAID (R, enough_about_me))
		NPCPhrase (OK_ENOUGH_YOU);
	else if (PLAYER_SAID (R, enough_info))
		NPCPhrase (OK_ENOUGH_INFO);
	else if (PLAYER_SAID (R, enough_probe))
		NPCPhrase (OK_ENOUGH_PROBE);
	else if (PLAYER_SAID (R, mega_self_destruct))
	{
		NPCPhrase (WHY_YES_THERE_IS);

		SET_GAME_STATE (SLYLANDRO_KNOW_BROKEN, 1);
		SET_GAME_STATE (DESTRUCT_CODE_ON_SHIP, 1);
		i = GET_GAME_STATE (SLYLANDRO_MULTIPLIER) + 1;
		SET_GAME_STATE (SLYLANDRO_MULTIPLIER, i);
		AddEvent (RELATIVE_EVENT, 0, 0, 0, SLYLANDRO_RAMP_DOWN);
	}

	switch (GET_GAME_STATE (SLYLANDRO_STACK1))
	{
		case 0:
			construct_response (shared_phrase_buf,
					we_are_us0,
					GLOBAL_SIS (CommanderName),
					we_are_us1,
					GLOBAL_SIS (ShipName),
					we_are_us2,
					(UNICODE*)NULL);
			pStr[0] = we_are_us0;
			break;
		case 1:
			pStr[0] = what_other_visitors;
			break;
		case 2:
			pStr[0] = any_other_visitors;
			break;
		case 3:
			pStr[0] = what_about_sentient_milieu;
			break;
		case 4:
			pStr[0] = who_else;
			break;
		case 5:
			pStr[0] = precursors_yow;
			break;
		case 6:
			pStr[0] = must_know_more;
			break;
	}
	switch (GET_GAME_STATE (SLYLANDRO_STACK2))
	{
		case 0:
			pStr[1] = who_are_you;
			break;
		case 1:
			if (PHRASE_ENABLED (like_more_about_you))
				pStr[1] = like_more_about_you;
			break;
	}
	switch (GET_GAME_STATE (SLYLANDRO_STACK3))
	{
		case 0:
			pStr[2] = where_are_you;
			break;
		case 1:
			pStr[2] = thats_impossible_1;
			break;
		case 2:
			pStr[2] = thats_impossible_2;
			break;
	}

	if (pStr[LastStack])
	{
		if (pStr[LastStack] != we_are_us0)
			Response (pStr[LastStack], HomeWorld);
		else
			DoResponsePhrase (pStr[LastStack], HomeWorld, shared_phrase_buf);
	}
	for (i = 0; i < 3; ++i)
	{
		if (i != LastStack && pStr[i])
		{
			if (pStr[i] != we_are_us0)
				Response (pStr[i], HomeWorld);
			else
				DoResponsePhrase (pStr[i], HomeWorld, shared_phrase_buf);
		}
	}
	if (GET_GAME_STATE (SLYLANDRO_STACK1))
	{
		switch (GET_GAME_STATE (SLYLANDRO_STACK4))
		{
			case 0:
				Response (happy_to_tell_more, HumanInfo);
				break;
			case 1:
				Response (would_you_like_to_know_more, HumanInfo);
				break;
		}
	}
	if (GET_GAME_STATE (PLAYER_KNOWS_PROBE)
			&& !GET_GAME_STATE (SLYLANDRO_KNOW_BROKEN))
	{
		switch (GET_GAME_STATE (SLYLANDRO_STACK5))
		{
			case 0:
				Response (what_are_probes, ProbeInfo);
				break;
			case 1:
				if (PHRASE_ENABLED (know_more_probe))
					Response (know_more_probe, ProbeInfo);
				break;
		}
	}
	Response (bye, ExitConversation);
}
Esempio n. 30
0
static void
ArilouHome (RESPONSE_REF R)
{
	BYTE i, LastStack;
	RESPONSE_REF pStr[4];

	LastStack = 0;
	pStr[0] = pStr[1] = pStr[2] = pStr[3] = 0;
	if (PLAYER_SAID (R, confused_by_hello))
		NPCPhrase (CONFUSED_RESPONSE);
	else if (PLAYER_SAID (R, happy_by_hello))
		NPCPhrase (HAPPY_RESPONSE);
	else if (PLAYER_SAID (R, miffed_by_hello))
		NPCPhrase (MIFFED_RESPONSE);
	else if (PLAYER_SAID (R, ok_lets_be_friends))
		NPCPhrase (NO_ALLY_BUT_MUCH_GIVE);
	else if (PLAYER_SAID (R, what_about_war))
	{
		NPCPhrase (ABOUT_WAR);

		SET_GAME_STATE (ARILOU_STACK_1, 1);
	}
	else if (PLAYER_SAID (R, what_about_urquan))
	{
		NPCPhrase (ABOUT_URQUAN);

		SET_GAME_STATE (ARILOU_STACK_1, 2);
	}
	else if (PLAYER_SAID (R, tell_arilou_about_tpet))
	{
		NPCPhrase (BAD_NEWS_ABOUT_TPET);

		LastStack = 1;
		SET_GAME_STATE (ARILOU_STACK_2, 1);
	}
	else if (PLAYER_SAID (R, what_do_about_tpet))
	{
		NPCPhrase (DANGEROUS_BUT_USEFUL);

		LastStack = 1;
		SET_GAME_STATE (ARILOU_STACK_2, 2);
	}
	else if (PLAYER_SAID (R, learned_about_umgah))
	{
		if (GET_GAME_STATE (ARILOU_CHECKED_UMGAH) != 2)
			NPCPhrase (NO_NEWS_YET);
		else
		{
			NPCPhrase (UMGAH_UNDER_COMPULSION);

			LastStack = 1;
		}

		DISABLE_PHRASE (learned_about_umgah);
	}
	else if (PLAYER_SAID (R, umgah_acting_weird))
	{
		NPCPhrase (WELL_GO_CHECK);

		SET_GAME_STATE (ARILOU_CHECKED_UMGAH, 1);
		AddEvent (RELATIVE_EVENT, 0, 10, 0, ARILOU_UMGAH_CHECK);
		DISABLE_PHRASE (umgah_acting_weird);
	}
	else if (PLAYER_SAID (R, what_do_now))
	{
		NPCPhrase (GO_FIND_OUT);

		SET_GAME_STATE (ARILOU_CHECKED_UMGAH, 3);
	}
	else if (PLAYER_SAID (R, what_did_on_earth))
	{
		NPCPhrase (DID_THIS);

		LastStack = 2;
		SET_GAME_STATE (ARILOU_STACK_3, 1);
	}
	else if (PLAYER_SAID (R, why_did_this))
	{
		NPCPhrase (IDF_PARASITES);

		LastStack = 2;
		SET_GAME_STATE (ARILOU_STACK_3, 2);
	}
	else if (PLAYER_SAID (R, tell_more))
	{
		NPCPhrase (NOT_NOW);

		LastStack = 2;
		SET_GAME_STATE (ARILOU_STACK_3, 3);
	}
	else if (PLAYER_SAID (R, what_give_me))
	{
		NPCPhrase (ABOUT_PORTAL);

		LastStack = 3;
		SET_GAME_STATE (KNOW_ARILOU_WANT_WRECK, 1);

		R = about_portal_again;
		DISABLE_PHRASE (what_give_me);
	}
	else if (PLAYER_SAID (R, what_about_tpet))
	{
		NPCPhrase (ABOUT_TPET);

		SET_GAME_STATE (ARILOU_STACK_4, 1);
	}
	else if (PLAYER_SAID (R, about_portal_again))
	{
		NPCPhrase (PORTAL_AGAIN);

		DISABLE_PHRASE (about_portal_again);
	}
	else if (PLAYER_SAID (R, got_it))
	{
		if (GET_GAME_STATE (ARILOU_HOME_VISITS) == 1)
			NPCPhrase (CLEVER_HUMAN);
		NPCPhrase (GIVE_PORTAL);

		SET_GAME_STATE (PORTAL_KEY_ON_SHIP, 0);
		SET_GAME_STATE (PORTAL_SPAWNER, 1);
		SET_GAME_STATE (PORTAL_SPAWNER_ON_SHIP, 1);
	}
#ifdef NEVER
	else if (PLAYER_SAID (R, got_tpet))
	{
		NPCPhrase (OK_GOT_TPET);

		SET_GAME_STATE (ARILOU_STACK_2, 1);
	}
#endif /* NEVER */

	switch (GET_GAME_STATE (ARILOU_STACK_1))
	{
		case 0:
			pStr[0] = what_about_war;
			break;
		case 1:
			pStr[0] = what_about_urquan;
			break;
	}
	if (GET_GAME_STATE (TALKING_PET))
	{
#ifdef NEVER
		if (GET_GAME_STATE (ARILOU_STACK_2) == 0)
			pStr[1] = got_tpet;
#endif /* NEVER */
	}
	else
	{
		if (GET_GAME_STATE (TALKING_PET_VISITS))
		{
			switch (GET_GAME_STATE (ARILOU_STACK_2))
			{
				case 0:
					pStr[1] = tell_arilou_about_tpet;
					break;
				case 1:
					pStr[1] = what_do_about_tpet;
					break;
			}
		}
		else if (GET_GAME_STATE (KNOW_UMGAH_ZOMBIES))
		{
			if (!GET_GAME_STATE (ARILOU_CHECKED_UMGAH))
				pStr[1] = umgah_acting_weird;
			else if (PHRASE_ENABLED (learned_about_umgah) && PHRASE_ENABLED (umgah_acting_weird))
				pStr[1] = learned_about_umgah;
			else if (GET_GAME_STATE (ARILOU_CHECKED_UMGAH) == 2)
				pStr[1] = what_do_now;
		}
	}
	switch (GET_GAME_STATE (ARILOU_STACK_3))
	{
		case 0:
			pStr[2] = what_did_on_earth;
			break;
		case 1:
			pStr[2] = why_did_this;
			break;
		case 2:
			pStr[2] = tell_more;
			break;
	}
	if (!GET_GAME_STATE (KNOW_ARILOU_WANT_WRECK))
		pStr[3] = what_give_me;
	else if (!GET_GAME_STATE (ARILOU_STACK_4))
		pStr[3] = what_about_tpet;

	if (pStr[LastStack])
		Response (pStr[LastStack], ArilouHome);
	for (i = 0; i < 4; ++i)
	{
		if (i != LastStack && pStr[i])
			Response (pStr[i], ArilouHome);
	}

	if (GET_GAME_STATE (KNOW_ARILOU_WANT_WRECK))
	{
		if (GET_GAME_STATE (PORTAL_KEY_ON_SHIP))
			Response (got_it, ArilouHome);
		else if (PHRASE_ENABLED (about_portal_again) && !GET_GAME_STATE (PORTAL_SPAWNER))
			Response (about_portal_again, ArilouHome);
	}
	if (GET_GAME_STATE (ARILOU_MANNER) != 3)
		Response (best_if_i_killed_you, ExitConversation);
	Response (bye_friendly_homeworld, ExitConversation);
}