static void yack0_respond (void) { switch (GET_GAME_STATE (MELNORME_YACK_STACK0)) { case 0: { UNICODE buf[ALLIANCE_NAME_BUFSIZE]; GetAllianceName (buf, name_1); construct_response ( shared_phrase_buf, we_are_from_alliance0, buf, (RESPONSE_REF)-1 ); DoResponsePhrase (we_are_from_alliance0, DoFirstMeeting, shared_phrase_buf); break; } case 1: Response (how_know, DoFirstMeeting); break; } }
static void RealizeMistake (RESPONSE_REF R) { (void) R; // ignored NPCPhrase (DGRUNTI); SET_GAME_STATE (SHOFIXTI_STACK1, 0); SET_GAME_STATE (SHOFIXTI_STACK3, 0); SET_GAME_STATE (SHOFIXTI_STACK2, 3); { UNICODE buf[ALLIANCE_NAME_BUFSIZE]; GetAllianceName (buf, name_1); construct_response ( shared_phrase_buf, i_am_captain0, GLOBAL_SIS (CommanderName), i_am_captain1, buf, i_am_captain2, GLOBAL_SIS (ShipName), i_am_captain3, (UNICODE*)NULL); } DoResponsePhrase (i_am_captain0, ExplainDefeat, shared_phrase_buf); Response (i_am_nice, ExplainDefeat); Response (i_am_guy, ExplainDefeat); }
static void Intro (void) { SET_GAME_STATE (STARBASE_AVAILABLE, 1); NPCPhrase (STARBASE_WILL_BE_READY); return; if (GET_GAME_STATE (PROBE_ILWRATH_ENCOUNTER)) { NPCPhrase (VERY_IMPRESSIVE); Response (cook_their_butts, ByeBye); Response (overthrow_evil_aliens, ByeBye); Response (annihilate_those_monsters, ByeBye); } else if (GET_GAME_STATE (STARBASE_VISITED)) { if (GET_GAME_STATE (RADIOACTIVES_PROVIDED)) { if (GET_GAME_STATE (MOONBASE_DESTROYED) == 0) { TellMoonBase (0); } else { BaseDestroyed (0); } } else { CommData.AlienColorMap = SetAbsColorMapIndex (CommData.AlienColorMap, 1); NPCPhrase (DO_YOU_HAVE_RADIO_THIS_TIME); if (GLOBAL_SIS (ElementAmounts[RADIOACTIVE])) GiveRadios (0); else AskAfterRadios (0); } } else /* first visit */ { CommData.AlienColorMap = SetAbsColorMapIndex (CommData.AlienColorMap, 1); SET_GAME_STATE (STARBASE_VISITED, 1); NPCPhrase (ARE_YOU_SUPPLY_SHIP); construct_response ( shared_phrase_buf, no_but_well_help0, GLOBAL_SIS (ShipName), no_but_well_help1, (UNICODE*)NULL); DoResponsePhrase (no_but_well_help0, NoRadioactives, shared_phrase_buf); Response (yes_this_is_supply_ship, NoRadioactives); Response (what_slave_planet, NoRadioactives); } }
static void AquaintZoqFot (RESPONSE_REF R) { if (PLAYER_SAID (R, which_fot)) { NPCPhrase_cb (HE_IS0, &SelectAlienZOQ); NPCPhrase_cb (HE_IS1, &SelectAlienPIK); NPCPhrase_cb (HE_IS2, &SelectAlienZOQ); NPCPhrase_cb (HE_IS3, &SelectAlienPIK); NPCPhrase_cb (HE_IS4, &SelectAlienZOQ); NPCPhrase_cb (HE_IS5, &SelectAlienPIK); NPCPhrase_cb (HE_IS6, &SelectAlienZOQ); NPCPhrase_cb (HE_IS7, &SelectAlienPIK); ZFPTalkSegue ((COUNT)~0); DISABLE_PHRASE (which_fot); } else if (PLAYER_SAID (R, quiet_toadies)) { NPCPhrase_cb (TOLD_YOU0, &SelectAlienZOQ); NPCPhrase_cb (TOLD_YOU1, &SelectAlienPIK); NPCPhrase_cb (TOLD_YOU2, &SelectAlienZOQ); NPCPhrase_cb (TOLD_YOU3, &SelectAlienPIK); NPCPhrase_cb (TOLD_YOU4, &SelectAlienZOQ); NPCPhrase_cb (TOLD_YOU5, &SelectAlienPIK); NPCPhrase_cb (TOLD_YOU6, &SelectAlienZOQ); NPCPhrase_cb (TOLD_YOU7, &SelectAlienPIK); ZFPTalkSegue ((COUNT)~0); DISABLE_PHRASE (quiet_toadies); } if (PHRASE_ENABLED (we_are_vindicator0)) { UNICODE buf[ALLIANCE_NAME_BUFSIZE]; GetAllianceName (buf, name_1); construct_response ( shared_phrase_buf, we_are_vindicator0, buf, we_are_vindicator1, GLOBAL_SIS (ShipName), we_are_vindicator2, (UNICODE*)NULL); } if (PHRASE_ENABLED (which_fot)) Response (which_fot, AquaintZoqFot); if (PHRASE_ENABLED (we_are_vindicator0)) DoResponsePhrase (we_are_vindicator0, ZoqFotIntro, shared_phrase_buf); if (PHRASE_ENABLED (quiet_toadies)) Response (quiet_toadies, AquaintZoqFot); Response (all_very_interesting, ExitConversation); Response (valuable_info, ExitConversation); }
static void SpathiPassword (RESPONSE_REF R) { if (R == 0) { BYTE NumVisits; NumVisits = GET_GAME_STATE (SPATHI_HOME_VISITS); switch (NumVisits++) { default: NPCPhrase (WHAT_IS_PASSWORD); NumVisits = 1; break; case 1: NPCPhrase (WHAT_IS_PASSWORD_AGAIN); --NumVisits; break; } SET_GAME_STATE (SPATHI_HOME_VISITS, NumVisits); } else if (PLAYER_SAID (R, what_do_i_get)) { NPCPhrase (YOU_GET_TO_LIVE); DISABLE_PHRASE (what_do_i_get); } if (GET_GAME_STATE (FOUND_PLUTO_SPATHI) || GET_GAME_STATE (KNOW_SPATHI_PASSWORD)) { Response (good_password, SpathiCouncil); if (PHRASE_ENABLED (what_do_i_get)) { Response (what_do_i_get, SpathiPassword); } } else { 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, ExitConversation, shared_phrase_buf); Response (gort_merenga, ExitConversation); Response (guph_florp, ExitConversation); Response (wagngl_fthagn, ExitConversation); Response (pleeese, ExitConversation); Response (screw_password, ExitConversation); } }
static void Hostile (RESPONSE_REF R) { (void) R; // ignored switch (GET_GAME_STATE (SHOFIXTI_STACK1)) { case 0: Response (dont_attack, ExitConversation); break; case 1: Response (hey_stop, ExitConversation); break; case 2: Response (look_you_are, ExitConversation); break; } switch (GET_GAME_STATE (SHOFIXTI_STACK2)) { case 0: Response (no_one_insults, ExitConversation); break; case 1: Response (mighty_words, ExitConversation); break; case 2: Response (donkey_breath, RealizeMistake); break; } switch (GET_GAME_STATE (SHOFIXTI_STACK3)) { case 0: Response (dont_know, ExitConversation); break; case 1: { construct_response ( shared_phrase_buf, look0, "", shofixti_name, "", look1, (UNICODE*)NULL); DoResponsePhrase (look0, ExitConversation, shared_phrase_buf); break; } case 2: Response (look_you_are, ExitConversation); break; } Response (dont_want_to_fight, ExitConversation); }
static void DiscussConquer (RESPONSE_REF R) { if (PLAYER_SAID (R, we_conquer)) { NPCPhrase (WHY_CONQUER); DISABLE_PHRASE (we_conquer); } else if (PLAYER_SAID (R, conquer_because_1)) { #if 0 NPCPhrase (NOT_CONQUER_10); NPCPhrase (GLOBAL_ALLIANCE_NAME + name_1); NPCPhrase (NOT_CONQUER_11); NPCPhrase (GLOBAL_ALLIANCE_NAME + name_1); NPCPhrase (NOT_CONQUER_12); #endif NPCPhrase (NOT_CONQUER_1); DISABLE_PHRASE (conquer_because_1); } else if (PLAYER_SAID (R, conquer_because_2)) { NPCPhrase (NOT_CONQUER_2); DISABLE_PHRASE (conquer_because_2); } if (PHRASE_ENABLED (conquer_because_1)) { #if 0 UNICODE buf[ALLIANCE_NAME_BUFSIZE]; GetAllianceName (buf, name_1); construct_response ( shared_phrase_buf, conquer_because_1, buf, (RESPONSE_REF)-1); DoResponsePhrase (conquer_because_1, DiscussConquer, shared_phrase_buf); #endif Response(conquer_because_1, DiscussConquer); } if (PHRASE_ENABLED (conquer_because_2)) Response (conquer_because_2, DiscussConquer); Response (must_conquer, ExitConversation); Response (no_conquest, PkunkHome); }
static void Friendly (RESPONSE_REF R) { BYTE i, LastStack; struct { RESPONSE_REF pStr; UNICODE *c_buf; } Resp[3]; static UNICODE buf0[80], buf1[80]; LastStack = 0; memset (Resp, 0, sizeof (Resp)); if (PLAYER_SAID (R, report0)) { NPCPhrase (NOTHING_NEW); DISABLE_PHRASE (report0); } else if (PLAYER_SAID (R, why_here0)) { NPCPhrase (I_GUARD); LastStack = 1; SET_GAME_STATE (SHOFIXTI_STACK1, 1); } else if (PLAYER_SAID (R, what_happened)) { NPCPhrase (MET_VUX); LastStack = 1; SET_GAME_STATE (SHOFIXTI_STACK1, 2); } else if (PLAYER_SAID (R, glory_device)) { NPCPhrase (SWITCH_BROKE); SET_GAME_STATE (SHOFIXTI_STACK1, 3); } else if (PLAYER_SAID (R, where_world)) { NPCPhrase (BLEW_IT_UP); LastStack = 2; SET_GAME_STATE (SHOFIXTI_STACK3, 1); } else if (PLAYER_SAID (R, how_survive)) { NPCPhrase (NOT_HERE); SET_GAME_STATE (SHOFIXTI_STACK3, 2); } if (PHRASE_ENABLED (report0)) { construct_response ( buf0, report0, "", shofixti_name, "", report1, (UNICODE*)NULL); Resp[0].pStr = report0; Resp[0].c_buf = buf0; } switch (GET_GAME_STATE (SHOFIXTI_STACK1)) { case 0: construct_response ( buf1, why_here0, "", shofixti_name, "", why_here1, (UNICODE*)NULL); Resp[1].pStr = why_here0; Resp[1].c_buf = buf1; break; case 1: Resp[1].pStr = what_happened; break; case 2: Resp[1].pStr = glory_device; break; } switch (GET_GAME_STATE (SHOFIXTI_STACK3)) { case 0: Resp[2].pStr = where_world; break; case 1: Resp[2].pStr = how_survive; break; } if (Resp[LastStack].pStr) DoResponsePhrase (Resp[LastStack].pStr, Friendly, Resp[LastStack].c_buf); for (i = 0; i < 3; ++i) { if (i != LastStack && Resp[i].pStr) DoResponsePhrase (Resp[i].pStr, Friendly, Resp[i].c_buf); } if (GET_GAME_STATE (MAIDENS_ON_SHIP)) { Response (important_duty, GiveMaidens); } construct_response ( shared_phrase_buf, bye0, "", shofixti_name, "", bye1, (UNICODE*)NULL); DoResponsePhrase (bye0, ExitConversation, shared_phrase_buf); }
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 Intro (void) { BYTE NumVisits; if (LOBYTE (GLOBAL (CurrentActivity)) == WON_LAST_BATTLE) { NPCPhrase (OUT_TAKES); SET_GAME_STATE (BATTLE_SEGUE, 0); return; } NumVisits = GET_GAME_STATE (SYREEN_HOME_VISITS); if (GET_GAME_STATE (MYCON_KNOW_AMBUSH)) { switch (NumVisits++) { case 0: NPCPhrase (HELLO_AFTER_AMBUSH_1); ActivateStarShip (SYREEN_SHIP, SET_ALLIED); break; case 1: NPCPhrase (HELLO_AFTER_AMBUSH_2); break; case 2: NPCPhrase (HELLO_AFTER_AMBUSH_3); break; case 3: NPCPhrase (HELLO_AFTER_AMBUSH_3); --NumVisits; break; } AfterAmbush ((RESPONSE_REF)0); } else if (GET_GAME_STATE (MYCON_AMBUSH)) { switch (NumVisits++) { case 0: NPCPhrase (READY_FOR_AMBUSH); --NumVisits; break; } AmbushReady ((RESPONSE_REF)0); } else if (!GET_GAME_STATE (SYREEN_KNOW_ABOUT_MYCON)) { switch (NumVisits++) { case 0: NPCPhrase (HELLO_BEFORE_AMBUSH_1); break; case 1: NPCPhrase (HELLO_BEFORE_AMBUSH_2); break; case 2: NPCPhrase (HELLO_BEFORE_AMBUSH_3); break; case 3: NPCPhrase (HELLO_BEFORE_AMBUSH_4); --NumVisits; break; } if (NumVisits > 1) NormalSyreen ((RESPONSE_REF)0); else { construct_response (shared_phrase_buf, we_are_vindicator0, GLOBAL_SIS (CommanderName), we_are_vindicator1, GLOBAL_SIS (ShipName), we_are_vindicator2, (UNICODE*)NULL); Response (we_are_vice_squad, InitialSyreen); Response (we_are_the_one_for_you_baby, InitialSyreen); DoResponsePhrase (we_are_vindicator0, InitialSyreen, shared_phrase_buf); Response (we_are_impressed, InitialSyreen); } } #ifdef NEVER else if (!GET_GAME_STATE (SYREEN_SHUTTLE)) { switch (NumVisits++) { case 0: NPCPhrase (MUST_ACT); --NumVisits; break; } SyreenShuttle ((RESPONSE_REF)0); } #endif /* NEVER */ else if (GET_GAME_STATE (SHIP_VAULT_UNLOCKED)) { PlanAmbush ((RESPONSE_REF)0); // XXX: PlanAmbush() sets SYREEN_HOME_VISITS=0, but then this value // is immediately reset to NumVisits just below. The intent was to // reset the HELLO stack so that is what we will do here as well. // Note that it is completely redundant because genvault.c resets // SYREEN_HOME_VISITS when it sets SHIP_VAULT_UNLOCKED=1. NumVisits = 0; } else { switch (NumVisits++) { case 0: NPCPhrase (FOUND_VAULT_YET_1); break; case 1: NPCPhrase (FOUND_VAULT_YET_2); --NumVisits; break; } SyreenVault ((RESPONSE_REF)0); } SET_GAME_STATE (SYREEN_HOME_VISITS, NumVisits); }
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_vindicator0)) { 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) { construct_response (shared_phrase_buf, we_are_vindicator0, GLOBAL_SIS (CommanderName), we_are_vindicator1, GLOBAL_SIS (ShipName), we_are_vindicator2, (UNICODE*)NULL); pStr[1] = we_are_vindicator0; } else pStr[1] = seem_like_nice_guys; if (PHRASE_ENABLED (hostile_1)) pStr[2] = hostile_1; else pStr[2] = hostile_2; if (pStr[LastStack]) { if (pStr[LastStack] != we_are_vindicator0) Response (pStr[LastStack], OrzNeutral); else DoResponsePhrase (pStr[LastStack], OrzNeutral, shared_phrase_buf); } for (i = 0; i < 3; ++i) { if (i != LastStack && pStr[i]) { if (pStr[i] != we_are_vindicator0) Response (pStr[i], OrzNeutral); else DoResponsePhrase (pStr[i], OrzNeutral, shared_phrase_buf); } } 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 NeutralUtwig (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, we_are_vindicator0)) { NPCPhrase (WOULD_BE_HAPPY_BUT); SET_GAME_STATE (UTWIG_STACK1, 1); } else if (PLAYER_SAID (R, why_sad)) { NPCPhrase (ULTRON_BROKE); SET_GAME_STATE (UTWIG_STACK1, 2); } else if (PLAYER_SAID (R, what_ultron)) { NPCPhrase (GLORIOUS_ULTRON); SET_GAME_STATE (UTWIG_STACK1, 3); } else if (PLAYER_SAID (R, dont_be_babies)) { NPCPhrase (MOCK_OUR_PAIN); setSegue (Segue_hostile); SET_GAME_STATE (UTWIG_STACK1, 4); 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, real_sorry_about_ultron)) { NPCPhrase (APPRECIATE_SYMPATHY); SET_GAME_STATE (UTWIG_STACK1, 4); return; } else if (PLAYER_SAID (R, what_about_you_1)) { NPCPhrase (ABOUT_US_1); LastStack = 2; SET_GAME_STATE (UTWIG_WAR_NEWS, 1); } else if (PLAYER_SAID (R, what_about_you_2)) { NPCPhrase (ABOUT_US_2); LastStack = 2; StartSphereTracking (SUPOX_SHIP); SET_GAME_STATE (UTWIG_WAR_NEWS, 2); } else if (PLAYER_SAID (R, what_about_you_3)) { NPCPhrase (ABOUT_US_3); SET_GAME_STATE (UTWIG_WAR_NEWS, 3); } else if (PLAYER_SAID (R, what_about_urquan_1)) { NPCPhrase (ABOUT_URQUAN_1); LastStack = 3; SET_GAME_STATE (UTWIG_STACK2, 1); } else if (PLAYER_SAID (R, what_about_urquan_2)) { NPCPhrase (ABOUT_URQUAN_2); SET_GAME_STATE (UTWIG_STACK2, 2); } switch (GET_GAME_STATE (UTWIG_STACK1)) { case 0: { UNICODE buf[ALLIANCE_NAME_BUFSIZE]; GetAllianceName (buf, name_1); construct_response ( shared_phrase_buf, we_are_vindicator0, GLOBAL_SIS (CommanderName), we_are_vindicator1, buf, we_are_vindicator2, (UNICODE*)NULL); } pStr[0] = we_are_vindicator0; break; case 1: pStr[0] = why_sad; break; case 2: pStr[0] = what_ultron; break; case 3: pStr[0] = dont_be_babies; pStr[1] = real_sorry_about_ultron; break; } switch (GET_GAME_STATE (UTWIG_WAR_NEWS)) { case 0: pStr[2] = what_about_you_1; break; case 1: pStr[2] = what_about_you_2; break; case 2: pStr[2] = what_about_you_3; break; } switch (GET_GAME_STATE (UTWIG_STACK2)) { case 0: pStr[2] = what_about_urquan_1; break; case 1: pStr[2] = what_about_urquan_2; break; } if (pStr[LastStack]) { if (pStr[LastStack] != we_are_vindicator0) Response (pStr[LastStack], NeutralUtwig); else DoResponsePhrase (pStr[LastStack], NeutralUtwig, shared_phrase_buf); } for (i = 0; i < 4; ++i) { if (i != LastStack && pStr[i]) { if (pStr[i] != we_are_vindicator0) Response (pStr[i], NeutralUtwig); else DoResponsePhrase (pStr[i], NeutralUtwig, shared_phrase_buf); } } if (GET_GAME_STATE (ULTRON_CONDITION)) Response (got_ultron, ExitConversation); Response (bye_neutral, ExitConversation); }
static void NeutralSupox (RESPONSE_REF R) { BYTE i, LastStack, NumVisits; RESPONSE_REF pStr[3]; LastStack = 0; pStr[0] = pStr[1] = pStr[2] = 0; if (PLAYER_SAID (R, i_am0)) { NPCPhrase (WE_ARE_SUPOX); SET_GAME_STATE (SUPOX_STACK1, 1); DISABLE_PHRASE (i_am0); } else if (PLAYER_SAID (R, my_ship0)) { NPCPhrase (OUR_SHIP); SET_GAME_STATE (SUPOX_STACK1, 2); DISABLE_PHRASE (my_ship0); } else if (PLAYER_SAID (R, from_alliance0)) { NPCPhrase (FROM_SUPOX); SET_GAME_STATE (SUPOX_STACK1, 3); DISABLE_PHRASE (from_alliance0); } else if (PLAYER_SAID (R, are_you_copying)) { NPCPhrase (YEAH_SORRY); SET_GAME_STATE (SUPOX_STACK1, 4); } else if (PLAYER_SAID (R, why_copy)) { NPCPhrase (SYMBIOTS); SET_GAME_STATE (SUPOX_STACK1, 5); } else if (PLAYER_SAID (R, tell_us_of_your_species)) { NPCPhrase (OUR_SPECIES); LastStack = 1; SET_GAME_STATE (SUPOX_STACK2, 1); } else if (PLAYER_SAID (R, plants_arent_intelligent)) { NPCPhrase (PROVES_WERE_SPECIAL); SET_GAME_STATE (SUPOX_STACK2, 2); } else if (PLAYER_SAID (R, anyone_around_here)) { NPCPhrase (UTWIG_NEARBY); LastStack = 2; SET_GAME_STATE (SUPOX_WAR_NEWS, 1); ActivateStarShip (UTWIG_SHIP, SPHERE_TRACKING); } else if (PLAYER_SAID (R, what_relation_to_utwig)) { NPCPhrase (UTWIG_ALLIES); LastStack = 2; SET_GAME_STATE (SUPOX_WAR_NEWS, 1); } else if (PLAYER_SAID (R, whats_wrong_with_utwig)) { NPCPhrase (BROKE_ULTRON); LastStack = 2; SET_GAME_STATE (SUPOX_WAR_NEWS, 2); } else if (PLAYER_SAID (R, whats_ultron)) { NPCPhrase (TAKE_ULTRON); SET_GAME_STATE (SUPOX_WAR_NEWS, 0); SET_GAME_STATE (ULTRON_CONDITION, 1); Response (what_do_i_do_now, ExitConversation); Response (thanks_now_we_eat_you, ExitConversation); return; } else if (PLAYER_SAID (R, got_fixed_ultron)) { NPCPhrase (GOOD_GIVE_TO_UTWIG); SET_GAME_STATE (SUPOX_ULTRON_HELP, 1); } else if (PLAYER_SAID (R, look_i_repaired_lots)) { NPCPhrase (ALMOST_THERE); SET_GAME_STATE (SUPOX_ULTRON_HELP, 1); } else if (PLAYER_SAID (R, look_i_slightly_repaired)) { NPCPhrase (GREAT_DO_MORE); SET_GAME_STATE (SUPOX_ULTRON_HELP, 1); } else if (PLAYER_SAID (R, where_get_repairs)) { NPCPhrase (ANCIENT_RHYME); SET_GAME_STATE (SUPOX_ULTRON_HELP, 1); } switch (GET_GAME_STATE (SUPOX_STACK2)) { case 0: pStr[1] = tell_us_of_your_species; break; case 1: pStr[1] = plants_arent_intelligent; break; } switch (GET_GAME_STATE (SUPOX_STACK1)) { case 0: construct_response (shared_phrase_buf, i_am0, GLOBAL_SIS (CommanderName), i_am1, (UNICODE*)NULL); pStr[0] = i_am0; pStr[1] = 0; break; case 1: construct_response (shared_phrase_buf, my_ship0, GLOBAL_SIS (ShipName), my_ship1, (UNICODE*)NULL); pStr[0] = my_ship0; pStr[1] = 0; break; case 2: { UNICODE buf[ALLIANCE_NAME_BUFSIZE]; GetAllianceName (buf, name_1); construct_response ( shared_phrase_buf, from_alliance0, buf, from_alliance1, (UNICODE*)NULL); } pStr[0] = from_alliance0; pStr[1] = 0; break; case 3: pStr[0] = are_you_copying; pStr[1] = 0; break; case 4: pStr[0] = why_copy; pStr[1] = 0; break; } NumVisits = GET_GAME_STATE (ULTRON_CONDITION); if (NumVisits == 0) { switch (GET_GAME_STATE (SUPOX_WAR_NEWS)) { case 0: if (GET_GAME_STATE (UTWIG_VISITS) || GET_GAME_STATE (UTWIG_HOME_VISITS) || GET_GAME_STATE (BOMB_VISITS)) pStr[2] = what_relation_to_utwig; else pStr[2] = anyone_around_here; break; case 1: pStr[2] = whats_wrong_with_utwig; break; case 2: pStr[2] = whats_ultron; break; } } if (pStr[LastStack]) { if (LastStack != 0 || GET_GAME_STATE (SUPOX_STACK1) > 2) Response (pStr[LastStack], NeutralSupox); else DoResponsePhrase (pStr[LastStack], NeutralSupox, shared_phrase_buf); } for (i = 0; i < 3; ++i) { if (i != LastStack && pStr[i]) { if (i != 0 || GET_GAME_STATE (SUPOX_STACK1) > 2) Response (pStr[i], NeutralSupox); else DoResponsePhrase (pStr[i], NeutralSupox, shared_phrase_buf); } } if (!GET_GAME_STATE (SUPOX_ULTRON_HELP)) { switch (NumVisits) { case 1: Response (where_get_repairs, NeutralSupox); break; case 2: Response (look_i_slightly_repaired, NeutralSupox); break; case 3: Response (look_i_repaired_lots, NeutralSupox); break; case 4: Response (got_fixed_ultron, NeutralSupox); break; } } Response (bye_neutral, ExitConversation); }
static void YehatSpace (RESPONSE_REF R) { BYTE i, LastStack; RESPONSE_REF pStr[3]; LastStack = 0; pStr[0] = pStr[1] = pStr[2] = 0; if (PLAYER_SAID (R, whats_up_space_1) || PLAYER_SAID (R, whats_up_space_2) || PLAYER_SAID (R, whats_up_space_3) || PLAYER_SAID (R, whats_up_space_4)) { BYTE NumVisits; NumVisits = GET_GAME_STATE (YEHAT_REBEL_INFO); switch (NumVisits++) { case 0: NPCPhrase (GENERAL_INFO_SPACE_1); break; case 1: NPCPhrase (GENERAL_INFO_SPACE_2); break; case 2: NPCPhrase (GENERAL_INFO_SPACE_3); break; case 3: NPCPhrase (GENERAL_INFO_SPACE_4); --NumVisits; break; } SET_GAME_STATE (YEHAT_REBEL_INFO, NumVisits); DISABLE_PHRASE (whats_up_space_1); } else if (PLAYER_SAID (R, i_demand_you_ally_space0)) { NPCPhrase (WE_CANNOT_1); LastStack = 2; SET_GAME_STATE (NO_YEHAT_ALLY_SPACE, 1); } else if (PLAYER_SAID (R, obligation)) { NPCPhrase (WE_CANNOT_2); SET_GAME_STATE (BATTLE_SEGUE, 0); SET_GAME_STATE (NO_YEHAT_ALLY_SPACE, 2); return; } else if (PLAYER_SAID (R, at_least_help_us_space)) { NPCPhrase (SORRY_CANNOT); LastStack = 1; SET_GAME_STATE (NO_YEHAT_HELP_SPACE, 1); } else if (PLAYER_SAID (R, dishonor)) { NPCPhrase (HERES_A_HINT); SET_GAME_STATE (NO_YEHAT_HELP_SPACE, 2); } else if (PLAYER_SAID (R, what_about_pkunk_royalist)) { if (GET_GAME_STATE (YEHAT_ABSORBED_PKUNK)) NPCPhrase (PKUNK_ABSORBED_ROYALIST); else NPCPhrase (HATE_PKUNK_ROYALIST); SET_GAME_STATE (YEHAT_ROYALIST_TOLD_PKUNK, 1); } // SET_FUNCPTR (&PtrDesc, YehatSpace); if (PHRASE_ENABLED (whats_up_space_1)) { switch (GET_GAME_STATE (YEHAT_REBEL_INFO)) { case 0: pStr[0] = whats_up_space_1; break; case 1: pStr[0] = whats_up_space_2; break; case 2: pStr[0] = whats_up_space_3; break; case 3: pStr[0] = whats_up_space_4; break; } } switch (GET_GAME_STATE (NO_YEHAT_HELP_SPACE)) { case 0: pStr[1] = at_least_help_us_space; break; case 1: pStr[1] = dishonor; break; } switch (GET_GAME_STATE (NO_YEHAT_ALLY_SPACE)) { case 0: { UNICODE buf[ALLIANCE_NAME_BUFSIZE]; GetAllianceName (buf, name_1); construct_response ( shared_phrase_buf, i_demand_you_ally_space0, GLOBAL_SIS (CommanderName), i_demand_you_ally_space1, GLOBAL_SIS (ShipName), i_demand_you_ally_space2, buf, i_demand_you_ally_space3, (UNICODE*)NULL); pStr[2] = i_demand_you_ally_space0; break; } case 1: pStr[2] = obligation; break; } if (pStr[LastStack]) { if (pStr[LastStack] != i_demand_you_ally_space0) Response (pStr[LastStack], YehatSpace); else DoResponsePhrase (pStr[LastStack], YehatSpace, shared_phrase_buf); } for (i = 0; i < 3; ++i) { if (i != LastStack && pStr[i]) { if (pStr[i] != i_demand_you_ally_space0) Response (pStr[i], YehatSpace); else DoResponsePhrase (pStr[i], YehatSpace, shared_phrase_buf); } } if (!GET_GAME_STATE (YEHAT_ROYALIST_TOLD_PKUNK) && GET_GAME_STATE (PKUNK_VISITS) && GET_GAME_STATE (PKUNK_HOME_VISITS)) Response (what_about_pkunk_royalist, YehatSpace); if (GET_GAME_STATE (SHOFIXTI_VISITS)) { switch (GET_GAME_STATE (YEHAT_REBEL_TOLD_PKUNK)) { case 0: Response (shofixti_alive_1, StartRevolt); break; case 1: Response (shofixti_alive_2, StartRevolt); break; } } Response (bye_space, ExitConversation); }
static void ByeBye (RESPONSE_REF R) { if (PLAYER_SAID (R, ok_i_will_get_radios)) NPCPhrase (THANKS_FOR_HELPING); else if (PLAYER_SAID (R, well_go_get_them_now)) NPCPhrase (GLAD_WHEN_YOU_COME_BACK); else if (PLAYER_SAID (R, we_will_take_care_of_base)) { NPCPhrase (GOOD_LUCK_WITH_BASE); SET_GAME_STATE (WILL_DESTROY_BASE, 1); } else if (PLAYER_SAID (R, take_care_of_base_again)) NPCPhrase (GOOD_LUCK_AGAIN); else if (PLAYER_SAID (R, base_was_abandoned) || PLAYER_SAID (R, i_lied_it_was_abandoned)) { NPCPhrase (IT_WAS_ABANDONED); NPCPhrase (HERE_COMES_ILWRATH); SET_GAME_STATE (PROBE_ILWRATH_ENCOUNTER, 1); } else if (PLAYER_SAID (R, oh_yes_big_fight)) { NPCPhrase (IM_GLAD_YOU_WON); NPCPhrase (HERE_COMES_ILWRATH); SET_GAME_STATE (PROBE_ILWRATH_ENCOUNTER, 1); } else if (PLAYER_SAID (R, i_cant_talk_about_it)) { NPCPhrase (IM_SURE_IT_WAS_DIFFICULT); NPCPhrase (HERE_COMES_ILWRATH); SET_GAME_STATE (PROBE_ILWRATH_ENCOUNTER, 1); } else if (PLAYER_SAID (R, cook_their_butts) || PLAYER_SAID (R, overthrow_evil_aliens) || PLAYER_SAID (R, annihilate_those_monsters)) { SET_GAME_STATE (PROBE_ILWRATH_ENCOUNTER, 0); if (PLAYER_SAID (R, cook_their_butts)) NPCPhrase (COOK_BUTTS); else if (PLAYER_SAID (R, overthrow_evil_aliens)) NPCPhrase (OVERTHROW_ALIENS); else /* if (R == annihilate_those_monsters) */ NPCPhrase (KILL_MONSTERS); construct_response (shared_phrase_buf, name_40, GLOBAL_SIS (CommanderName), name_41, (UNICODE*)NULL); NPCPhrase (THIS_MAY_SEEM_SILLY); Response (name_1, ByeBye); Response (name_2, ByeBye); Response (name_3, ByeBye); DoResponsePhrase (name_40, ByeBye, shared_phrase_buf); SET_GAME_STATE (STARBASE_AVAILABLE, 1); } else { if (PLAYER_SAID (R, name_1)) { NPCPhrase (OK_THE_NAFS); SET_GAME_STATE (NEW_ALLIANCE_NAME, 0); } else if (PLAYER_SAID (R, name_2)) { NPCPhrase (OK_THE_CAN); SET_GAME_STATE (NEW_ALLIANCE_NAME, 1); } else if (PLAYER_SAID (R, name_3)) { NPCPhrase (OK_THE_UFW); SET_GAME_STATE (NEW_ALLIANCE_NAME, 2); } else /* if (PLAYER_SAID (R, name_4)) */ { NPCPhrase (OK_THE_NAME_IS_EMPIRE0); NPCPhrase (GLOBAL_PLAYER_NAME); NPCPhrase (OK_THE_NAME_IS_EMPIRE1); SET_GAME_STATE (NEW_ALLIANCE_NAME, 3); } NPCPhrase (STARBASE_WILL_BE_READY); } }
static void PkunkHome (RESPONSE_REF R) { BYTE NumVisits; if (PLAYER_SAID (R, no_conquest)) NPCPhrase (GOOD_IDEA); else if (PLAYER_SAID (R, enough_ilwrath)) NPCPhrase (OK_ENOUGH_ILWRATH); else if (PLAYER_SAID (R, enough_about_you)) NPCPhrase (OK_ENOUGH_ABOUT_US); else if (PLAYER_SAID (R, where_fleet_1) || PLAYER_SAID (R, where_fleet_2) || PLAYER_SAID (R, where_fleet_3)) { SET_GAME_STATE (PKUNK_SWITCH, 1); if (!(GET_GAME_STATE (PKUNK_MISSION) & 1)) { NumVisits = GET_GAME_STATE (PKUNK_RETURN); switch (NumVisits++) { case 0: NPCPhrase (RETURNING_FROM_YEHAT_1); break; case 1: NPCPhrase (RETURNING_FROM_YEHAT_2); --NumVisits; break; } SET_GAME_STATE (PKUNK_RETURN, NumVisits); } else { NumVisits = GET_GAME_STATE (PKUNK_MIGRATE); switch (NumVisits++) { case 0: NPCPhrase (MIGRATING_HOMEWORLD_1); break; case 1: NPCPhrase (MIGRATING_HOMEWORLD_2); break; case 2: NPCPhrase (MIGRATING_HOMEWORLD_3); --NumVisits; break; } SET_GAME_STATE (PKUNK_MIGRATE, NumVisits); } NumVisits = GET_GAME_STATE (PKUNK_FLEET) + 1; SET_GAME_STATE (PKUNK_FLEET, NumVisits); DISABLE_PHRASE (where_fleet_1); } else if (PLAYER_SAID (R, am_worried_1) || PLAYER_SAID (R, am_worried_2) || PLAYER_SAID (R, am_worried_3)) { NumVisits = GET_GAME_STATE (PKUNK_WORRY); switch (NumVisits++) { case 0: NPCPhrase (DONT_WORRY_1); break; case 1: NPCPhrase (DONT_WORRY_2); break; case 2: NPCPhrase (DONT_WORRY_3); --NumVisits; break; } SET_GAME_STATE (PKUNK_WORRY, NumVisits); DISABLE_PHRASE (am_worried_1); } else if (PLAYER_SAID (R, try_to_be_nicer)) { NPCPhrase (CANT_ASK_FOR_MORE); if (!GET_GAME_STATE (CLEAR_SPINDLE)) { NPCPhrase (GIVE_SPINDLE); SET_GAME_STATE (CLEAR_SPINDLE, 1); SET_GAME_STATE (CLEAR_SPINDLE_ON_SHIP, 1); } NPCPhrase (CAN_BE_FRIENDS); SET_GAME_STATE (PKUNK_MANNER, 3); SET_GAME_STATE (PKUNK_VISITS, 0); SET_GAME_STATE (PKUNK_HOME_VISITS, 0); } else if (PLAYER_SAID (R, what_about_ilwrath)) { NPCPhrase (ABOUT_ILWRATH /* ILWRATH_GONE */); DISABLE_PHRASE (what_about_ilwrath); } if (PHRASE_ENABLED (we_conquer) && GET_GAME_STATE (PKUNK_MANNER) == 0) { Response (we_conquer, DiscussConquer); } if (GET_GAME_STATE (PKUNK_ON_THE_MOVE)) { if (PHRASE_ENABLED (where_fleet_1) && !GET_GAME_STATE (PKUNK_SWITCH)) { switch (GET_GAME_STATE (PKUNK_FLEET)) { case 0: Response (where_fleet_1, PkunkHome); break; case 1: Response (where_fleet_2, PkunkHome); break; case 2: Response (where_fleet_3, PkunkHome); break; } } else if (!PHRASE_ENABLED (where_fleet_1) && PHRASE_ENABLED (am_worried_1) && (GET_GAME_STATE (PKUNK_MISSION) & 1)) { switch (GET_GAME_STATE (PKUNK_WORRY)) { case 0: Response (am_worried_1, PkunkHome); break; case 1: Response (am_worried_2, PkunkHome); break; case 2: Response (am_worried_3, PkunkHome); break; } } } if (!GET_GAME_STATE (PKUNK_SHIP_MONTH)) { 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, OfferAlliance, shared_phrase_buf); } if (PHRASE_ENABLED (what_about_you)) { Response (what_about_you, AboutPkunk); } if (PHRASE_ENABLED (what_about_ilwrath)) { if (!GET_GAME_STATE (ILWRATH_DECEIVED)) { Response (what_about_ilwrath, AboutIlwrath); } else { Response (what_about_ilwrath, PkunkHome); } } Response (bye_friendly, 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 YehatHome (RESPONSE_REF R) { if (PLAYER_SAID (R, whats_up_homeworld)) { BYTE NumVisits; NumVisits = GET_GAME_STATE (YEHAT_ROYALIST_INFO); switch (NumVisits++) { case 0: NPCPhrase (GENERAL_INFO_HOMEWORLD_1); break; case 1: NPCPhrase (GENERAL_INFO_HOMEWORLD_2); --NumVisits; break; } SET_GAME_STATE (YEHAT_ROYALIST_INFO, NumVisits); DISABLE_PHRASE (whats_up_homeworld); } else if (PLAYER_SAID (R, at_least_help_us_homeworld)) { NPCPhrase (NO_HELP_ENEMY); SET_GAME_STATE (NO_YEHAT_HELP_HOME, 1); } else if (PLAYER_SAID (R, give_info)) { NPCPhrase (NO_INFO_FOR_ENEMY); SET_GAME_STATE (NO_YEHAT_INFO, 1); } else if (PLAYER_SAID (R, what_about_pkunk_royalist)) { if (GET_GAME_STATE (YEHAT_ABSORBED_PKUNK)) NPCPhrase (PKUNK_ABSORBED_ROYALIST); else NPCPhrase (HATE_PKUNK_ROYALIST); SET_GAME_STATE (YEHAT_ROYALIST_TOLD_PKUNK, 1); } if (PHRASE_ENABLED (whats_up_homeworld)) Response (whats_up_homeworld, YehatHome); if (!GET_GAME_STATE (YEHAT_ROYALIST_TOLD_PKUNK) && GET_GAME_STATE (PKUNK_VISITS) && GET_GAME_STATE (PKUNK_HOME_VISITS)) Response (what_about_pkunk_royalist, YehatHome); if (!GET_GAME_STATE (NO_YEHAT_HELP_HOME)) Response (at_least_help_us_homeworld, YehatHome); if (!GET_GAME_STATE (NO_YEHAT_INFO)) Response (give_info, YehatHome); if (!GET_GAME_STATE (NO_YEHAT_ALLY_HOME)) { UNICODE buf[ALLIANCE_NAME_BUFSIZE]; GetAllianceName (buf, name_1); construct_response ( shared_phrase_buf, i_demand_you_ally_homeworld0, GLOBAL_SIS (CommanderName), i_demand_you_ally_homeworld1, buf, i_demand_you_ally_homeworld2, GLOBAL_SIS (ShipName), i_demand_you_ally_homeworld3, (UNICODE*)NULL); DoResponsePhrase (i_demand_you_ally_homeworld0, ExitConversation, shared_phrase_buf); } Response (bye_homeworld, ExitConversation); }