Added SET_GAME_STATE_32/GET_GAME_STATE_32 to clean up some code
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@2387 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
@@ -435,7 +435,7 @@ DieHuman (RESPONSE_REF R)
|
|||||||
static void
|
static void
|
||||||
Intro (void)
|
Intro (void)
|
||||||
{
|
{
|
||||||
BYTE b0, b1, b2, b3;
|
DWORD GrpOffs;
|
||||||
|
|
||||||
if (LOBYTE (GLOBAL (CurrentActivity)) == WON_LAST_BATTLE)
|
if (LOBYTE (GLOBAL (CurrentActivity)) == WON_LAST_BATTLE)
|
||||||
{
|
{
|
||||||
@@ -460,15 +460,10 @@ Intro (void)
|
|||||||
SET_GAME_STATE (KOHR_AH_SENSES_EVIL, 1);
|
SET_GAME_STATE (KOHR_AH_SENSES_EVIL, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
b0 = GET_GAME_STATE (SAMATRA_GRPOFFS0);
|
GrpOffs = GET_GAME_STATE_32 (SAMATRA_GRPOFFS0);
|
||||||
b1 = GET_GAME_STATE (SAMATRA_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (SAMATRA_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (SAMATRA_GRPOFFS3);
|
|
||||||
if (LOBYTE (GLOBAL (CurrentActivity)) == IN_INTERPLANETARY
|
if (LOBYTE (GLOBAL (CurrentActivity)) == IN_INTERPLANETARY
|
||||||
&& GLOBAL (BattleGroupRef)
|
&& GLOBAL (BattleGroupRef)
|
||||||
&& GLOBAL (BattleGroupRef) == MAKE_DWORD (
|
&& GLOBAL (BattleGroupRef) == GrpOffs)
|
||||||
MAKE_WORD (b0, b1), MAKE_WORD (b2, b3)
|
|
||||||
))
|
|
||||||
{
|
{
|
||||||
NPCPhrase (HELLO_SAMATRA);
|
NPCPhrase (HELLO_SAMATRA);
|
||||||
|
|
||||||
|
|||||||
@@ -157,24 +157,10 @@ static DWORD CurBulletinMask;
|
|||||||
static void
|
static void
|
||||||
ByeBye (RESPONSE_REF R)
|
ByeBye (RESPONSE_REF R)
|
||||||
{
|
{
|
||||||
BYTE b0, b1, b2, b3;
|
|
||||||
|
|
||||||
(void) R; // ignored
|
(void) R; // ignored
|
||||||
b0 = GET_GAME_STATE (STARBASE_BULLETS0);
|
|
||||||
b1 = GET_GAME_STATE (STARBASE_BULLETS1);
|
CurBulletinMask |= GET_GAME_STATE_32 (STARBASE_BULLETS0);
|
||||||
b2 = GET_GAME_STATE (STARBASE_BULLETS2);
|
SET_GAME_STATE_32 (STARBASE_BULLETS0, CurBulletinMask);
|
||||||
b3 = GET_GAME_STATE (STARBASE_BULLETS3);
|
|
||||||
CurBulletinMask |= MAKE_DWORD (
|
|
||||||
MAKE_WORD (b0, b1), MAKE_WORD (b2, b3)
|
|
||||||
);
|
|
||||||
b0 = LOBYTE (LOWORD (CurBulletinMask));
|
|
||||||
b1 = HIBYTE (LOWORD (CurBulletinMask));
|
|
||||||
b2 = LOBYTE (HIWORD (CurBulletinMask));
|
|
||||||
b3 = HIBYTE (HIWORD (CurBulletinMask));
|
|
||||||
SET_GAME_STATE (STARBASE_BULLETS0, b0);
|
|
||||||
SET_GAME_STATE (STARBASE_BULLETS1, b1);
|
|
||||||
SET_GAME_STATE (STARBASE_BULLETS2, b2);
|
|
||||||
SET_GAME_STATE (STARBASE_BULLETS3, b3);
|
|
||||||
|
|
||||||
/* if (R == goodbye_starbase_commander) */
|
/* if (R == goodbye_starbase_commander) */
|
||||||
if (GET_GAME_STATE (CHMMR_BOMB_STATE) >= 2)
|
if (GET_GAME_STATE (CHMMR_BOMB_STATE) >= 2)
|
||||||
@@ -1350,19 +1336,13 @@ static void
|
|||||||
CheckBulletins (BOOLEAN Repeat)
|
CheckBulletins (BOOLEAN Repeat)
|
||||||
{
|
{
|
||||||
RESPONSE_REF pIntro;
|
RESPONSE_REF pIntro;
|
||||||
BYTE b0, b1, b2, b3;
|
BYTE b0;
|
||||||
DWORD BulletinMask;
|
DWORD BulletinMask;
|
||||||
|
|
||||||
if (Repeat)
|
if (Repeat)
|
||||||
BulletinMask = CurBulletinMask ^ 0xFFFFFFFFL;
|
BulletinMask = CurBulletinMask ^ 0xFFFFFFFFL;
|
||||||
else
|
else
|
||||||
{
|
BulletinMask = GET_GAME_STATE_32 (STARBASE_BULLETS0);
|
||||||
b0 = GET_GAME_STATE (STARBASE_BULLETS0);
|
|
||||||
b1 = GET_GAME_STATE (STARBASE_BULLETS1);
|
|
||||||
b2 = GET_GAME_STATE (STARBASE_BULLETS2);
|
|
||||||
b3 = GET_GAME_STATE (STARBASE_BULLETS3);
|
|
||||||
BulletinMask = MAKE_DWORD (MAKE_WORD (b0, b1), MAKE_WORD (b2, b3));
|
|
||||||
}
|
|
||||||
|
|
||||||
pIntro = 0;
|
pIntro = 0;
|
||||||
for (b0 = 0; b0 < 32; ++b0)
|
for (b0 = 0; b0 < 32; ++b0)
|
||||||
@@ -1461,10 +1441,7 @@ CheckBulletins (BOOLEAN Repeat)
|
|||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
if (GET_GAME_STATE (ZOQFOT_HOME_VISITS)
|
if (GET_GAME_STATE (ZOQFOT_HOME_VISITS)
|
||||||
|| GET_GAME_STATE (ZOQFOT_GRPOFFS0)
|
|| GET_GAME_STATE_32 (ZOQFOT_GRPOFFS0))
|
||||||
|| GET_GAME_STATE (ZOQFOT_GRPOFFS1)
|
|
||||||
|| GET_GAME_STATE (ZOQFOT_GRPOFFS2)
|
|
||||||
|| GET_GAME_STATE (ZOQFOT_GRPOFFS3))
|
|
||||||
BulletinMask |= 1L << b0;
|
BulletinMask |= 1L << b0;
|
||||||
else if (CheckTiming (0, 42))
|
else if (CheckTiming (0, 42))
|
||||||
{
|
{
|
||||||
@@ -1637,16 +1614,7 @@ CheckBulletins (BOOLEAN Repeat)
|
|||||||
if (pIntro == 0 && GET_GAME_STATE (STARBASE_VISITED))
|
if (pIntro == 0 && GET_GAME_STATE (STARBASE_VISITED))
|
||||||
NPCPhrase (RETURN_HELLO);
|
NPCPhrase (RETURN_HELLO);
|
||||||
else if (!Repeat)
|
else if (!Repeat)
|
||||||
{
|
SET_GAME_STATE_32 (STARBASE_BULLETS0, BulletinMask);
|
||||||
b0 = LOBYTE (LOWORD (BulletinMask));
|
|
||||||
b1 = HIBYTE (LOWORD (BulletinMask));
|
|
||||||
b2 = LOBYTE (HIWORD (BulletinMask));
|
|
||||||
b3 = HIBYTE (HIWORD (BulletinMask));
|
|
||||||
SET_GAME_STATE (STARBASE_BULLETS0, b0);
|
|
||||||
SET_GAME_STATE (STARBASE_BULLETS1, b1);
|
|
||||||
SET_GAME_STATE (STARBASE_BULLETS2, b2);
|
|
||||||
SET_GAME_STATE (STARBASE_BULLETS3, b3);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
@@ -403,7 +403,7 @@ LoserUrquan (RESPONSE_REF R)
|
|||||||
static void
|
static void
|
||||||
Intro (void)
|
Intro (void)
|
||||||
{
|
{
|
||||||
BYTE b0, b1, b2, b3;
|
DWORD GrpOffs;
|
||||||
|
|
||||||
if (LOBYTE (GLOBAL (CurrentActivity)) == WON_LAST_BATTLE)
|
if (LOBYTE (GLOBAL (CurrentActivity)) == WON_LAST_BATTLE)
|
||||||
{
|
{
|
||||||
@@ -413,15 +413,10 @@ Intro (void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
b0 = GET_GAME_STATE (URQUAN_PROBE_GRPOFFS0);
|
GrpOffs = GET_GAME_STATE_32 (URQUAN_PROBE_GRPOFFS0);
|
||||||
b1 = GET_GAME_STATE (URQUAN_PROBE_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (URQUAN_PROBE_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (URQUAN_PROBE_GRPOFFS3);
|
|
||||||
if (LOBYTE (GLOBAL (CurrentActivity)) == IN_INTERPLANETARY
|
if (LOBYTE (GLOBAL (CurrentActivity)) == IN_INTERPLANETARY
|
||||||
&& GLOBAL (BattleGroupRef)
|
&& GLOBAL (BattleGroupRef)
|
||||||
&& GLOBAL (BattleGroupRef) == MAKE_DWORD (
|
&& GLOBAL (BattleGroupRef) == GrpOffs)
|
||||||
MAKE_WORD (b0, b1), MAKE_WORD (b2, b3)
|
|
||||||
))
|
|
||||||
{
|
{
|
||||||
NPCPhrase (SEND_MESSAGE);
|
NPCPhrase (SEND_MESSAGE);
|
||||||
SET_GAME_STATE (PROBE_MESSAGE_DELIVERED, 1);
|
SET_GAME_STATE (PROBE_MESSAGE_DELIVERED, 1);
|
||||||
@@ -441,15 +436,10 @@ Intro (void)
|
|||||||
SET_GAME_STATE (URQUAN_SENSES_EVIL, 1);
|
SET_GAME_STATE (URQUAN_SENSES_EVIL, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
b0 = GET_GAME_STATE (COLONY_GRPOFFS0);
|
GrpOffs = GET_GAME_STATE_32 (COLONY_GRPOFFS0);
|
||||||
b1 = GET_GAME_STATE (COLONY_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (COLONY_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (COLONY_GRPOFFS3);
|
|
||||||
if (LOBYTE (GLOBAL (CurrentActivity)) == IN_INTERPLANETARY
|
if (LOBYTE (GLOBAL (CurrentActivity)) == IN_INTERPLANETARY
|
||||||
&& GLOBAL (BattleGroupRef)
|
&& GLOBAL (BattleGroupRef)
|
||||||
&& GLOBAL (BattleGroupRef) == MAKE_DWORD (
|
&& GLOBAL (BattleGroupRef) == GrpOffs)
|
||||||
MAKE_WORD (b0, b1), MAKE_WORD (b2, b3)
|
|
||||||
))
|
|
||||||
{
|
{
|
||||||
NPCPhrase (CAUGHT_YA);
|
NPCPhrase (CAUGHT_YA);
|
||||||
|
|
||||||
@@ -457,15 +447,10 @@ Intro (void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
b0 = GET_GAME_STATE (SAMATRA_GRPOFFS0);
|
GrpOffs = GET_GAME_STATE_32 (SAMATRA_GRPOFFS0);
|
||||||
b1 = GET_GAME_STATE (SAMATRA_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (SAMATRA_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (SAMATRA_GRPOFFS3);
|
|
||||||
if (LOBYTE (GLOBAL (CurrentActivity)) == IN_INTERPLANETARY
|
if (LOBYTE (GLOBAL (CurrentActivity)) == IN_INTERPLANETARY
|
||||||
&& GLOBAL (BattleGroupRef)
|
&& GLOBAL (BattleGroupRef)
|
||||||
&& GLOBAL (BattleGroupRef) == MAKE_DWORD (
|
&& GLOBAL (BattleGroupRef) == GrpOffs)
|
||||||
MAKE_WORD (b0, b1), MAKE_WORD (b2, b3)
|
|
||||||
))
|
|
||||||
{
|
{
|
||||||
NPCPhrase (HELLO_SAMATRA);
|
NPCPhrase (HELLO_SAMATRA);
|
||||||
|
|
||||||
@@ -536,7 +521,7 @@ init_urquan_comm (void)
|
|||||||
{
|
{
|
||||||
LOCDATAPTR retval;
|
LOCDATAPTR retval;
|
||||||
|
|
||||||
BYTE b0, b1, b2, b3;
|
DWORD GrpOffs;
|
||||||
|
|
||||||
urquan_desc.init_encounter_func = Intro;
|
urquan_desc.init_encounter_func = Intro;
|
||||||
urquan_desc.post_encounter_func = post_urquan_enc;
|
urquan_desc.post_encounter_func = post_urquan_enc;
|
||||||
@@ -548,17 +533,12 @@ init_urquan_comm (void)
|
|||||||
urquan_desc.AlienTextTemplate.align = ALIGN_CENTER;
|
urquan_desc.AlienTextTemplate.align = ALIGN_CENTER;
|
||||||
urquan_desc.AlienTextWidth = SIS_TEXT_WIDTH - 16;
|
urquan_desc.AlienTextWidth = SIS_TEXT_WIDTH - 16;
|
||||||
|
|
||||||
b0 = GET_GAME_STATE (URQUAN_PROBE_GRPOFFS0);
|
GrpOffs = GET_GAME_STATE_32 (URQUAN_PROBE_GRPOFFS0);
|
||||||
b1 = GET_GAME_STATE (URQUAN_PROBE_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (URQUAN_PROBE_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (URQUAN_PROBE_GRPOFFS3);
|
|
||||||
if (GET_GAME_STATE (PLAYER_HYPNOTIZED)
|
if (GET_GAME_STATE (PLAYER_HYPNOTIZED)
|
||||||
|| LOBYTE (GLOBAL (CurrentActivity)) == WON_LAST_BATTLE
|
|| LOBYTE (GLOBAL (CurrentActivity)) == WON_LAST_BATTLE
|
||||||
|| (LOBYTE (GLOBAL (CurrentActivity)) == IN_INTERPLANETARY
|
|| (LOBYTE (GLOBAL (CurrentActivity)) == IN_INTERPLANETARY
|
||||||
&& GLOBAL (BattleGroupRef)
|
&& GLOBAL (BattleGroupRef)
|
||||||
&& GLOBAL (BattleGroupRef) == MAKE_DWORD (
|
&& GLOBAL (BattleGroupRef) == GrpOffs))
|
||||||
MAKE_WORD (b0, b1), MAKE_WORD (b2, b3)
|
|
||||||
)))
|
|
||||||
{
|
{
|
||||||
SET_GAME_STATE (BATTLE_SEGUE, 0);
|
SET_GAME_STATE (BATTLE_SEGUE, 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,10 +73,47 @@ setGameState (int startBit, int endBit, BYTE val
|
|||||||
| (BYTE)((val) >> (endBit - startBit - (endBit & 7)));
|
| (BYTE)((val) >> (endBit - startBit - (endBit & 7)));
|
||||||
}
|
}
|
||||||
#ifdef STATE_DEBUG
|
#ifdef STATE_DEBUG
|
||||||
log_add (log_Debug, "State '%s' set to %d.", name, val);
|
log_add (log_Debug, "State '%s' set to %d.", name, (int)val);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DWORD
|
||||||
|
getGameState32 (int startBit)
|
||||||
|
{
|
||||||
|
DWORD v;
|
||||||
|
int shift;
|
||||||
|
|
||||||
|
for (v = 0, shift = 0; shift < 32; shift += 8, startBit += 8)
|
||||||
|
{
|
||||||
|
v |= getGameState (startBit, startBit + 7) << shift;
|
||||||
|
}
|
||||||
|
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
setGameState32 (int startBit, DWORD val
|
||||||
|
#ifdef STATE_DEBUG
|
||||||
|
, const char *name
|
||||||
|
#endif
|
||||||
|
)
|
||||||
|
{
|
||||||
|
DWORD v = val;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < 4; ++i, v >>= 8, startBit += 8)
|
||||||
|
{
|
||||||
|
setGameState (startBit, startBit + 7, v & 0xff
|
||||||
|
#ifdef STATE_DEBUG
|
||||||
|
, "(ignored)"
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef STATE_DEBUG
|
||||||
|
log_add (log_Debug, "State '%s' set to %u.", name, (unsigned)val);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
CreateRadar (void)
|
CreateRadar (void)
|
||||||
|
|||||||
@@ -964,6 +964,22 @@ extern void setGameState (int startBit, int endBit, BYTE val
|
|||||||
setGameState ((SName), (END_##SName), (val))
|
setGameState ((SName), (END_##SName), (val))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern DWORD getGameState32 (int startBit);
|
||||||
|
extern void setGameState32 (int startBit, DWORD val
|
||||||
|
#ifdef STATE_DEBUG
|
||||||
|
, const char *name
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
|
#define GET_GAME_STATE_32(SName) getGameState32 ((SName))
|
||||||
|
#ifdef STATE_DEBUG
|
||||||
|
# define SET_GAME_STATE_32(SName, val) \
|
||||||
|
setGameState32 ((SName), (val), #SName)
|
||||||
|
#else
|
||||||
|
# define SET_GAME_STATE_32(SName, val) \
|
||||||
|
setGameState32 ((SName), (val))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
extern CONTEXT RadarContext;
|
extern CONTEXT RadarContext;
|
||||||
|
|
||||||
|
|||||||
@@ -29,30 +29,16 @@ GenerateColony (BYTE control)
|
|||||||
{
|
{
|
||||||
case INIT_NPCS:
|
case INIT_NPCS:
|
||||||
{
|
{
|
||||||
BYTE b0, b1, b2, b3;
|
|
||||||
HSTARSHIP hStarShip;
|
HSTARSHIP hStarShip;
|
||||||
|
|
||||||
b0 = GET_GAME_STATE (COLONY_GRPOFFS0);
|
GLOBAL (BattleGroupRef) = GET_GAME_STATE_32 (COLONY_GRPOFFS0);
|
||||||
b1 = GET_GAME_STATE (COLONY_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (COLONY_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (COLONY_GRPOFFS3);
|
|
||||||
GLOBAL (BattleGroupRef) = MAKE_DWORD (
|
|
||||||
MAKE_WORD (b0, b1), MAKE_WORD (b2, b3)
|
|
||||||
);
|
|
||||||
if (GLOBAL (BattleGroupRef) == 0)
|
if (GLOBAL (BattleGroupRef) == 0)
|
||||||
{
|
{
|
||||||
CloneShipFragment (URQUAN_SHIP,
|
CloneShipFragment (URQUAN_SHIP,
|
||||||
&GLOBAL (npc_built_ship_q), 0);
|
&GLOBAL (npc_built_ship_q), 0);
|
||||||
|
|
||||||
GLOBAL (BattleGroupRef) = PutGroupInfo (GROUPS_ADD_NEW, 1);
|
GLOBAL (BattleGroupRef) = PutGroupInfo (GROUPS_ADD_NEW, 1);
|
||||||
b0 = LOBYTE (LOWORD (GLOBAL (BattleGroupRef)));
|
SET_GAME_STATE_32 (COLONY_GRPOFFS0, GLOBAL (BattleGroupRef));
|
||||||
b1 = HIBYTE (LOWORD (GLOBAL (BattleGroupRef)));
|
|
||||||
b2 = LOBYTE (HIWORD (GLOBAL (BattleGroupRef)));
|
|
||||||
b3 = HIBYTE (HIWORD (GLOBAL (BattleGroupRef)));
|
|
||||||
SET_GAME_STATE (COLONY_GRPOFFS0, b0);
|
|
||||||
SET_GAME_STATE (COLONY_GRPOFFS1, b1);
|
|
||||||
SET_GAME_STATE (COLONY_GRPOFFS2, b2);
|
|
||||||
SET_GAME_STATE (COLONY_GRPOFFS3, b3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GenerateRandomIP (INIT_NPCS);
|
GenerateRandomIP (INIT_NPCS);
|
||||||
|
|||||||
@@ -21,141 +21,73 @@
|
|||||||
#include "globdata.h"
|
#include "globdata.h"
|
||||||
#include "state.h"
|
#include "state.h"
|
||||||
#include "planets/genall.h"
|
#include "planets/genall.h"
|
||||||
|
#include "libs/log.h"
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
static DWORD
|
SelectMelnormeRefVar (void)
|
||||||
GetMelnormeRef (void)
|
|
||||||
{
|
{
|
||||||
BYTE b0, b1, b2, b3;
|
int RefVar;
|
||||||
|
|
||||||
switch (CurStarDescPtr->Index)
|
switch (CurStarDescPtr->Index)
|
||||||
{
|
{
|
||||||
case MELNORME0_DEFINED:
|
case MELNORME0_DEFINED:
|
||||||
b0 = GET_GAME_STATE (MELNORME0_GRPOFFS0);
|
RefVar = MELNORME0_GRPOFFS0;
|
||||||
b1 = GET_GAME_STATE (MELNORME0_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (MELNORME0_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (MELNORME0_GRPOFFS3);
|
|
||||||
break;
|
break;
|
||||||
case MELNORME1_DEFINED:
|
case MELNORME1_DEFINED:
|
||||||
b0 = GET_GAME_STATE (MELNORME1_GRPOFFS0);
|
RefVar = MELNORME1_GRPOFFS0;
|
||||||
b1 = GET_GAME_STATE (MELNORME1_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (MELNORME1_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (MELNORME1_GRPOFFS3);
|
|
||||||
break;
|
break;
|
||||||
case MELNORME2_DEFINED:
|
case MELNORME2_DEFINED:
|
||||||
b0 = GET_GAME_STATE (MELNORME2_GRPOFFS0);
|
RefVar = MELNORME2_GRPOFFS0;
|
||||||
b1 = GET_GAME_STATE (MELNORME2_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (MELNORME2_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (MELNORME2_GRPOFFS3);
|
|
||||||
break;
|
break;
|
||||||
case MELNORME3_DEFINED:
|
case MELNORME3_DEFINED:
|
||||||
b0 = GET_GAME_STATE (MELNORME3_GRPOFFS0);
|
RefVar = MELNORME3_GRPOFFS0;
|
||||||
b1 = GET_GAME_STATE (MELNORME3_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (MELNORME3_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (MELNORME3_GRPOFFS3);
|
|
||||||
break;
|
break;
|
||||||
case MELNORME4_DEFINED:
|
case MELNORME4_DEFINED:
|
||||||
b0 = GET_GAME_STATE (MELNORME4_GRPOFFS0);
|
RefVar = MELNORME4_GRPOFFS0;
|
||||||
b1 = GET_GAME_STATE (MELNORME4_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (MELNORME4_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (MELNORME4_GRPOFFS3);
|
|
||||||
break;
|
break;
|
||||||
case MELNORME5_DEFINED:
|
case MELNORME5_DEFINED:
|
||||||
b0 = GET_GAME_STATE (MELNORME5_GRPOFFS0);
|
RefVar = MELNORME5_GRPOFFS0;
|
||||||
b1 = GET_GAME_STATE (MELNORME5_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (MELNORME5_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (MELNORME5_GRPOFFS3);
|
|
||||||
break;
|
break;
|
||||||
case MELNORME6_DEFINED:
|
case MELNORME6_DEFINED:
|
||||||
b0 = GET_GAME_STATE (MELNORME6_GRPOFFS0);
|
RefVar = MELNORME6_GRPOFFS0;
|
||||||
b1 = GET_GAME_STATE (MELNORME6_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (MELNORME6_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (MELNORME6_GRPOFFS3);
|
|
||||||
break;
|
break;
|
||||||
case MELNORME7_DEFINED:
|
case MELNORME7_DEFINED:
|
||||||
b0 = GET_GAME_STATE (MELNORME7_GRPOFFS0);
|
RefVar = MELNORME7_GRPOFFS0;
|
||||||
b1 = GET_GAME_STATE (MELNORME7_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (MELNORME7_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (MELNORME7_GRPOFFS3);
|
|
||||||
break;
|
break;
|
||||||
case MELNORME8_DEFINED:
|
case MELNORME8_DEFINED:
|
||||||
b0 = GET_GAME_STATE (MELNORME8_GRPOFFS0);
|
RefVar = MELNORME8_GRPOFFS0;
|
||||||
b1 = GET_GAME_STATE (MELNORME8_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (MELNORME8_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (MELNORME8_GRPOFFS3);
|
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
RefVar = -1;
|
||||||
|
}
|
||||||
|
return RefVar;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (MAKE_DWORD (MAKE_WORD (b0, b1), MAKE_WORD (b2, b3)));
|
static DWORD
|
||||||
|
GetMelnormeRef (void)
|
||||||
|
{
|
||||||
|
int RefVar = SelectMelnormeRefVar ();
|
||||||
|
if (RefVar < 0)
|
||||||
|
{
|
||||||
|
log_add (log_Warning, "GetMelnormeRef(): reference unknown");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GET_GAME_STATE_32 (RefVar);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
SetMelnormeRef (DWORD Ref)
|
SetMelnormeRef (DWORD Ref)
|
||||||
{
|
{
|
||||||
BYTE b0, b1, b2, b3;
|
int RefVar = SelectMelnormeRefVar ();
|
||||||
|
if (RefVar < 0)
|
||||||
b0 = LOBYTE (LOWORD (Ref));
|
|
||||||
b1 = HIBYTE (LOWORD (Ref));
|
|
||||||
b2 = LOBYTE (HIWORD (Ref));
|
|
||||||
b3 = HIBYTE (HIWORD (Ref));
|
|
||||||
switch (CurStarDescPtr->Index)
|
|
||||||
{
|
{
|
||||||
case MELNORME0_DEFINED:
|
log_add (log_Warning, "SetMelnormeRef(): reference unknown");
|
||||||
SET_GAME_STATE (MELNORME0_GRPOFFS0, b0);
|
return;
|
||||||
SET_GAME_STATE (MELNORME0_GRPOFFS1, b1);
|
|
||||||
SET_GAME_STATE (MELNORME0_GRPOFFS2, b2);
|
|
||||||
SET_GAME_STATE (MELNORME0_GRPOFFS3, b3);
|
|
||||||
break;
|
|
||||||
case MELNORME1_DEFINED:
|
|
||||||
SET_GAME_STATE (MELNORME1_GRPOFFS0, b0);
|
|
||||||
SET_GAME_STATE (MELNORME1_GRPOFFS1, b1);
|
|
||||||
SET_GAME_STATE (MELNORME1_GRPOFFS2, b2);
|
|
||||||
SET_GAME_STATE (MELNORME1_GRPOFFS3, b3);
|
|
||||||
break;
|
|
||||||
case MELNORME2_DEFINED:
|
|
||||||
SET_GAME_STATE (MELNORME2_GRPOFFS0, b0);
|
|
||||||
SET_GAME_STATE (MELNORME2_GRPOFFS1, b1);
|
|
||||||
SET_GAME_STATE (MELNORME2_GRPOFFS2, b2);
|
|
||||||
SET_GAME_STATE (MELNORME2_GRPOFFS3, b3);
|
|
||||||
break;
|
|
||||||
case MELNORME3_DEFINED:
|
|
||||||
SET_GAME_STATE (MELNORME3_GRPOFFS0, b0);
|
|
||||||
SET_GAME_STATE (MELNORME3_GRPOFFS1, b1);
|
|
||||||
SET_GAME_STATE (MELNORME3_GRPOFFS2, b2);
|
|
||||||
SET_GAME_STATE (MELNORME3_GRPOFFS3, b3);
|
|
||||||
break;
|
|
||||||
case MELNORME4_DEFINED:
|
|
||||||
SET_GAME_STATE (MELNORME4_GRPOFFS0, b0);
|
|
||||||
SET_GAME_STATE (MELNORME4_GRPOFFS1, b1);
|
|
||||||
SET_GAME_STATE (MELNORME4_GRPOFFS2, b2);
|
|
||||||
SET_GAME_STATE (MELNORME4_GRPOFFS3, b3);
|
|
||||||
break;
|
|
||||||
case MELNORME5_DEFINED:
|
|
||||||
SET_GAME_STATE (MELNORME5_GRPOFFS0, b0);
|
|
||||||
SET_GAME_STATE (MELNORME5_GRPOFFS1, b1);
|
|
||||||
SET_GAME_STATE (MELNORME5_GRPOFFS2, b2);
|
|
||||||
SET_GAME_STATE (MELNORME5_GRPOFFS3, b3);
|
|
||||||
break;
|
|
||||||
case MELNORME6_DEFINED:
|
|
||||||
SET_GAME_STATE (MELNORME6_GRPOFFS0, b0);
|
|
||||||
SET_GAME_STATE (MELNORME6_GRPOFFS1, b1);
|
|
||||||
SET_GAME_STATE (MELNORME6_GRPOFFS2, b2);
|
|
||||||
SET_GAME_STATE (MELNORME6_GRPOFFS3, b3);
|
|
||||||
break;
|
|
||||||
case MELNORME7_DEFINED:
|
|
||||||
SET_GAME_STATE (MELNORME7_GRPOFFS0, b0);
|
|
||||||
SET_GAME_STATE (MELNORME7_GRPOFFS1, b1);
|
|
||||||
SET_GAME_STATE (MELNORME7_GRPOFFS2, b2);
|
|
||||||
SET_GAME_STATE (MELNORME7_GRPOFFS3, b3);
|
|
||||||
break;
|
|
||||||
case MELNORME8_DEFINED:
|
|
||||||
SET_GAME_STATE (MELNORME8_GRPOFFS0, b0);
|
|
||||||
SET_GAME_STATE (MELNORME8_GRPOFFS1, b1);
|
|
||||||
SET_GAME_STATE (MELNORME8_GRPOFFS2, b2);
|
|
||||||
SET_GAME_STATE (MELNORME8_GRPOFFS3, b3);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SET_GAME_STATE_32 (RefVar, Ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -30,17 +30,11 @@ static void
|
|||||||
BuildUrquanGuard (void)
|
BuildUrquanGuard (void)
|
||||||
{
|
{
|
||||||
BYTE ship1, ship2;
|
BYTE ship1, ship2;
|
||||||
BYTE b0, b1, b2, b3;
|
BYTE b0, b1;
|
||||||
POINT org;
|
POINT org;
|
||||||
HSTARSHIP hStarShip, hNextShip;
|
HSTARSHIP hStarShip, hNextShip;
|
||||||
|
|
||||||
b0 = GET_GAME_STATE (SAMATRA_GRPOFFS0);
|
GLOBAL (BattleGroupRef) = GET_GAME_STATE_32 (SAMATRA_GRPOFFS0);
|
||||||
b1 = GET_GAME_STATE (SAMATRA_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (SAMATRA_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (SAMATRA_GRPOFFS3);
|
|
||||||
GLOBAL (BattleGroupRef) = MAKE_DWORD (
|
|
||||||
MAKE_WORD (b0, b1), MAKE_WORD (b2, b3)
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!GET_GAME_STATE (KOHR_AH_FRENZY))
|
if (!GET_GAME_STATE (KOHR_AH_FRENZY))
|
||||||
ship1 = URQUAN_SHIP, ship2 = BLACK_URQUAN_SHIP;
|
ship1 = URQUAN_SHIP, ship2 = BLACK_URQUAN_SHIP;
|
||||||
@@ -54,14 +48,7 @@ BuildUrquanGuard (void)
|
|||||||
if (GLOBAL (BattleGroupRef) == 0)
|
if (GLOBAL (BattleGroupRef) == 0)
|
||||||
{
|
{
|
||||||
GLOBAL (BattleGroupRef) = PutGroupInfo (GROUPS_ADD_NEW, 1);
|
GLOBAL (BattleGroupRef) = PutGroupInfo (GROUPS_ADD_NEW, 1);
|
||||||
b0 = LOBYTE (LOWORD (GLOBAL (BattleGroupRef)));
|
SET_GAME_STATE_32 (SAMATRA_GRPOFFS0, GLOBAL (BattleGroupRef));
|
||||||
b1 = HIBYTE (LOWORD (GLOBAL (BattleGroupRef)));
|
|
||||||
b2 = LOBYTE (HIWORD (GLOBAL (BattleGroupRef)));
|
|
||||||
b3 = HIBYTE (HIWORD (GLOBAL (BattleGroupRef)));
|
|
||||||
SET_GAME_STATE (SAMATRA_GRPOFFS0, b0);
|
|
||||||
SET_GAME_STATE (SAMATRA_GRPOFFS1, b1);
|
|
||||||
SET_GAME_STATE (SAMATRA_GRPOFFS2, b2);
|
|
||||||
SET_GAME_STATE (SAMATRA_GRPOFFS3, b3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define NUM_URQUAN_GUARDS0 12
|
#define NUM_URQUAN_GUARDS0 12
|
||||||
|
|||||||
@@ -57,15 +57,7 @@ GenerateShofixti (BYTE control)
|
|||||||
|| (!GET_GAME_STATE (SHOFIXTI_BRO_KIA)
|
|| (!GET_GAME_STATE (SHOFIXTI_BRO_KIA)
|
||||||
&& GET_GAME_STATE (MAIDENS_ON_SHIP))))
|
&& GET_GAME_STATE (MAIDENS_ON_SHIP))))
|
||||||
{
|
{
|
||||||
BYTE b0, b1, b2, b3;
|
GLOBAL (BattleGroupRef) = GET_GAME_STATE_32 (SHOFIXTI_GRPOFFS0);
|
||||||
|
|
||||||
b0 = GET_GAME_STATE (SHOFIXTI_GRPOFFS0);
|
|
||||||
b1 = GET_GAME_STATE (SHOFIXTI_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (SHOFIXTI_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (SHOFIXTI_GRPOFFS3);
|
|
||||||
GLOBAL (BattleGroupRef) = MAKE_DWORD (
|
|
||||||
MAKE_WORD (b0, b1), MAKE_WORD (b2, b3)
|
|
||||||
);
|
|
||||||
if (GLOBAL (BattleGroupRef) == 0
|
if (GLOBAL (BattleGroupRef) == 0
|
||||||
|| !GetGroupInfo (GLOBAL (BattleGroupRef), GROUP_INIT_IP))
|
|| !GetGroupInfo (GLOBAL (BattleGroupRef), GROUP_INIT_IP))
|
||||||
{
|
{
|
||||||
@@ -77,14 +69,8 @@ GenerateShofixti (BYTE control)
|
|||||||
|
|
||||||
GLOBAL (BattleGroupRef) = PutGroupInfo (
|
GLOBAL (BattleGroupRef) = PutGroupInfo (
|
||||||
GLOBAL (BattleGroupRef), 1);
|
GLOBAL (BattleGroupRef), 1);
|
||||||
b0 = LOBYTE (LOWORD (GLOBAL (BattleGroupRef)));
|
SET_GAME_STATE_32 (SHOFIXTI_GRPOFFS0,
|
||||||
b1 = HIBYTE (LOWORD (GLOBAL (BattleGroupRef)));
|
GLOBAL (BattleGroupRef));
|
||||||
b2 = LOBYTE (HIWORD (GLOBAL (BattleGroupRef)));
|
|
||||||
b3 = HIBYTE (HIWORD (GLOBAL (BattleGroupRef)));
|
|
||||||
SET_GAME_STATE (SHOFIXTI_GRPOFFS0, b0);
|
|
||||||
SET_GAME_STATE (SHOFIXTI_GRPOFFS1, b1);
|
|
||||||
SET_GAME_STATE (SHOFIXTI_GRPOFFS2, b2);
|
|
||||||
SET_GAME_STATE (SHOFIXTI_GRPOFFS3, b3);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case REINIT_NPCS:
|
case REINIT_NPCS:
|
||||||
|
|||||||
@@ -30,35 +30,6 @@
|
|||||||
#include "libs/mathlib.h"
|
#include "libs/mathlib.h"
|
||||||
|
|
||||||
|
|
||||||
static DWORD
|
|
||||||
GetProbeRef (void)
|
|
||||||
{
|
|
||||||
BYTE b0, b1, b2, b3;
|
|
||||||
|
|
||||||
b0 = GET_GAME_STATE (URQUAN_PROBE_GRPOFFS0);
|
|
||||||
b1 = GET_GAME_STATE (URQUAN_PROBE_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (URQUAN_PROBE_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (URQUAN_PROBE_GRPOFFS3);
|
|
||||||
|
|
||||||
return (MAKE_DWORD (MAKE_WORD (b0, b1), MAKE_WORD (b2, b3)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
SetProbeRef (DWORD Ref)
|
|
||||||
{
|
|
||||||
BYTE b0, b1, b2, b3;
|
|
||||||
|
|
||||||
b0 = LOBYTE (LOWORD (Ref));
|
|
||||||
b1 = HIBYTE (LOWORD (Ref));
|
|
||||||
b2 = LOBYTE (HIWORD (Ref));
|
|
||||||
b3 = HIBYTE (HIWORD (Ref));
|
|
||||||
|
|
||||||
SET_GAME_STATE (URQUAN_PROBE_GRPOFFS0, b0);
|
|
||||||
SET_GAME_STATE (URQUAN_PROBE_GRPOFFS1, b1);
|
|
||||||
SET_GAME_STATE (URQUAN_PROBE_GRPOFFS2, b2);
|
|
||||||
SET_GAME_STATE (URQUAN_PROBE_GRPOFFS3, b3);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
init_probe (void)
|
init_probe (void)
|
||||||
{
|
{
|
||||||
@@ -433,14 +404,16 @@ GenerateSOL (BYTE control)
|
|||||||
switch (control)
|
switch (control)
|
||||||
{
|
{
|
||||||
case INIT_NPCS:
|
case INIT_NPCS:
|
||||||
GLOBAL (BattleGroupRef) = GetProbeRef ();
|
GLOBAL (BattleGroupRef) =
|
||||||
|
GET_GAME_STATE_32 (URQUAN_PROBE_GRPOFFS0);
|
||||||
if (GLOBAL (BattleGroupRef) == 0)
|
if (GLOBAL (BattleGroupRef) == 0)
|
||||||
{
|
{
|
||||||
CloneShipFragment (URQUAN_PROBE_SHIP,
|
CloneShipFragment (URQUAN_PROBE_SHIP,
|
||||||
&GLOBAL (npc_built_ship_q), 0);
|
&GLOBAL (npc_built_ship_q), 0);
|
||||||
|
|
||||||
GLOBAL (BattleGroupRef) = PutGroupInfo (GROUPS_ADD_NEW, 1);
|
GLOBAL (BattleGroupRef) = PutGroupInfo (GROUPS_ADD_NEW, 1);
|
||||||
SetProbeRef (GLOBAL (BattleGroupRef));
|
SET_GAME_STATE_32 (URQUAN_PROBE_GRPOFFS0,
|
||||||
|
GLOBAL (BattleGroupRef));
|
||||||
}
|
}
|
||||||
if (!init_probe ())
|
if (!init_probe ())
|
||||||
GenerateRandomIP (INIT_NPCS);
|
GenerateRandomIP (INIT_NPCS);
|
||||||
|
|||||||
@@ -63,29 +63,15 @@ GenerateScout (BYTE control)
|
|||||||
case INIT_NPCS:
|
case INIT_NPCS:
|
||||||
if (!GET_GAME_STATE (MET_ZOQFOT))
|
if (!GET_GAME_STATE (MET_ZOQFOT))
|
||||||
{
|
{
|
||||||
BYTE b0, b1, b2, b3;
|
GLOBAL (BattleGroupRef) = GET_GAME_STATE_32 (ZOQFOT_GRPOFFS0);
|
||||||
|
|
||||||
b0 = GET_GAME_STATE (ZOQFOT_GRPOFFS0);
|
|
||||||
b1 = GET_GAME_STATE (ZOQFOT_GRPOFFS1);
|
|
||||||
b2 = GET_GAME_STATE (ZOQFOT_GRPOFFS2);
|
|
||||||
b3 = GET_GAME_STATE (ZOQFOT_GRPOFFS3);
|
|
||||||
GLOBAL (BattleGroupRef) = MAKE_DWORD (
|
|
||||||
MAKE_WORD (b0, b1), MAKE_WORD (b2, b3)
|
|
||||||
);
|
|
||||||
if (GLOBAL (BattleGroupRef) == 0)
|
if (GLOBAL (BattleGroupRef) == 0)
|
||||||
{
|
{
|
||||||
CloneShipFragment (ZOQFOTPIK_SHIP,
|
CloneShipFragment (ZOQFOTPIK_SHIP,
|
||||||
&GLOBAL (npc_built_ship_q), 0);
|
&GLOBAL (npc_built_ship_q), 0);
|
||||||
|
|
||||||
GLOBAL (BattleGroupRef) = PutGroupInfo (GROUPS_ADD_NEW, 1);
|
GLOBAL (BattleGroupRef) = PutGroupInfo (GROUPS_ADD_NEW, 1);
|
||||||
b0 = LOBYTE (LOWORD (GLOBAL (BattleGroupRef)));
|
SET_GAME_STATE_32 (ZOQFOT_GRPOFFS0,
|
||||||
b1 = HIBYTE (LOWORD (GLOBAL (BattleGroupRef)));
|
GLOBAL (BattleGroupRef));
|
||||||
b2 = LOBYTE (HIWORD (GLOBAL (BattleGroupRef)));
|
|
||||||
b3 = HIBYTE (HIWORD (GLOBAL (BattleGroupRef)));
|
|
||||||
SET_GAME_STATE (ZOQFOT_GRPOFFS0, b0);
|
|
||||||
SET_GAME_STATE (ZOQFOT_GRPOFFS1, b1);
|
|
||||||
SET_GAME_STATE (ZOQFOT_GRPOFFS2, b2);
|
|
||||||
SET_GAME_STATE (ZOQFOT_GRPOFFS3, b3);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GenerateRandomIP (INIT_NPCS);
|
GenerateRandomIP (INIT_NPCS);
|
||||||
|
|||||||
Reference in New Issue
Block a user