Fix gaphics glitches during dialog. Spathi eye and ZFP are most noticable,

but al aliens are afffected.   Closes 23, 156


git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@837 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
ghaushe
2003-03-01 02:42:28 +00:00
parent db2d6bf416
commit 0f487716ad
3 changed files with 277 additions and 189 deletions
+2
View File
@@ -1,4 +1,6 @@
Changes towards version 0.3:
- Fix various graphics glitches during dialog. Especially Spathi Eye,and ZFP
Closes #23, #156 - PhracturedBlue
- Fix Syreen, KohrAh and Slylandro ship effects to not be screen
size dependant (corolary to bug 93) - PhracturedBlue
- Line clipping is now handled correctly; fixes #28 (one pixel corruptions)
+208 -141
View File
@@ -182,13 +182,13 @@ add_text (int status, PTEXT pTextIn)
}
else if (GetContextFontLeading (&leading), status <= -4)
{
text_width = SIS_SCREEN_WIDTH - 8 - (TEXT_X_OFFS << 2);
text_width = (SIZE) (SIS_SCREEN_WIDTH - 8 - (TEXT_X_OFFS << 2));
pText = pTextIn;
}
else
{
text_width = SIS_SCREEN_WIDTH - 8 - (TEXT_X_OFFS << 2);
text_width = (SIZE) (SIS_SCREEN_WIDTH - 8 - (TEXT_X_OFFS << 2));
switch (status)
{
@@ -473,6 +473,7 @@ xform_complete (void)
}
static BOOLEAN ColorChange;
static BOOLEAN ClearSubtitle = FALSE;
/* Only one thread should ever be allowed to be calling this at any time */
void
@@ -587,7 +588,6 @@ XFormPLUT (COLORMAPPTR ColorMapPtr, SIZE TimeInterval)
{
if (ColorMapPtr)
{
DWORD TimeOut;
DWORD *pOldCMap, *pCurCMap;
XFORM_CONTROL *control;
int i;
@@ -738,11 +738,11 @@ SetUpSequence (PSEQUENCE pSeq)
if (pSeq->AnimType == COLOR_ANIM)
pSeq->AnimObj.CurCMap =
SetRelColorMapIndex (pSeq->AnimObj.CurCMap,
(COUNT)TFB_Random () % pSeq->FramesLeft);
(COUNT)((COUNT)TFB_Random () % pSeq->FramesLeft));
else
pSeq->AnimObj.CurFrame =
SetRelFrameIndex (pSeq->AnimObj.CurFrame,
(COUNT)TFB_Random () % pSeq->FramesLeft);
(COUNT)((COUNT)TFB_Random () % pSeq->FramesLeft));
}
else if (ADPtr->AnimFlags & YOYO_ANIM)
{
@@ -795,16 +795,22 @@ int ambient_anim_task(void* data)
{
SIZE TalkAlarm;
FRAME TalkFrame;
FRAME ResetTalkFrame = NULL;
FRAME TransitionFrame = NULL;
FRAME AnimFrame[MAX_ANIMATIONS];
COUNT i;
DWORD LastTime;
FRAME CommFrame;
register PPRIMITIVE pBatch;
SEQUENCE Sequencer[MAX_ANIMATIONS];
ANIMATION_DESC TalkBuffer = CommData.AlienTalkDesc;
PSEQUENCE pSeq;
ANIMATION_DESCPTR ADPtr;
DWORD ActiveMask;
DWORD LastOscillTime;
Task task = (Task) data;
BOOLEAN TransitionDone = FALSE;
BOOLEAN TalkFrameChanged = FALSE;
BOOLEAN FrameChanged[MAX_ANIMATIONS];
while ((CommFrame = CommData.AlienFrame) == 0 && !Task_ReadState (task, TASK_EXIT))
TaskSwitch ();
@@ -819,6 +825,21 @@ int ambient_anim_task(void* data)
TalkFrame = 0;
LastTime = GetTimeCounter ();
LastOscillTime = LastTime;
memset (&FrameChanged[0], 0 , MAX_ANIMATIONS);
memset (&AnimFrame[0], 0, sizeof (FRAME) * MAX_ANIMATIONS);
for (i = 0; i <= CommData.NumAnimations; i++)
if (CommData.AlienAmbientArray[i].AnimFlags & YOYO_ANIM)
AnimFrame[i] = SetAbsFrameIndex (
CommFrame,
CommData.AlienAmbientArray[i].StartIndex
);
else
AnimFrame[i] = SetAbsFrameIndex (
CommFrame,
(COUNT)(CommData.AlienAmbientArray[i].StartIndex
+ CommData.AlienAmbientArray[i].NumFrames - 1)
);
while (!Task_ReadState (task, TASK_EXIT))
{
BOOLEAN Change, CanTalk;
@@ -842,7 +863,6 @@ int ambient_anim_task(void* data)
CanTalk = FALSE;
}
pBatch = &DisplayArray[MAX_ANIMATIONS + 1];
pSeq = &Sequencer[i];
ADPtr = &CommData.AlienAmbientArray[i];
while (i-- && !Task_ReadState (task, TASK_EXIT))
@@ -851,7 +871,7 @@ int ambient_anim_task(void* data)
--pSeq;
if (ADPtr->AnimFlags & ANIM_DISABLED)
continue;
else if (pSeq->Direction == NO_DIR)
if (pSeq->Direction == NO_DIR)
{
if (!(ADPtr->AnimFlags
& CommData.AlienTalkDesc.AnimFlags & WAIT_TALKING))
@@ -889,17 +909,14 @@ int ambient_anim_task(void* data)
{
XFormPLUT (
GetColorMapAddress (pSeq->AnimObj.CurCMap),
pSeq->Alarm - 1
(COUNT) (pSeq->Alarm - 1)
);
}
else
{
Change = TRUE;
--pBatch;
SetPrimNextLink (pBatch, (pBatch - &DisplayArray[0]) + 1);
SetPrimType (pBatch, STAMP_PRIM);
pBatch->Object.Stamp.origin.x = -SAFE_X;
pBatch->Object.Stamp.frame = pSeq->AnimObj.CurFrame;
AnimFrame[i] = pSeq->AnimObj.CurFrame;
FrameChanged[i] = 1;
}
if (pSeq->FramesLeft == 0)
@@ -916,13 +933,15 @@ pBatch->Object.Stamp.origin.x = -SAFE_X;
if (pSeq->AnimType == COLOR_ANIM)
pSeq->AnimObj.CurCMap = SetRelColorMapIndex (
pSeq->AnimObj.CurCMap,
-pSeq->FramesLeft
(SWORD) (-pSeq->FramesLeft)
);
else
{
pSeq->AnimObj.CurFrame = SetRelFrameIndex (
pSeq->AnimObj.CurFrame,
-pSeq->FramesLeft
(SWORD) (-pSeq->FramesLeft)
);
}
}
}
@@ -931,15 +950,15 @@ pBatch->Object.Stamp.origin.x = -SAFE_X;
if (pSeq->AnimType == COLOR_ANIM)
pSeq->AnimObj.CurCMap =
SetAbsColorMapIndex (pSeq->AnimObj.CurCMap,
ADPtr->StartIndex
(COUNT) (ADPtr->StartIndex
+ ((COUNT)TFB_Random ()
% ADPtr->NumFrames));
% ADPtr->NumFrames)));
else
pSeq->AnimObj.CurFrame =
SetAbsFrameIndex (pSeq->AnimObj.CurFrame,
ADPtr->StartIndex
(COUNT) (ADPtr->StartIndex
+ ((COUNT)TFB_Random ()
% ADPtr->NumFrames));
% ADPtr->NumFrames)));
}
else if (pSeq->AnimType == COLOR_ANIM)
{
@@ -986,154 +1005,205 @@ pBatch->Object.Stamp.origin.x = -SAFE_X;
&& (ADPtr->AnimFlags & WAIT_TALKING)
&& !(CommData.AlienTransitionDesc.AnimFlags & PAUSE_TALKING))
{
if ((long)TalkAlarm > (long)ElapsedTicks)
TalkAlarm -= (SIZE)ElapsedTicks;
else
BOOLEAN done = 0;
for (i = 0; i < CommData.NumAnimations; i++)
if (ActiveMask & (1L << i)
&& CommData.AlienAmbientArray[i].AnimFlags & WAIT_TALKING)
done = 1;
if (! done)
{
BYTE AFlags;
SIZE FrameRate;
if (TalkAlarm > 0)
TalkAlarm = 0;
else
TalkAlarm = -1;
AFlags = ADPtr->AnimFlags;
if (!(AFlags & (TALK_INTRO | TALK_DONE)))
if (ADPtr->StartIndex != TalkBuffer.StartIndex)
{
FrameRate =
ADPtr->BaseFrameRate
+ ((COUNT)TFB_Random ()
% (ADPtr->RandomFrameRate + 1));
if (TalkAlarm < 0
|| GetFrameIndex (TalkFrame) ==
ADPtr->StartIndex)
Change = TRUE;
ResetTalkFrame = SetAbsFrameIndex (CommFrame,
TalkBuffer.StartIndex);
TalkBuffer = CommData.AlienTalkDesc;
}
if ((long)TalkAlarm > (long)ElapsedTicks)
TalkAlarm -= (SIZE)ElapsedTicks;
else
{
BYTE AFlags;
SIZE FrameRate;
if (TalkAlarm > 0)
TalkAlarm = 0;
else
TalkAlarm = -1;
AFlags = ADPtr->AnimFlags;
if (!(AFlags & (TALK_INTRO | TALK_DONE)))
{
TalkFrame = SetAbsFrameIndex (CommFrame,
ADPtr->StartIndex + 1
FrameRate =
ADPtr->BaseFrameRate
+ ((COUNT)TFB_Random ()
% (ADPtr->NumFrames - 1)));
FrameRate +=
ADPtr->BaseRestartRate
+ ((COUNT)TFB_Random ()
% (ADPtr->RandomRestartRate + 1));
% (ADPtr->RandomFrameRate + 1));
if (TalkAlarm < 0
|| GetFrameIndex (TalkFrame) ==
ADPtr->StartIndex)
{
TalkFrame = SetAbsFrameIndex (CommFrame,
(COUNT) (ADPtr->StartIndex + 1
+ ((COUNT)TFB_Random ()
% (ADPtr->NumFrames - 1))));
FrameRate +=
ADPtr->BaseRestartRate
+ ((COUNT)TFB_Random ()
% (ADPtr->RandomRestartRate + 1));
}
else
{
TalkFrame = SetAbsFrameIndex (CommFrame,
ADPtr->StartIndex);
if (ADPtr->AnimFlags & PAUSE_TALKING)
{
if (!(CommData.AlienTransitionDesc.AnimFlags
& TALK_DONE))
{
CommData.AlienTransitionDesc.AnimFlags |=
PAUSE_TALKING;
ADPtr->AnimFlags &=
~PAUSE_TALKING;
}
else if (CommData.AlienTransitionDesc.NumFrames)
ADPtr->AnimFlags |=
TALK_DONE;
else
ADPtr->AnimFlags &=
~(WAIT_TALKING | PAUSE_TALKING);
FrameRate = 0;
}
}
}
else
{
TalkFrame = SetAbsFrameIndex (CommFrame,
ADPtr->StartIndex);
if (ADPtr->AnimFlags & PAUSE_TALKING)
ADPtr = &CommData.AlienTransitionDesc;
if (AFlags & TALK_INTRO)
{
if (!(CommData.AlienTransitionDesc.AnimFlags
& TALK_DONE))
FrameRate =
ADPtr->BaseFrameRate
+ ((COUNT)TFB_Random ()
% (ADPtr->RandomFrameRate + 1));
if (TalkAlarm < 0 || TransitionDone)
{
CommData.AlienTransitionDesc.AnimFlags |=
PAUSE_TALKING;
ADPtr->AnimFlags &=
~PAUSE_TALKING;
TalkFrame = SetAbsFrameIndex (CommFrame,
ADPtr->StartIndex);
TransitionDone = 0;
}
else if (CommData.AlienTransitionDesc.NumFrames)
ADPtr->AnimFlags |=
TALK_DONE;
else
ADPtr->AnimFlags &=
~(WAIT_TALKING | PAUSE_TALKING);
TalkFrame = IncFrameIndex (TalkFrame);
FrameRate = 0;
if ((BYTE)(GetFrameIndex (TalkFrame)
- ADPtr->StartIndex + 1) ==
ADPtr->NumFrames)
{
CommData.AlienTalkDesc.AnimFlags &= ~TALK_INTRO;
TransitionDone = 1;
}
TransitionFrame = TalkFrame;
}
else /* if (AFlags & TALK_DONE) */
{
FrameRate =
ADPtr->BaseFrameRate
+ ((COUNT)TFB_Random ()
% (ADPtr->RandomFrameRate + 1));
if (TalkAlarm < 0)
TalkFrame = SetAbsFrameIndex (CommFrame,
(COUNT) (ADPtr->StartIndex
+ ADPtr->NumFrames - 1));
else
TalkFrame = DecFrameIndex (TalkFrame);
if (GetFrameIndex (TalkFrame) ==
ADPtr->StartIndex)
{
CommData.AlienTalkDesc.AnimFlags &=
~(PAUSE_TALKING | TALK_DONE);
if (ADPtr->AnimFlags & TALK_INTRO)
CommData.AlienTalkDesc.AnimFlags &= ~WAIT_TALKING;
else
{
ADPtr->AnimFlags |=
PAUSE_TALKING;
ADPtr->AnimFlags &= ~TALK_DONE;
}
FrameRate = 0;
}
}
}
TalkFrameChanged = TRUE;
Change = TRUE;
TalkAlarm = FrameRate;
}
else
{
ADPtr = &CommData.AlienTransitionDesc;
if (AFlags & TALK_INTRO)
{
FrameRate =
ADPtr->BaseFrameRate
+ ((COUNT)TFB_Random ()
% (ADPtr->RandomFrameRate + 1));
if (TalkAlarm < 0)
TalkFrame = SetAbsFrameIndex (CommFrame,
ADPtr->StartIndex);
else
TalkFrame = IncFrameIndex (TalkFrame);
if ((BYTE)(GetFrameIndex (TalkFrame)
- ADPtr->StartIndex + 1) ==
ADPtr->NumFrames)
CommData.AlienTalkDesc.AnimFlags &= ~TALK_INTRO;
}
else /* if (AFlags & TALK_DONE) */
{
FrameRate =
ADPtr->BaseFrameRate
+ ((COUNT)TFB_Random ()
% (ADPtr->RandomFrameRate + 1));
if (TalkAlarm < 0)
TalkFrame = SetAbsFrameIndex (CommFrame,
ADPtr->StartIndex
+ ADPtr->NumFrames
- 1);
else
TalkFrame = DecFrameIndex (TalkFrame);
if (GetFrameIndex (TalkFrame) ==
ADPtr->StartIndex)
{
CommData.AlienTalkDesc.AnimFlags &=
~(PAUSE_TALKING | TALK_DONE);
if (ADPtr->AnimFlags & TALK_INTRO)
CommData.AlienTalkDesc.AnimFlags &= ~WAIT_TALKING;
else
{
ADPtr->AnimFlags |=
PAUSE_TALKING;
ADPtr->AnimFlags &= ~TALK_DONE;
}
FrameRate = 0;
}
}
}
Change = TRUE;
--pBatch;
SetPrimNextLink (pBatch, (pBatch - &DisplayArray[0]) + 1);
SetPrimType (pBatch, STAMP_PRIM);
pBatch->Object.Stamp.origin.x = -SAFE_X;
pBatch->Object.Stamp.frame = TalkFrame;
TalkAlarm = FrameRate;
}
}
if (Change |= ColorChange)
{
CONTEXT OldContext;
BOOLEAN CheckSub = 0;
OldContext = SetContext (TaskContext);
if (ColorChange)
{
FRAME F;
F = CommData.AlienFrame;
CommData.AlienFrame = CommFrame;
DrawAlienFrame (TalkFrame, &Sequencer[CommData.NumAnimations - 1]);
CommData.AlienFrame = F;
ColorChange = FALSE;
ClearSubtitle = FALSE;
CheckSub = 1;
}
else
if (Change || ClearSubtitle)
{
COUNT StartIndex;
SetPrimNextLink (&DisplayArray[MAX_ANIMATIONS], END_OF_LIST);
StartIndex = pBatch - &DisplayArray[0];
DrawBatch (&DisplayArray[0], StartIndex, 0);
STAMP s;
s.origin.x = -SAFE_X;
s.origin.y = 0;
if (ClearSubtitle)
{
s.frame = CommFrame;
DrawStamp (&s);
}
i = CommData.NumAnimations;
while (i--)
{
if ((ClearSubtitle || FrameChanged[i]))
{
s.frame = AnimFrame[i];
DrawStamp (&s);
FrameChanged[i] = 0;
}
}
if (ClearSubtitle && TransitionFrame)
{
s.frame = TransitionFrame;
DrawStamp (&s);
}
if (ResetTalkFrame)
{
s.frame = ResetTalkFrame;
DrawStamp (&s);
ResetTalkFrame = NULL;
}
if (TalkFrame && TalkFrameChanged)
{
s.frame = TalkFrame;
DrawStamp (&s);
TalkFrameChanged = FALSE;
}
ClearSubtitle = FALSE;
Change = FALSE;
CheckSub = 1;
}
if (subtitle_state >= SPACE_SUBTITLE)
if (CheckSub && subtitle_state >= SPACE_SUBTITLE)
{
TEXT t;
@@ -1287,7 +1357,6 @@ AlienTalkSegue (COUNT wait_track)
if ((GLOBAL (CurrentActivity) & CHECK_ABORT)
|| (CommData.AlienTransitionDesc.AnimFlags & TALK_INTRO))
return;
SetSemaphore (GraphicsSem);
if (!pCurInputState->Initialized)
@@ -1356,7 +1425,6 @@ AlienTalkSegue (COUNT wait_track)
LastActivity &= ~CHECK_LOAD;
}
if (wait_track == (COUNT)~0 || CommData.AlienTalkDesc.NumFrames)
{
if (!(CommData.AlienTransitionDesc.AnimFlags & TALK_INTRO))
@@ -1369,7 +1437,6 @@ AlienTalkSegue (COUNT wait_track)
CommData.AlienTransitionDesc.AnimFlags &= ~PAUSE_TALKING;
if (CommData.AlienTalkDesc.NumFrames)
CommData.AlienTalkDesc.AnimFlags |= WAIT_TALKING;
while (CommData.AlienTalkDesc.AnimFlags & TALK_INTRO)
{
ClearSemaphore (GraphicsSem);
@@ -1533,6 +1600,7 @@ DoCommunication (INPUT_STATE InputState, PENCOUNTER_STATE pES)
FlushPLUTXForms ();
ColorChange = FALSE;
ClearSubtitle = FALSE;
FlushColorXForms ();
StopMusic ();
@@ -1565,7 +1633,7 @@ DoResponsePhrase (RESPONSE_REF R, RESPONSE_FUNC response_func,
{
STRING locString;
locString = SetAbsStringTableIndex (CommData.ConversationPhrases, R - 1);
locString = SetAbsStringTableIndex (CommData.ConversationPhrases, (COUNT)(R - 1));
pES->response_list[pES->num_responses].response_text.pStr =
(UNICODE *)GetStringAddress (locString);
pES->response_list[pES->num_responses].response_text.CharCount =
@@ -1594,13 +1662,13 @@ HailAlien (void)
ES.InputFunc = DoCommunication;
hOldIndex = SetResourceIndex (hResIndex);
PlayerFont = CaptureFont (LoadGraphic (PLAYER_FONT));
PlayerFont = CaptureFont ((FONT_REF)LoadGraphic (PLAYER_FONT));
SetResourceIndex (hOldIndex);
CommData.AlienFrame = CaptureDrawable (
LoadGraphicInstance ((RESOURCE)CommData.AlienFrame)
);
CommData.AlienFont = CaptureFont (
CommData.AlienFont = CaptureFont ((FONT_REF)
LoadGraphic ((RESOURCE)CommData.AlienFont)
);
CommData.AlienColorMap = CaptureColorMap (
@@ -1971,8 +2039,7 @@ RaceCommunication (void)
int
do_subtitles (UNICODE *pStr)
{
static UNICODE *last_page = NULL;;
static UNICODE *last_page = NULL;
if (pStr == 0)
return (subtitle_state = DONE_SUBTITLE);
else if (pStr == (void *)~0)
@@ -1984,7 +2051,7 @@ do_subtitles (UNICODE *pStr)
if (last_page == pStr)
return (subtitle_state);
subtitle_state = READ_SUBTITLE;
ColorChange = TRUE;
ClearSubtitle = TRUE;
// fprintf (stderr, "changed page to: %d\n", cur_page);
}
last_page = pStr;
@@ -2017,7 +2084,7 @@ do_subtitles (UNICODE *pStr)
case WAIT_SUBTITLE:
{
subtitle_state = DONE_SUBTITLE;
ColorChange = TRUE;
ClearSubtitle = TRUE;
}
case DONE_SUBTITLE:
break;
+67 -48
View File
@@ -99,18 +99,25 @@ enum
PIK_ALIEN
};
static int LastAlien = FOT_ALIEN;
static void
SelectAlienZOQ (void)
{
if (LastAlien != ZOQ_ALIEN)
{
LastAlien = ZOQ_ALIEN;
CommData.AlienTransitionDesc.StartIndex = FOT_TO_ZOQ;
CommData.AlienTalkDesc.AnimFlags |= TALK_INTRO;
CommData.AlienTalkDesc.StartIndex = ZOQ_TALK_INDEX;
CommData.AlienTalkDesc.NumFrames = ZOQ_TALK_FRAMES;
CommData.AlienAmbientArray[1].AnimFlags &= ~WAIT_TALKING;
CommData.AlienTextTemplate.baseline.x = ZOQ_BASE_X;
CommData.AlienTextTemplate.baseline.x = (SWORD)ZOQ_BASE_X;
CommData.AlienTextTemplate.baseline.y = ZOQ_BASE_Y;
CommData.AlienTextFColor = ZOQ_FG_COLOR;
CommData.AlienTextBColor = ZOQ_BG_COLOR;
}
}
static void
SelectAlienFOT (void)
@@ -120,17 +127,29 @@ SelectAlienFOT (void)
static void
SelectAlienPIK (void)
{
if (LastAlien != PIK_ALIEN)
{
LastAlien = PIK_ALIEN;
CommData.AlienTransitionDesc.StartIndex = FOT_TO_PIK;
CommData.AlienTalkDesc.AnimFlags |= TALK_INTRO;
CommData.AlienTalkDesc.StartIndex = PIK_TALK_INDEX;
CommData.AlienTalkDesc.NumFrames = PIK_TALK_FRAMES;
CommData.AlienAmbientArray[1].AnimFlags |= WAIT_TALKING;
CommData.AlienTextTemplate.baseline.x = PIK_BASE_X;
CommData.AlienTextTemplate.baseline.x = (SWORD)PIK_BASE_X;
CommData.AlienTextTemplate.baseline.y = PIK_BASE_Y;
CommData.AlienTextFColor = PIK_FG_COLOR;
CommData.AlienTextBColor = PIK_BG_COLOR;
}
}
static void
ZFPTalkSegue (COUNT wait_track)
{
LastAlien = PIK_ALIEN;
SelectAlienZOQ ();
AlienTalkSegue (wait_track);
}
static void
ExitConversation (RESPONSE_REF R)
{
@@ -140,13 +159,13 @@ ExitConversation (RESPONSE_REF R)
{
NPCPhrase_cb (GOODBYE_HOME0, &SelectAlienZOQ);
NPCPhrase_cb (GOODBYE_HOME1, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
}
else if (PLAYER_SAID (R, decide_later))
{
NPCPhrase_cb (PLEASE_HURRY0, &SelectAlienZOQ);
NPCPhrase_cb (PLEASE_HURRY1, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
}
else if (PLAYER_SAID (R, valuable_info))
{
@@ -154,7 +173,7 @@ ExitConversation (RESPONSE_REF R)
NPCPhrase_cb (GOODBYE1, &SelectAlienPIK);
NPCPhrase_cb (GOODBYE2, &SelectAlienZOQ);
NPCPhrase_cb (GOODBYE3, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
}
else if (PLAYER_SAID (R, how_can_i_help))
{
@@ -166,7 +185,7 @@ ExitConversation (RESPONSE_REF R)
NPCPhrase_cb (EMMISSARIES5, &SelectAlienPIK);
NPCPhrase_cb (EMMISSARIES6, &SelectAlienZOQ);
NPCPhrase_cb (EMMISSARIES7, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
}
else if (PLAYER_SAID (R, sure))
{
@@ -176,7 +195,7 @@ ExitConversation (RESPONSE_REF R)
NPCPhrase_cb (WE_ALLY3, &SelectAlienPIK);
NPCPhrase_cb (WE_ALLY4, &SelectAlienZOQ);
NPCPhrase_cb (WE_ALLY5, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
ActivateStarShip (ZOQFOTPIK_SHIP, 0);
AddEvent (RELATIVE_EVENT, 3, 0, 0, ZOQFOT_DISTRESS_EVENT);
SET_GAME_STATE (ZOQFOT_HOME_VISITS, 0);
@@ -187,7 +206,7 @@ ExitConversation (RESPONSE_REF R)
NPCPhrase_cb (SEE_TOLD_YOU1, &SelectAlienPIK);
NPCPhrase_cb (SEE_TOLD_YOU2, &SelectAlienZOQ);
NPCPhrase_cb (SEE_TOLD_YOU3, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
SET_GAME_STATE (ZOQFOT_HOSTILE, 1);
SET_GAME_STATE (ZOQFOT_HOME_VISITS, 0);
@@ -197,7 +216,7 @@ ExitConversation (RESPONSE_REF R)
{
NPCPhrase_cb (WE_ENEMIES0, &SelectAlienZOQ);
NPCPhrase_cb (WE_ENEMIES1, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
SET_GAME_STATE (ZOQFOT_HOME_VISITS, 0);
SET_GAME_STATE (ZOQFOT_HOSTILE, 1);
@@ -214,7 +233,7 @@ FormAlliance (RESPONSE_REF R)
NPCPhrase_cb (ALLY_WITH_US3, &SelectAlienPIK);
NPCPhrase_cb (ALLY_WITH_US4, &SelectAlienZOQ);
NPCPhrase_cb (ALLY_WITH_US5, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
Response (sure, ExitConversation);
Response (never, ExitConversation);
@@ -232,7 +251,7 @@ ZoqFotIntro (RESPONSE_REF R)
NPCPhrase_cb (WE_GLAD3, &SelectAlienPIK);
NPCPhrase_cb (WE_GLAD4, &SelectAlienZOQ);
NPCPhrase_cb (WE_GLAD5, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
DISABLE_PHRASE (we_are_vindicator0);
}
@@ -252,7 +271,7 @@ ZoqFotIntro (RESPONSE_REF R)
NPCPhrase_cb (YEARS_AGO11, &SelectAlienPIK);
NPCPhrase_cb (YEARS_AGO12, &SelectAlienZOQ);
NPCPhrase_cb (YEARS_AGO13, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
DISABLE_PHRASE (your_race);
}
@@ -264,7 +283,7 @@ ZoqFotIntro (RESPONSE_REF R)
NPCPhrase_cb (TRAVELED_FAR3, &SelectAlienPIK);
NPCPhrase_cb (TRAVELED_FAR4, &SelectAlienZOQ);
NPCPhrase_cb (TRAVELED_FAR5, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
DISABLE_PHRASE (where_from);
}
@@ -282,7 +301,7 @@ ZoqFotIntro (RESPONSE_REF R)
NPCPhrase_cb (UNDER_ATTACK9, &SelectAlienPIK);
NPCPhrase_cb (UNDER_ATTACK10, &SelectAlienZOQ);
NPCPhrase_cb (UNDER_ATTACK11, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
DISABLE_PHRASE (what_emergency);
}
@@ -294,7 +313,7 @@ ZoqFotIntro (RESPONSE_REF R)
NPCPhrase_cb (NOT_HELPFUL3, &SelectAlienPIK);
NPCPhrase_cb (NOT_HELPFUL4, &SelectAlienZOQ);
NPCPhrase_cb (NOT_HELPFUL5, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
DISABLE_PHRASE (tough_luck);
}
@@ -304,7 +323,7 @@ ZoqFotIntro (RESPONSE_REF R)
NPCPhrase_cb (LOOK_LIKE1, &SelectAlienPIK);
NPCPhrase_cb (LOOK_LIKE2, &SelectAlienZOQ);
NPCPhrase_cb (LOOK_LIKE3, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
DISABLE_PHRASE (what_look_like);
}
@@ -355,7 +374,7 @@ AquaintZoqFot (RESPONSE_REF R)
NPCPhrase_cb (HE_IS5, &SelectAlienPIK);
NPCPhrase_cb (HE_IS6, &SelectAlienZOQ);
NPCPhrase_cb (HE_IS7, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
DISABLE_PHRASE (which_fot);
}
@@ -369,7 +388,7 @@ AquaintZoqFot (RESPONSE_REF R)
NPCPhrase_cb (TOLD_YOU5, &SelectAlienPIK);
NPCPhrase_cb (TOLD_YOU6, &SelectAlienZOQ);
NPCPhrase_cb (TOLD_YOU7, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
DISABLE_PHRASE (quiet_toadies);
}
@@ -411,7 +430,7 @@ ZoqFotInfo (RESPONSE_REF R)
{
NPCPhrase_cb (WHAT_SPECIFIC_INFO0, &SelectAlienZOQ);
NPCPhrase_cb (WHAT_SPECIFIC_INFO1, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
}
else if (PLAYER_SAID (R, what_about_others))
{
@@ -429,7 +448,7 @@ ZoqFotInfo (RESPONSE_REF R)
NPCPhrase_cb (ABOUT_OTHERS11, &SelectAlienPIK);
NPCPhrase_cb (ABOUT_OTHERS12, &SelectAlienZOQ);
NPCPhrase_cb (ABOUT_OTHERS13, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
DISABLE_PHRASE (what_about_others);
}
@@ -443,7 +462,7 @@ ZoqFotInfo (RESPONSE_REF R)
NPCPhrase_cb (ABOUT_ZEBRANKY5, &SelectAlienPIK);
NPCPhrase_cb (ABOUT_ZEBRANKY6, &SelectAlienZOQ);
NPCPhrase_cb (ABOUT_ZEBRANKY7, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
DISABLE_PHRASE (what_about_zebranky);
}
@@ -455,7 +474,7 @@ ZoqFotInfo (RESPONSE_REF R)
NPCPhrase_cb (ABOUT_STINGER3, &SelectAlienPIK);
NPCPhrase_cb (ABOUT_STINGER4, &SelectAlienZOQ);
NPCPhrase_cb (ABOUT_STINGER5, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
DISABLE_PHRASE (what_about_stinger);
}
@@ -463,7 +482,7 @@ ZoqFotInfo (RESPONSE_REF R)
{
NPCPhrase_cb (ABOUT_GUY0, &SelectAlienZOQ);
NPCPhrase_cb (ABOUT_GUY1, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
DISABLE_PHRASE (what_about_guy_in_back);
}
@@ -481,7 +500,7 @@ ZoqFotInfo (RESPONSE_REF R)
NPCPhrase_cb (ABOUT_PAST9, &SelectAlienPIK);
NPCPhrase_cb (ABOUT_PAST10, &SelectAlienZOQ);
NPCPhrase_cb (ABOUT_PAST11, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
DISABLE_PHRASE (what_about_past);
}
@@ -535,7 +554,7 @@ ZoqFotHome (RESPONSE_REF R)
NPCPhrase_cb (GENERAL_INFO_11, &SelectAlienPIK);
NPCPhrase_cb (GENERAL_INFO_12, &SelectAlienZOQ);
NPCPhrase_cb (GENERAL_INFO_13, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
break;
case 1:
NPCPhrase_cb (GENERAL_INFO_20, &SelectAlienZOQ);
@@ -546,7 +565,7 @@ ZoqFotHome (RESPONSE_REF R)
NPCPhrase_cb (GENERAL_INFO_25, &SelectAlienPIK);
NPCPhrase_cb (GENERAL_INFO_26, &SelectAlienZOQ);
NPCPhrase_cb (GENERAL_INFO_27, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
break;
case 2:
NPCPhrase_cb (GENERAL_INFO_30, &SelectAlienZOQ);
@@ -555,7 +574,7 @@ ZoqFotHome (RESPONSE_REF R)
NPCPhrase_cb (GENERAL_INFO_33, &SelectAlienPIK);
NPCPhrase_cb (GENERAL_INFO_34, &SelectAlienZOQ);
NPCPhrase_cb (GENERAL_INFO_35, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
break;
case 3:
NPCPhrase_cb (GENERAL_INFO_40, &SelectAlienZOQ);
@@ -570,7 +589,7 @@ ZoqFotHome (RESPONSE_REF R)
NPCPhrase_cb (GENERAL_INFO_49, &SelectAlienPIK);
NPCPhrase_cb (GENERAL_INFO_410, &SelectAlienZOQ);
NPCPhrase_cb (GENERAL_INFO_411, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
--NumVisits;
break;
}
@@ -603,7 +622,7 @@ ZoqFotHome (RESPONSE_REF R)
NPCPhrase_cb (KOHRAH_FRENZY9, &SelectAlienPIK);
NPCPhrase_cb (KOHRAH_FRENZY10, &SelectAlienZOQ);
NPCPhrase_cb (KOHRAH_FRENZY11, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
KnowMask = KNOW_ALL;
}
@@ -624,7 +643,7 @@ ZoqFotHome (RESPONSE_REF R)
NPCPhrase_cb (UTWIG_DELAY11, &SelectAlienPIK);
NPCPhrase_cb (UTWIG_DELAY12, &SelectAlienZOQ);
NPCPhrase_cb (UTWIG_DELAY13, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
KnowMask |= UTWIG_BUY_TIME;
}
@@ -646,7 +665,7 @@ ZoqFotHome (RESPONSE_REF R)
NPCPhrase_cb (URQUAN_NEARLY_GONE3, &SelectAlienPIK);
NPCPhrase_cb (URQUAN_NEARLY_GONE4, &SelectAlienZOQ);
NPCPhrase_cb (URQUAN_NEARLY_GONE5, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
KnowMask |= KOHR_AH_WIN | URQUAN_LOSE;
}
@@ -662,7 +681,7 @@ ZoqFotHome (RESPONSE_REF R)
NPCPhrase_cb (KOHRAH_WINNING7, &SelectAlienPIK);
NPCPhrase_cb (KOHRAH_WINNING8, &SelectAlienZOQ);
NPCPhrase_cb (KOHRAH_WINNING9, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
KnowMask |= KOHR_AH_WIN;
}
@@ -670,7 +689,7 @@ ZoqFotHome (RESPONSE_REF R)
{
NPCPhrase_cb (NO_WAR_NEWS0, &SelectAlienZOQ);
NPCPhrase_cb (NO_WAR_NEWS1, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
}
}
SET_GAME_STATE (ZOQFOT_KNOW_MASK, KnowMask);
@@ -689,7 +708,7 @@ ZoqFotHome (RESPONSE_REF R)
NPCPhrase_cb (GOOD7, &SelectAlienPIK);
NPCPhrase_cb (GOOD8, &SelectAlienZOQ);
NPCPhrase_cb (GOOD9, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
ActivateStarShip (ZOQFOTPIK_SHIP, 0);
AddEvent (RELATIVE_EVENT, 3, 0, 0, ZOQFOT_DISTRESS_EVENT);
@@ -697,7 +716,7 @@ ZoqFotHome (RESPONSE_REF R)
else if (PLAYER_SAID (R, enough_info))
{
NPCPhrase_cb (OK_ENOUGH_INFO, &SelectAlienZOQ);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
}
if (PHRASE_ENABLED (whats_up_homeworld))
@@ -735,7 +754,7 @@ Intro (void)
NPCPhrase_cb (OUT_TAKES11, &SelectAlienPIK);
NPCPhrase_cb (OUT_TAKES12, &SelectAlienZOQ);
NPCPhrase_cb (OUT_TAKES13, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
#else /* YET */
NPCPhrase_cb (WE_ARE0, &SelectAlienZOQ);
NPCPhrase_cb (WE_ARE1, &SelectAlienPIK);
@@ -749,7 +768,7 @@ Intro (void)
NPCPhrase_cb (SCOUT_HELLO1, &SelectAlienPIK);
NPCPhrase_cb (SCOUT_HELLO2, &SelectAlienZOQ);
NPCPhrase_cb (SCOUT_HELLO3, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
#endif /* NOT_YET */
SET_GAME_STATE (BATTLE_SEGUE, 0);
goto ExitIntro;
@@ -763,7 +782,7 @@ Intro (void)
case 0:
NPCPhrase_cb (HOSTILE_HELLO_10, &SelectAlienZOQ);
NPCPhrase_cb (HOSTILE_HELLO_11, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
break;
case 1:
NPCPhrase_cb (HOSTILE_HELLO_20, &SelectAlienZOQ);
@@ -772,17 +791,17 @@ Intro (void)
NPCPhrase_cb (HOSTILE_HELLO_23, &SelectAlienPIK);
NPCPhrase_cb (HOSTILE_HELLO_24, &SelectAlienZOQ);
NPCPhrase_cb (HOSTILE_HELLO_25, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
break;
case 2:
NPCPhrase_cb (HOSTILE_HELLO_30, &SelectAlienZOQ);
NPCPhrase_cb (HOSTILE_HELLO_31, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
break;
case 3:
NPCPhrase_cb (HOSTILE_HELLO_40, &SelectAlienZOQ);
NPCPhrase_cb (HOSTILE_HELLO_41, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
--NumVisits;
break;
}
@@ -818,7 +837,7 @@ Intro (void)
NPCPhrase_cb (SCOUT_HELLO3, &SelectAlienPIK);
}
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
AquaintZoqFot (0);
}
@@ -839,7 +858,7 @@ Intro (void)
NPCPhrase_cb (THANKS_FOR_RESCUE9, &SelectAlienPIK);
NPCPhrase_cb (THANKS_FOR_RESCUE10, &SelectAlienZOQ);
NPCPhrase_cb (THANKS_FOR_RESCUE11, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
SET_GAME_STATE (ZOQFOT_DISTRESS, 0);
ActivateStarShip (ZOQFOTPIK_SHIP, MAX_ZFP_SHIPS);
@@ -865,7 +884,7 @@ Intro (void)
--NumVisits;
break;
}
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
}
else
{
@@ -876,7 +895,7 @@ Intro (void)
NPCPhrase_cb (ALLIED_HOME_HELLO_11, &SelectAlienPIK);
NPCPhrase_cb (ALLIED_HOME_HELLO_12, &SelectAlienZOQ);
NPCPhrase_cb (ALLIED_HOME_HELLO_13, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
break;
case 1:
NPCPhrase_cb (ALLIED_HOME_HELLO_20, &SelectAlienZOQ);
@@ -887,17 +906,17 @@ Intro (void)
NPCPhrase_cb (ALLIED_HOME_HELLO_25, &SelectAlienPIK);
NPCPhrase_cb (ALLIED_HOME_HELLO_26, &SelectAlienZOQ);
NPCPhrase_cb (ALLIED_HOME_HELLO_27, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
break;
case 2:
NPCPhrase_cb (ALLIED_HOME_HELLO_30, &SelectAlienZOQ);
NPCPhrase_cb (ALLIED_HOME_HELLO_31, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
break;
case 3:
NPCPhrase_cb (ALLIED_HOME_HELLO_40, &SelectAlienZOQ);
NPCPhrase_cb (ALLIED_HOME_HELLO_41, &SelectAlienPIK);
AlienTalkSegue ((COUNT)~0);
ZFPTalkSegue ((COUNT)~0);
--NumVisits;
break;
}