1 //Copyright Paul Reiche, Fred Ford. 1992-2002
2 
3 /*
4  *  This program is free software; you can redistribute it and/or modify
5  *  it under the terms of the GNU General Public License as published by
6  *  the Free Software Foundation; either version 2 of the License, or
7  *  (at your option) any later version.
8  *
9  *  This program is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *  GNU General Public License for more details.
13  *
14  *  You should have received a copy of the GNU General Public License
15  *  along with this program; if not, write to the Free Software
16  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17  */
18 
19 #include "../commall.h"
20 #include "resinst.h"
21 #include "strings.h"
22 
23 #include "uqm/build.h"
24 
25 
26 static LOCDATA supox_desc =
27 {
28 	NULL, /* init_encounter_func */
29 	NULL, /* post_encounter_func */
30 	NULL, /* uninit_encounter_func */
31 	SUPOX_PMAP_ANIM, /* AlienFrame */
32 	SUPOX_FONT, /* AlienFont */
33 	WHITE_COLOR_INIT, /* AlienTextFColor */
34 	BLACK_COLOR_INIT, /* AlienTextBColor */
35 	{0, 0}, /* AlienTextBaseline */
36 	0, /* SIS_TEXT_WIDTH - 16, */ /* AlienTextWidth */
37 	ALIGN_CENTER, /* AlienTextAlign */
38 	VALIGN_TOP, /* AlienTextValign */
39 	SUPOX_COLOR_MAP, /* AlienColorMap */
40 	SUPOX_MUSIC, /* AlienSong */
41 	NULL_RESOURCE, /* AlienAltSong */
42 	0, /* AlienSongFlags */
43 	SUPOX_CONVERSATION_PHRASES, /* PlayerPhrases */
44 	4, /* NumAnimations */
45 	{ /* AlienAmbientArray (ambient animations) */
46 		{
47 			4, /* StartIndex */
48 			5, /* NumFrames */
49 			YOYO_ANIM
50 					| WAIT_TALKING, /* AnimFlags */
51 			ONE_SECOND / 10, ONE_SECOND / 10, /* FrameRate */
52 			ONE_SECOND, ONE_SECOND * 3, /* RestartRate */
53 			0, /* BlockMask */
54 		},
55 		{
56 			9, /* StartIndex */
57 			10, /* NumFrames */
58 			CIRCULAR_ANIM, /* AnimFlags */
59 			ONE_SECOND / 15, 0, /* FrameRate */
60 			ONE_SECOND, ONE_SECOND * 3, /* RestartRate */
61 			0, /* BlockMask */
62 		},
63 		{
64 			19, /* StartIndex */
65 			10, /* NumFrames */
66 			CIRCULAR_ANIM, /* AnimFlags */
67 			ONE_SECOND / 15, 0, /* FrameRate */
68 			ONE_SECOND, ONE_SECOND * 3, /* RestartRate */
69 			0, /* BlockMask */
70 		},
71 		{
72 			29, /* StartIndex */
73 			13, /* NumFrames */
74 			CIRCULAR_ANIM, /* AnimFlags */
75 			ONE_SECOND / 15, 0, /* FrameRate */
76 			ONE_SECOND, ONE_SECOND * 3, /* RestartRate */
77 			0, /* BlockMask */
78 		},
79 	},
80 	{ /* AlienTransitionDesc */
81 		0, /* StartIndex */
82 		0, /* NumFrames */
83 		0, /* AnimFlags */
84 		0, 0, /* FrameRate */
85 		0, 0, /* RestartRate */
86 		0, /* BlockMask */
87 	},
88 	{ /* AlienTalkDesc */
89 		1, /* StartIndex */
90 		3, /* NumFrames */
91 		0, /* AnimFlags */
92 		ONE_SECOND / 15, 0, /* FrameRate */
93 		ONE_SECOND / 12, 0, /* RestartRate */
94 		0, /* BlockMask */
95 	},
96 	NULL, /* AlienNumberSpeech - none */
97 	/* Filler for loaded resources */
98 	NULL, NULL, NULL,
99 	NULL,
100 	NULL,
101 };
102 
103 static void
ExitConversation(RESPONSE_REF R)104 ExitConversation (RESPONSE_REF R)
105 {
106 	setSegue (Segue_peace);
107 
108 	if (PLAYER_SAID (R, bye_neutral))
109 		NPCPhrase (GOODBYE_NEUTRAL);
110 	else if (PLAYER_SAID (R, what_do_i_do_now))
111 		NPCPhrase (FIX_IT);
112 	else if (PLAYER_SAID (R, thanks_now_we_eat_you))
113 	{
114 		NPCPhrase (HIDEOUS_MONSTERS);
115 
116 		SET_GAME_STATE (SUPOX_HOSTILE, 1);
117 		SET_GAME_STATE (SUPOX_HOME_VISITS, 0);
118 		SET_GAME_STATE (SUPOX_VISITS, 0);
119 	}
120 	else if (PLAYER_SAID (R, bye_after_space))
121 		NPCPhrase (GOODBYE_AFTER_SPACE);
122 	else if (PLAYER_SAID (R, bye_before_space))
123 		NPCPhrase (GOODBYE_BEFORE_SPACE);
124 	else if (PLAYER_SAID (R, bye_allied_homeworld))
125 		NPCPhrase (GOODBYE_ALLIED_HOMEWORLD);
126 	else if (PLAYER_SAID (R, can_you_help))
127 	{
128 		NPCPhrase (HOW_HELP);
129 		if (EscortFeasibilityStudy (SUPOX_SHIP) == 0)
130 			NPCPhrase (DONT_NEED);
131 		else
132 		{
133 			NPCPhrase (HAVE_4_SHIPS);
134 
135 			AlienTalkSegue ((COUNT)~0);
136 			AddEscortShips (SUPOX_SHIP, 4);
137 		}
138 	}
139 }
140 
141 static void AlliedHome (RESPONSE_REF R);
142 
143 static void
AlliedHome(RESPONSE_REF R)144 AlliedHome (RESPONSE_REF R)
145 {
146 	BYTE NumVisits, News;
147 
148 	News = GET_GAME_STATE (SUPOX_WAR_NEWS);
149 	NumVisits = GET_GAME_STATE (UTWIG_SUPOX_MISSION);
150 	if (PLAYER_SAID (R, how_went_war))
151 	{
152 		NPCPhrase (ABOUT_BATTLE);
153 
154 		News |= (1 << 0);
155 	}
156 	else if (PLAYER_SAID (R, how_goes_war))
157 	{
158 		if (NumVisits == 1)
159 		{
160 			NPCPhrase (FLEET_ON_WAY);
161 
162 			SET_GAME_STATE (SUPOX_WAR_NEWS, 1);
163 		}
164 		else switch (GET_GAME_STATE (SUPOX_WAR_NEWS))
165 		{
166 			case 0:
167 				NPCPhrase (BATTLE_HAPPENS_1);
168 				News = 1;
169 				break;
170 			case 1:
171 				NPCPhrase (BATTLE_HAPPENS_2);
172 				News = 2;
173 				break;
174 		}
175 
176 		DISABLE_PHRASE (how_goes_war);
177 	}
178 	else if (PLAYER_SAID (R, learn_new_info))
179 	{
180 		if (NumVisits < 5)
181 			NPCPhrase (NO_NEW_INFO);
182 		else
183 		{
184 			NPCPhrase (SAMATRA);
185 
186 			News |= (1 << 1);
187 		}
188 
189 		DISABLE_PHRASE (learn_new_info);
190 	}
191 	else if (PLAYER_SAID (R, what_now_homeworld))
192 	{
193 		if (NumVisits < 5)
194 			NPCPhrase (UP_TO_YOU);
195 		else
196 			NPCPhrase (HOPE_KILL_EACH_OTHER);
197 
198 		DISABLE_PHRASE (what_now_homeworld);
199 	}
200 	else if (PLAYER_SAID (R, how_is_ultron))
201 	{
202 		NPCPhrase (ULTRON_IS_GREAT);
203 
204 		DISABLE_PHRASE (how_is_ultron);
205 	}
206 	SET_GAME_STATE (SUPOX_WAR_NEWS, News);
207 
208 	if (NumVisits >= 5)
209 	{
210 		if (!(News & (1 << 0)))
211 			Response (how_went_war, AlliedHome);
212 	}
213 	else if (PHRASE_ENABLED (how_goes_war)
214 			&& ((NumVisits == 1 && News == 0)
215 			|| (NumVisits && News < 2)))
216 		Response (how_goes_war, AlliedHome);
217 	if (PHRASE_ENABLED (learn_new_info))
218 		Response (learn_new_info, AlliedHome);
219 	if (PHRASE_ENABLED (what_now_homeworld))
220 		Response (what_now_homeworld, AlliedHome);
221 	if (PHRASE_ENABLED (how_is_ultron))
222 		Response (how_is_ultron, AlliedHome);
223 	if (NumVisits == 0)
224 		Response (can_you_help, ExitConversation);
225 	Response (bye_allied_homeworld, ExitConversation);
226 }
227 
228 static void
BeforeKohrAh(RESPONSE_REF R)229 BeforeKohrAh (RESPONSE_REF R)
230 {
231 	BYTE NumVisits;
232 
233 	if (PLAYER_SAID (R, whats_up_before_space))
234 	{
235 		NumVisits = GET_GAME_STATE (SUPOX_INFO);
236 		switch (NumVisits++)
237 		{
238 			case 0:
239 				NPCPhrase (GENERAL_INFO_BEFORE_SPACE_1);
240 				break;
241 			case 1:
242 				NPCPhrase (GENERAL_INFO_BEFORE_SPACE_2);
243 				--NumVisits;
244 				break;
245 		}
246 		SET_GAME_STATE (SUPOX_INFO, NumVisits);
247 
248 		DISABLE_PHRASE (whats_up_before_space);
249 	}
250 	else if (PLAYER_SAID (R, what_now_before_space))
251 	{
252 		NPCPhrase (DO_THIS_BEFORE_SPACE);
253 
254 		DISABLE_PHRASE (what_now_before_space);
255 	}
256 
257 	if (PHRASE_ENABLED (whats_up_before_space))
258 		Response (whats_up_before_space, BeforeKohrAh);
259 	if (PHRASE_ENABLED (what_now_before_space))
260 		Response (what_now_before_space, BeforeKohrAh);
261 	Response (bye_before_space, ExitConversation);
262 }
263 
264 static void
AfterKohrAh(RESPONSE_REF R)265 AfterKohrAh (RESPONSE_REF R)
266 {
267 	BYTE NumVisits;
268 
269 	if (PLAYER_SAID (R, whats_up_after_space))
270 	{
271 		NumVisits = GET_GAME_STATE (SUPOX_INFO);
272 		switch (NumVisits++)
273 		{
274 			case 0:
275 				NPCPhrase (GENERAL_INFO_AFTER_SPACE_1);
276 				break;
277 			case 1:
278 				NPCPhrase (GENERAL_INFO_AFTER_SPACE_2);
279 				--NumVisits;
280 				break;
281 		}
282 		SET_GAME_STATE (SUPOX_INFO, NumVisits);
283 
284 		DISABLE_PHRASE (whats_up_after_space);
285 	}
286 	else if (PLAYER_SAID (R, what_now_after_space))
287 	{
288 		NPCPhrase (DO_THIS_AFTER_SPACE);
289 
290 		DISABLE_PHRASE (what_now_after_space);
291 	}
292 
293 	if (PHRASE_ENABLED (whats_up_after_space))
294 		Response (whats_up_after_space, AfterKohrAh);
295 	if (PHRASE_ENABLED (what_now_after_space))
296 		Response (what_now_after_space, AfterKohrAh);
297 	Response (bye_after_space, ExitConversation);
298 }
299 
300 static void
NeutralSupox(RESPONSE_REF R)301 NeutralSupox (RESPONSE_REF R)
302 {
303 	BYTE i, LastStack, NumVisits;
304 	RESPONSE_REF pStr[3];
305 
306 	LastStack = 0;
307 	pStr[0] = pStr[1] = pStr[2] = 0;
308 	if (PLAYER_SAID (R, i_am0))
309 	{
310 		NPCPhrase (WE_ARE_SUPOX);
311 
312 		SET_GAME_STATE (SUPOX_STACK1, 1);
313 		DISABLE_PHRASE (i_am0);
314 	}
315 	else if (PLAYER_SAID (R, my_ship0))
316 	{
317 		NPCPhrase (OUR_SHIP);
318 
319 		SET_GAME_STATE (SUPOX_STACK1, 2);
320 		DISABLE_PHRASE (my_ship0);
321 	}
322 	else if (PLAYER_SAID (R, from_alliance0))
323 	{
324 		NPCPhrase (FROM_SUPOX);
325 
326 		SET_GAME_STATE (SUPOX_STACK1, 3);
327 		DISABLE_PHRASE (from_alliance0);
328 	}
329 	else if (PLAYER_SAID (R, are_you_copying))
330 	{
331 		NPCPhrase (YEAH_SORRY);
332 
333 		SET_GAME_STATE (SUPOX_STACK1, 4);
334 	}
335 	else if (PLAYER_SAID (R, why_copy))
336 	{
337 		NPCPhrase (SYMBIOTS);
338 
339 		SET_GAME_STATE (SUPOX_STACK1, 5);
340 	}
341 	else if (PLAYER_SAID (R, tell_us_of_your_species))
342 	{
343 		NPCPhrase (OUR_SPECIES);
344 
345 		LastStack = 1;
346 		SET_GAME_STATE (SUPOX_STACK2, 1);
347 	}
348 	else if (PLAYER_SAID (R, plants_arent_intelligent))
349 	{
350 		NPCPhrase (PROVES_WERE_SPECIAL);
351 
352 		SET_GAME_STATE (SUPOX_STACK2, 2);
353 	}
354 	else if (PLAYER_SAID (R, anyone_around_here))
355 	{
356 		NPCPhrase (UTWIG_NEARBY);
357 
358 		LastStack = 2;
359 		SET_GAME_STATE (SUPOX_WAR_NEWS, 1);
360 		StartSphereTracking (UTWIG_SHIP);
361 	}
362 	else if (PLAYER_SAID (R, what_relation_to_utwig))
363 	{
364 		NPCPhrase (UTWIG_ALLIES);
365 
366 		LastStack = 2;
367 		SET_GAME_STATE (SUPOX_WAR_NEWS, 1);
368 	}
369 	else if (PLAYER_SAID (R, whats_wrong_with_utwig))
370 	{
371 		NPCPhrase (BROKE_ULTRON);
372 
373 		LastStack = 2;
374 		SET_GAME_STATE (SUPOX_WAR_NEWS, 2);
375 	}
376 	else if (PLAYER_SAID (R, whats_ultron))
377 	{
378 		NPCPhrase (TAKE_ULTRON);
379 
380 		SET_GAME_STATE (SUPOX_WAR_NEWS, 0);
381 		SET_GAME_STATE (ULTRON_CONDITION, 1);
382 
383 		Response (what_do_i_do_now, ExitConversation);
384 		Response (thanks_now_we_eat_you, ExitConversation);
385 
386 		return;
387 	}
388 	else if (PLAYER_SAID (R, got_fixed_ultron))
389 	{
390 		NPCPhrase (GOOD_GIVE_TO_UTWIG);
391 
392 		SET_GAME_STATE (SUPOX_ULTRON_HELP, 1);
393 	}
394 	else if (PLAYER_SAID (R, look_i_repaired_lots))
395 	{
396 		NPCPhrase (ALMOST_THERE);
397 
398 		SET_GAME_STATE (SUPOX_ULTRON_HELP, 1);
399 	}
400 	else if (PLAYER_SAID (R, look_i_slightly_repaired))
401 	{
402 		NPCPhrase (GREAT_DO_MORE);
403 
404 		SET_GAME_STATE (SUPOX_ULTRON_HELP, 1);
405 	}
406 	else if (PLAYER_SAID (R, where_get_repairs))
407 	{
408 		NPCPhrase (ANCIENT_RHYME);
409 
410 		SET_GAME_STATE (SUPOX_ULTRON_HELP, 1);
411 	}
412 
413 	switch (GET_GAME_STATE (SUPOX_STACK2))
414 	{
415 		case 0:
416 			pStr[1] = tell_us_of_your_species;
417 			break;
418 		case 1:
419 			pStr[1] = plants_arent_intelligent;
420 			break;
421 	}
422 	switch (GET_GAME_STATE (SUPOX_STACK1))
423 	{
424 		case 0:
425 			construct_response (shared_phrase_buf,
426 					i_am0,
427 					GLOBAL_SIS (CommanderName),
428 					i_am1,
429 					(UNICODE*)NULL);
430 			pStr[0] = i_am0;
431 			pStr[1] = 0;
432 			break;
433 		case 1:
434 			construct_response (shared_phrase_buf,
435 					my_ship0,
436 					GLOBAL_SIS (ShipName),
437 					my_ship1,
438 					(UNICODE*)NULL);
439 			pStr[0] = my_ship0;
440 			pStr[1] = 0;
441 			break;
442 		case 2:
443 			{
444 				UNICODE buf[ALLIANCE_NAME_BUFSIZE];
445 
446 				GetAllianceName (buf, name_1);
447 				construct_response (
448 						shared_phrase_buf,
449 						from_alliance0,
450 						buf,
451 						from_alliance1,
452 						(UNICODE*)NULL);
453 			}
454 			pStr[0] = from_alliance0;
455 			pStr[1] = 0;
456 			break;
457 		case 3:
458 			pStr[0] = are_you_copying;
459 			pStr[1] = 0;
460 			break;
461 		case 4:
462 			pStr[0] = why_copy;
463 			pStr[1] = 0;
464 			break;
465 	}
466 	NumVisits = GET_GAME_STATE (ULTRON_CONDITION);
467 	if (NumVisits == 0)
468 	{
469 		switch (GET_GAME_STATE (SUPOX_WAR_NEWS))
470 		{
471 			case 0:
472 				if (GET_GAME_STATE (UTWIG_VISITS)
473 						|| GET_GAME_STATE (UTWIG_HOME_VISITS)
474 						|| GET_GAME_STATE (BOMB_VISITS))
475 					pStr[2] = what_relation_to_utwig;
476 				else
477 					pStr[2] = anyone_around_here;
478 				break;
479 			case 1:
480 				pStr[2] = whats_wrong_with_utwig;
481 				break;
482 			case 2:
483 				pStr[2] = whats_ultron;
484 				break;
485 		}
486 	}
487 	if (pStr[LastStack])
488 	{
489 		if (LastStack != 0 || GET_GAME_STATE (SUPOX_STACK1) > 2)
490 			Response (pStr[LastStack], NeutralSupox);
491 		else
492 			DoResponsePhrase (pStr[LastStack], NeutralSupox, shared_phrase_buf);
493 	}
494 	for (i = 0; i < 3; ++i)
495 	{
496 		if (i != LastStack && pStr[i])
497 		{
498 			if (i != 0 || GET_GAME_STATE (SUPOX_STACK1) > 2)
499 				Response (pStr[i], NeutralSupox);
500 			else
501 				DoResponsePhrase (pStr[i], NeutralSupox, shared_phrase_buf);
502 		}
503 	}
504 	if (!GET_GAME_STATE (SUPOX_ULTRON_HELP))
505 	{
506 		switch (NumVisits)
507 		{
508 			case 1:
509 				Response (where_get_repairs, NeutralSupox);
510 				break;
511 			case 2:
512 				Response (look_i_slightly_repaired, NeutralSupox);
513 				break;
514 			case 3:
515 				Response (look_i_repaired_lots, NeutralSupox);
516 				break;
517 			case 4:
518 				Response (got_fixed_ultron, NeutralSupox);
519 				break;
520 		}
521 	}
522 	Response (bye_neutral, ExitConversation);
523 }
524 
525 static void
Intro(void)526 Intro (void)
527 {
528 	BYTE NumVisits;
529 
530 	if (LOBYTE (GLOBAL (CurrentActivity)) == WON_LAST_BATTLE)
531 	{
532 		NPCPhrase (OUT_TAKES);
533 
534 		setSegue (Segue_peace);
535 		return;
536 	}
537 
538 	if (GET_GAME_STATE (SUPOX_HOSTILE))
539 	{
540 		NumVisits = GET_GAME_STATE (SUPOX_VISITS);
541 		switch (NumVisits++)
542 		{
543 			case 0:
544 				NPCPhrase (HOSTILE_SPACE_HELLO_1);
545 				break;
546 			case 1:
547 				NPCPhrase (HOSTILE_SPACE_HELLO_2);
548 				--NumVisits;
549 				break;
550 		}
551 		SET_GAME_STATE (SUPOX_VISITS, NumVisits);
552 
553 		setSegue (Segue_peace);
554 	}
555 	else if (CheckAlliance (SUPOX_SHIP) == GOOD_GUY)
556 	{
557 		if (GET_GAME_STATE (GLOBAL_FLAGS_AND_DATA) & (1 << 7))
558 		{
559 			NumVisits = GET_GAME_STATE (SUPOX_HOME_VISITS);
560 			switch (NumVisits++)
561 			{
562 				case 0:
563 					NPCPhrase (ALLIED_HOMEWORLD_HELLO_1);
564 					break;
565 				case 1:
566 					NPCPhrase (ALLIED_HOMEWORLD_HELLO_2);
567 					break;
568 				case 2:
569 					NPCPhrase (ALLIED_HOMEWORLD_HELLO_3);
570 					break;
571 				case 3:
572 					NPCPhrase (ALLIED_HOMEWORLD_HELLO_4);
573 					--NumVisits;
574 					break;
575 			}
576 			SET_GAME_STATE (SUPOX_HOME_VISITS, NumVisits);
577 
578 			AlliedHome ((RESPONSE_REF)0);
579 		}
580 		else
581 		{
582 			NumVisits = GET_GAME_STATE (UTWIG_SUPOX_MISSION);
583 			if (NumVisits == 1)
584 			{
585 				NumVisits = GET_GAME_STATE (SUPOX_VISITS);
586 				switch (NumVisits++)
587 				{
588 					case 0:
589 						NPCPhrase (HELLO_BEFORE_KOHRAH_SPACE_1);
590 						break;
591 					case 1:
592 						NPCPhrase (HELLO_BEFORE_KOHRAH_SPACE_2);
593 						--NumVisits;
594 						break;
595 				}
596 				SET_GAME_STATE (SUPOX_VISITS, NumVisits);
597 
598 				BeforeKohrAh ((RESPONSE_REF)0);
599 			}
600 			else if (NumVisits < 5)
601 			{
602 				NumVisits = GET_GAME_STATE (SUPOX_VISITS);
603 				switch (NumVisits++)
604 				{
605 					case 0:
606 						NPCPhrase (HELLO_DURING_KOHRAH_SPACE_1);
607 						break;
608 					case 1:
609 						NPCPhrase (HELLO_DURING_KOHRAH_SPACE_2);
610 						--NumVisits;
611 						break;
612 				}
613 				SET_GAME_STATE (SUPOX_VISITS, NumVisits);
614 			}
615 			else
616 			{
617 				NumVisits = GET_GAME_STATE (SUPOX_VISITS);
618 				switch (NumVisits++)
619 				{
620 					case 0:
621 						NPCPhrase (HELLO_AFTER_KOHRAH_SPACE_1);
622 						break;
623 					case 1:
624 						NPCPhrase (HELLO_AFTER_KOHRAH_SPACE_2);
625 						--NumVisits;
626 						break;
627 				}
628 				SET_GAME_STATE (SUPOX_VISITS, NumVisits);
629 
630 				AfterKohrAh ((RESPONSE_REF)0);
631 			}
632 		}
633 	}
634 	else
635 	{
636 		if (GET_GAME_STATE (GLOBAL_FLAGS_AND_DATA) & (1 << 7))
637 		{
638 			NumVisits = GET_GAME_STATE (SUPOX_HOME_VISITS);
639 			switch (NumVisits++)
640 			{
641 				case 0:
642 					NPCPhrase (NEUTRAL_HOMEWORLD_HELLO_1);
643 					break;
644 				case 1:
645 					NPCPhrase (NEUTRAL_HOMEWORLD_HELLO_2);
646 					--NumVisits;
647 					break;
648 			}
649 			SET_GAME_STATE (SUPOX_HOME_VISITS, NumVisits);
650 		}
651 		else
652 		{
653 			NumVisits = GET_GAME_STATE (SUPOX_VISITS);
654 			switch (NumVisits++)
655 			{
656 				case 0:
657 					NPCPhrase (NEUTRAL_SPACE_HELLO_1);
658 					break;
659 				case 1:
660 					NPCPhrase (NEUTRAL_SPACE_HELLO_2);
661 					--NumVisits;
662 					break;
663 			}
664 			SET_GAME_STATE (SUPOX_VISITS, NumVisits);
665 		}
666 
667 		NeutralSupox ((RESPONSE_REF)0);
668 	}
669 }
670 
671 static COUNT
uninit_supox(void)672 uninit_supox (void)
673 {
674 	return (0);
675 }
676 
677 static void
post_supox_enc(void)678 post_supox_enc (void)
679 {
680 	// nothing defined so far
681 }
682 
683 LOCDATA*
init_supox_comm(void)684 init_supox_comm (void)
685 {
686 	LOCDATA *retval;
687 
688 	supox_desc.init_encounter_func = Intro;
689 	supox_desc.post_encounter_func = post_supox_enc;
690 	supox_desc.uninit_encounter_func = uninit_supox;
691 
692 	supox_desc.AlienTextBaseline.x = TEXT_X_OFFS + (SIS_TEXT_WIDTH >> 1);
693 	supox_desc.AlienTextBaseline.y = 0;
694 	supox_desc.AlienTextWidth = SIS_TEXT_WIDTH - 16;
695 
696 	if (!GET_GAME_STATE (SUPOX_HOSTILE)
697 			|| LOBYTE (GLOBAL (CurrentActivity)) == WON_LAST_BATTLE)
698 	{
699 		setSegue (Segue_peace);
700 	}
701 	else
702 	{
703 		setSegue (Segue_hostile);
704 	}
705 	retval = &supox_desc;
706 
707 	return (retval);
708 }
709