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); } }
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); }
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); } }
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); } }
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); } }
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); }
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); }
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); }
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); } }
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); } }
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); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); } } }
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; } }
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); } }
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); } } } }
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); }
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); } } } }
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); }
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); }
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); }
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); }
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); }