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