static void ExitConversation (RESPONSE_REF R) { setSegue (Segue_peace); if (PLAYER_SAID (R, bye_ally)) NPCPhrase (GOODBYE_ALLY); else if (PLAYER_SAID (R, bye_neutral)) NPCPhrase (GOODBYE_NEUTRAL); else if (PLAYER_SAID (R, bye_angry)) NPCPhrase (GOODBYE_ANGRY); else if (PLAYER_SAID (R, bye_taalo)) { if (GET_GAME_STATE (ORZ_MANNER) == 1) NPCPhrase (ANGRY_TAALO_GOODBYE); else NPCPhrase (FRIENDLY_TAALO_GOODBYE); } else if (PLAYER_SAID (R, hostile_2)) { NPCPhrase (HOSTILITY_IS_BAD_2); setSegue (Segue_hostile); } else if (PLAYER_SAID (R, may_we_land)) { NPCPhrase (SURE_LAND); SET_GAME_STATE (TAALO_UNPROTECTED, 1); } else if (PLAYER_SAID (R, yes_alliance) || PLAYER_SAID (R, were_sorry)) { if (PLAYER_SAID (R, yes_alliance)) NPCPhrase (GREAT); else NPCPhrase (APOLOGY_ACCEPTED); SET_GAME_STATE (ORZ_ANDRO_STATE, 0); SET_GAME_STATE (ORZ_GENERAL_INFO, 0); SET_GAME_STATE (ORZ_PERSONAL_INFO, 0); SET_GAME_STATE (ORZ_MANNER, 3); SetRaceAllied (ORZ_SHIP, TRUE); } else if (PLAYER_SAID (R, demand_to_land)) { NPCPhrase (NO_DEMAND); setSegue (Segue_hostile); } else if (PLAYER_SAID (R, about_andro_3) || PLAYER_SAID (R, must_know_about_androsyn)) { if (PLAYER_SAID (R, about_andro_3)) NPCPhrase (BLEW_IT); else NPCPhrase (KNOW_TOO_MUCH); SET_GAME_STATE (ORZ_VISITS, 0); SET_GAME_STATE (ORZ_MANNER, 2); setSegue (Segue_hostile); if (PLAYER_SAID (R, about_andro_3)) { SetRaceAllied (ORZ_SHIP, FALSE); RemoveEscortShips (ORZ_SHIP); } XFormColorMap (GetColorMapAddress ( SetAbsColorMapIndex (CommData.AlienColorMap, 1) ), ONE_SECOND / 2); } else /* insults */ { BYTE NumVisits; NumVisits = GET_GAME_STATE (ORZ_PERSONAL_INFO); switch (NumVisits++) { case 0: NPCPhrase (INSULTED_1); break; case 1: NPCPhrase (INSULTED_2); break; case 2: NPCPhrase (INSULTED_3); setSegue (Segue_hostile); break; case 7: --NumVisits; default: NPCPhrase (INSULTED_4); setSegue (Segue_hostile); break; } SET_GAME_STATE (ORZ_PERSONAL_INFO, NumVisits); } }
static void ExitConversation (RESPONSE_REF R) { setSegue (Segue_peace); if (PLAYER_SAID (R, bye_neutral)) NPCPhrase (GOODBYE_NEUTRAL); else if (PLAYER_SAID (R, bye_after_space)) NPCPhrase (GOODBYE_AFTER_SPACE); else if (PLAYER_SAID (R, bye_before_space)) NPCPhrase (GOODBYE_BEFORE_SPACE); else if (PLAYER_SAID (R, bye_allied_homeworld)) NPCPhrase (GOODBYE_ALLIED_HOMEWORLD); else if (PLAYER_SAID (R, bye_bomb)) NPCPhrase (GOODBYE_BOMB); else if (PLAYER_SAID (R, demand_bomb)) { NPCPhrase (GUARDS_FIGHT); setSegue (Segue_hostile); } else if (PLAYER_SAID (R, got_ultron) || PLAYER_SAID (R, hey_wait_got_ultron)) { if (GET_GAME_STATE (GLOBAL_FLAGS_AND_DATA) & (1 << 6)) { NPCPhrase (NO_ULTRON_AT_BOMB); SET_GAME_STATE (REFUSED_ULTRON_AT_BOMB, 1); } else { if (PLAYER_SAID (R, got_ultron)) NPCPhrase (DONT_WANT_TO_LOOK); else NPCPhrase (TAUNT_US_BUT_WE_LOOK); if (GET_GAME_STATE (ULTRON_CONDITION) < 4) { switch (GET_GAME_STATE (UTWIG_INFO)) { case 0: if (PLAYER_SAID (R, got_ultron)) NPCPhrase (SICK_TRICK_1); else { NPCPhrase (TRICKED_US_1); setSegue (Segue_hostile); } break; case 1: if (PLAYER_SAID (R, got_ultron)) NPCPhrase (SICK_TRICK_2); else { NPCPhrase (TRICKED_US_2); setSegue (Segue_hostile); } break; } SET_GAME_STATE (UTWIG_INFO, 1); } else { NPCPhrase (HAPPY_DAYS); if (GET_GAME_STATE (KOHR_AH_FRENZY)) NPCPhrase (TOO_LATE); else { NPCPhrase (OK_ATTACK_KOHRAH); AddEvent (RELATIVE_EVENT, 0, 0, 0, ADVANCE_UTWIG_SUPOX_MISSION); } SET_GAME_STATE (UTWIG_HAVE_ULTRON, 1); SET_GAME_STATE (ULTRON_CONDITION, 5); SET_GAME_STATE (UTWIG_VISITS, 0); SET_GAME_STATE (SUPOX_VISITS, 0); SET_GAME_STATE (UTWIG_HOME_VISITS, 0); SET_GAME_STATE (SUPOX_HOME_VISITS, 0); SET_GAME_STATE (BOMB_VISITS, 0); SET_GAME_STATE (SUPOX_INFO, 0); SET_GAME_STATE (UTWIG_INFO, 0); SET_GAME_STATE (SUPOX_WAR_NEWS, 0); SET_GAME_STATE (UTWIG_WAR_NEWS, 0); SET_GAME_STATE (SUPOX_HOSTILE, 0); SET_GAME_STATE (UTWIG_HOSTILE, 0); SetRaceAllied (UTWIG_SHIP, TRUE); SetRaceAllied (SUPOX_SHIP, TRUE); } } } else if (PLAYER_SAID (R, can_you_help)) { NPCPhrase (HOW_HELP); if (EscortFeasibilityStudy (UTWIG_SHIP) == 0) NPCPhrase (DONT_NEED); else { NPCPhrase (HAVE_4_SHIPS); AlienTalkSegue ((COUNT)~0); AddEscortShips (UTWIG_SHIP, 4); } } }
static void ExitConversation (RESPONSE_REF R) { setSegue (Segue_peace); if (PLAYER_SAID (R, bye_homeworld)) { NPCPhrase_cb (GOODBYE_HOME0, &SelectAlienZOQ); NPCPhrase_cb (GOODBYE_HOME1, &SelectAlienPIK); ZFPTalkSegue ((COUNT)~0); } else if (PLAYER_SAID (R, decide_later)) { NPCPhrase_cb (PLEASE_HURRY0, &SelectAlienZOQ); NPCPhrase_cb (PLEASE_HURRY1, &SelectAlienPIK); ZFPTalkSegue ((COUNT)~0); } else if (PLAYER_SAID (R, valuable_info)) { NPCPhrase_cb (GOODBYE0, &SelectAlienZOQ); NPCPhrase_cb (GOODBYE1, &SelectAlienPIK); NPCPhrase_cb (GOODBYE2, &SelectAlienZOQ); NPCPhrase_cb (GOODBYE3, &SelectAlienPIK); ZFPTalkSegue ((COUNT)~0); } else if (PLAYER_SAID (R, how_can_i_help)) { NPCPhrase_cb (EMMISSARIES0, &SelectAlienZOQ); NPCPhrase_cb (EMMISSARIES1, &SelectAlienPIK); NPCPhrase_cb (EMMISSARIES2, &SelectAlienZOQ); NPCPhrase_cb (EMMISSARIES3, &SelectAlienPIK); NPCPhrase_cb (EMMISSARIES4, &SelectAlienZOQ); NPCPhrase_cb (EMMISSARIES5, &SelectAlienPIK); NPCPhrase_cb (EMMISSARIES6, &SelectAlienZOQ); NPCPhrase_cb (EMMISSARIES7, &SelectAlienPIK); ZFPTalkSegue ((COUNT)~0); } else if (PLAYER_SAID (R, sure)) { NPCPhrase_cb (WE_ALLY0, &SelectAlienZOQ); NPCPhrase_cb (WE_ALLY1, &SelectAlienPIK); NPCPhrase_cb (WE_ALLY2, &SelectAlienZOQ); NPCPhrase_cb (WE_ALLY3, &SelectAlienPIK); NPCPhrase_cb (WE_ALLY4, &SelectAlienZOQ); NPCPhrase_cb (WE_ALLY5, &SelectAlienPIK); ZFPTalkSegue ((COUNT)~0); SetRaceAllied (ZOQFOTPIK_SHIP, TRUE); AddEvent (RELATIVE_EVENT, 3, 0, 0, ZOQFOT_DISTRESS_EVENT); SET_GAME_STATE (ZOQFOT_HOME_VISITS, 0); } else if (PLAYER_SAID (R, all_very_interesting)) { NPCPhrase_cb (SEE_TOLD_YOU0, &SelectAlienZOQ); NPCPhrase_cb (SEE_TOLD_YOU1, &SelectAlienPIK); NPCPhrase_cb (SEE_TOLD_YOU2, &SelectAlienZOQ); NPCPhrase_cb (SEE_TOLD_YOU3, &SelectAlienPIK); ZFPTalkSegue ((COUNT)~0); SET_GAME_STATE (ZOQFOT_HOSTILE, 1); SET_GAME_STATE (ZOQFOT_HOME_VISITS, 0); setSegue (Segue_hostile); } else if (PLAYER_SAID (R, never)) { NPCPhrase_cb (WE_ENEMIES0, &SelectAlienZOQ); NPCPhrase_cb (WE_ENEMIES1, &SelectAlienPIK); ZFPTalkSegue ((COUNT)~0); SET_GAME_STATE (ZOQFOT_HOME_VISITS, 0); SET_GAME_STATE (ZOQFOT_HOSTILE, 1); setSegue (Segue_hostile); } }
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 ExitConversation (RESPONSE_REF R) { setSegue (Segue_peace); if (PLAYER_SAID (R, we_attack_again)) { NPCPhrase (WE_FIGHT_AGAIN); setSegue (Segue_hostile); } else if (PLAYER_SAID (R, surrender_or_die)) { NPCPhrase (DEFEND_OURSELVES); setSegue (Segue_hostile); } else if (PLAYER_SAID (R, we_are_vindicator)) { NPCPhrase (NO_PASSWORD); setSegue (Segue_hostile); } else if (PLAYER_SAID (R, gort_merenga) || PLAYER_SAID (R, guph_florp) || PLAYER_SAID (R, wagngl_fthagn) || PLAYER_SAID (R, pleeese)) { NPCPhrase (WRONG_PASSWORD); setSegue (Segue_hostile); } else if (PLAYER_SAID (R, screw_password)) { NPCPhrase (NO_PASSWORD); setSegue (Segue_hostile); } else if (PLAYER_SAID (R, bye_no_ally_offer)) NPCPhrase (GOODBYE_NO_ALLY_OFFER); else if (PLAYER_SAID (R, bye_angry_spathi)) NPCPhrase (GOODBYE_ANGRY_SPATHI); else if (PLAYER_SAID (R, bye_ally)) NPCPhrase (GOODBYE_ALLY); else if (PLAYER_SAID (R, already_got_them)) { NPCPhrase (EARLY_BIRD_CHECK); SET_GAME_STATE (SPATHI_HOME_VISITS, 0); SET_GAME_STATE (SPATHI_VISITS, 0); SET_GAME_STATE (SPATHI_PARTY, 1); SET_GAME_STATE (SPATHI_MANNER, 3); } else if (PLAYER_SAID (R, too_dangerous)) NPCPhrase (WE_AGREE); else if (PLAYER_SAID (R, think_more)) NPCPhrase (COWARD); else if (PLAYER_SAID (R, i_accept)) { NPCPhrase (AWAIT_RETURN); SET_GAME_STATE (SPATHI_QUEST, 1); SET_GAME_STATE (SPATHI_MANNER, 3); SET_GAME_STATE (SPATHI_VISITS, 0); } else if (PLAYER_SAID (R, do_as_we_say)) { NPCPhrase (DEPART_FOR_EARTH); SetRaceAllied (SPATHI_SHIP, TRUE); AddEvent (RELATIVE_EVENT, 6, 0, 0, SPATHI_SHIELD_EVENT); SET_GAME_STATE (SPATHI_HOME_VISITS, 0); SET_GAME_STATE (SPATHI_VISITS, 0); } else if (PLAYER_SAID (R, killed_them_all_1)) { NPCPhrase (WILL_CHECK_1); if (!GET_GAME_STATE (SPATHI_CREATURES_ELIMINATED)) { SET_GAME_STATE (LIED_ABOUT_CREATURES, 1); } else { SET_GAME_STATE (SPATHI_HOME_VISITS, 0); SET_GAME_STATE (SPATHI_VISITS, 0); SET_GAME_STATE (SPATHI_PARTY, 1); SET_GAME_STATE (SPATHI_MANNER, 3); } } else if (PLAYER_SAID (R, killed_them_all_2)) { NPCPhrase (WILL_CHECK_2); if (!GET_GAME_STATE (SPATHI_CREATURES_ELIMINATED)) { SET_GAME_STATE (LIED_ABOUT_CREATURES, 2); } else { SET_GAME_STATE (SPATHI_HOME_VISITS, 0); SET_GAME_STATE (SPATHI_VISITS, 0); SET_GAME_STATE (SPATHI_PARTY, 1); SET_GAME_STATE (SPATHI_MANNER, 3); } } else if (PLAYER_SAID (R, bye_before_party)) { NPCPhrase (GOODBYE_BEFORE_PARTY); } else if (PLAYER_SAID (R, bye_from_party_1) || PLAYER_SAID (R, bye_from_party_2) || PLAYER_SAID (R, bye_from_party_3)) { NPCPhrase (GOODBYE_FROM_PARTY); } }