From 6a822abc495aedc3f32e477fefb35b3921824048 Mon Sep 17 00:00:00 2001 From: avolkov Date: Wed, 4 Nov 2009 21:42:39 +0000 Subject: [PATCH] Battle & ship code cleanup: GOOD_GUY/BAD_GUY flags replaced with playerNr; these flags are not set in SHIP_INFO anymore; STARSHIP.which_side removed (fully replaced by playerNr) git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@3273 8092fc87-c524-0410-9efc-e669fe64eaf9 --- sc2/src/uqm/comm.c | 4 +-- sc2/src/uqm/cyborg.c | 9 ++--- sc2/src/uqm/element.h | 14 ++++++-- sc2/src/uqm/encount.c | 8 ++--- sc2/src/uqm/hyper.c | 2 ++ sc2/src/uqm/init.c | 3 +- sc2/src/uqm/intel.c | 2 +- sc2/src/uqm/melee.c | 1 - sc2/src/uqm/misc.c | 7 ++-- sc2/src/uqm/netplay/checksum.h | 4 +-- sc2/src/uqm/pickship.c | 1 - sc2/src/uqm/process.c | 2 +- sc2/src/uqm/races.h | 16 ++++----- sc2/src/uqm/ship.c | 11 +++--- sc2/src/uqm/ships/androsyn/androsyn.c | 4 +-- sc2/src/uqm/ships/arilou/arilou.c | 4 +-- sc2/src/uqm/ships/blackurq/blackurq.c | 12 +++---- sc2/src/uqm/ships/chenjesu/chenjesu.c | 21 +++++------ sc2/src/uqm/ships/chmmr/chmmr.c | 51 +++++++++++++-------------- sc2/src/uqm/ships/druuge/druuge.c | 4 +-- sc2/src/uqm/ships/human/human.c | 16 ++++----- sc2/src/uqm/ships/ilwrath/ilwrath.c | 4 +-- sc2/src/uqm/ships/lastbat/lastbat.c | 25 +++++++------ sc2/src/uqm/ships/melnorme/melnorme.c | 24 ++++++------- sc2/src/uqm/ships/mmrnmhrm/mmrnmhrm.c | 10 +++--- sc2/src/uqm/ships/mycon/mycon.c | 3 +- sc2/src/uqm/ships/orz/orz.c | 48 +++++++++++-------------- sc2/src/uqm/ships/pkunk/pkunk.c | 14 ++++---- sc2/src/uqm/ships/shofixti/shofixti.c | 9 ++--- sc2/src/uqm/ships/sis_ship/sis_ship.c | 17 +++++---- sc2/src/uqm/ships/slylandr/slylandr.c | 9 +++-- sc2/src/uqm/ships/spathi/spathi.c | 7 ++-- sc2/src/uqm/ships/supox/supox.c | 4 +-- sc2/src/uqm/ships/syreen/syreen.c | 11 +++--- sc2/src/uqm/ships/thradd/thradd.c | 8 ++--- sc2/src/uqm/ships/umgah/umgah.c | 4 +-- sc2/src/uqm/ships/urquan/urquan.c | 14 ++++---- sc2/src/uqm/ships/utwig/utwig.c | 4 +-- sc2/src/uqm/ships/vux/vux.c | 8 ++--- sc2/src/uqm/ships/yehat/yehat.c | 9 +++-- sc2/src/uqm/ships/zoqfot/zoqfot.c | 8 ++--- sc2/src/uqm/shipstat.c | 5 ++- sc2/src/uqm/status.c | 14 +++++--- sc2/src/uqm/tactrans.c | 4 +++ sc2/src/uqm/uqmdebug.c | 10 +++--- sc2/src/uqm/uqmdebug.h | 4 +-- sc2/src/uqm/weapon.c | 23 ++++++------ sc2/src/uqm/weapon.h | 6 ++-- 48 files changed, 250 insertions(+), 252 deletions(-) diff --git a/sc2/src/uqm/comm.c b/sc2/src/uqm/comm.c index a18cc0bd7..e82c8700b 100644 --- a/sc2/src/uqm/comm.c +++ b/sc2/src/uqm/comm.c @@ -1436,7 +1436,7 @@ InitCommunication (CONVERSATION which_comm) || (which_comm != CHMMR_CONVERSATION && which_comm != SYREEN_CONVERSATION ))//&& (ActivateStarShip (status, CHECK_ALLIANCE) & BAD_GUY))) - BuildBattle (1); + BuildBattle (NPC_PLAYER_NUM); } LocDataPtr = init_race ( @@ -1495,7 +1495,7 @@ InitCommunication (CONVERSATION which_comm) if (status) { // Start combat - BuildBattle (0); + BuildBattle (RPG_PLAYER_NUM); EncounterBattle (); } else diff --git a/sc2/src/uqm/cyborg.c b/sc2/src/uqm/cyborg.c index d86f14ae5..e9fc150ed 100644 --- a/sc2/src/uqm/cyborg.c +++ b/sc2/src/uqm/cyborg.c @@ -603,8 +603,7 @@ Pursue (ELEMENT *ShipPtr, EVALUATE_DESC *EvalDescPtr) maneuver_state |= LEFT | RIGHT; if (ShipPtr->thrust_wait == 0 && ((OtherObjPtr->state_flags & PLAYER_SHIP) - || ((OtherObjPtr->state_flags & (GOOD_GUY | BAD_GUY)) == - (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY))) + || elementsOfSamePlayer (OtherObjPtr, ShipPtr) || OtherObjPtr->preprocess_func == crew_preprocess)) maneuver_state |= THRUST; @@ -1213,8 +1212,7 @@ if (!(ShipPtr->state_flags & FINITE_LIFE) } } } - else if ((ed.ObjectPtr->state_flags & (GOOD_GUY | BAD_GUY)) != - (Ship.state_flags & (GOOD_GUY | BAD_GUY)) + else if (!elementsOfSamePlayer (ed.ObjectPtr, &Ship) && ed.ObjectPtr->preprocess_func != crew_preprocess && ObjectsOfConcern[ENEMY_WEAPON_INDEX].which_turn > 1 && ed.ObjectPtr->life_span > 0) @@ -1286,8 +1284,7 @@ if (!(ShipPtr->state_flags & FINITE_LIFE) } else if ((ed.ObjectPtr->state_flags & CREW_OBJECT) && ((!(ed.ObjectPtr->state_flags & IGNORE_SIMILAR) - && (ed.ObjectPtr->state_flags & (GOOD_GUY | BAD_GUY)) == - (Ship.state_flags & (GOOD_GUY | BAD_GUY))) + && elementsOfSamePlayer (ed.ObjectPtr, &Ship)) || ed.ObjectPtr->preprocess_func == crew_preprocess) && ObjectsOfConcern[CREW_OBJECT_INDEX].which_turn > 1) { diff --git a/sc2/src/uqm/element.h b/sc2/src/uqm/element.h index 35d59486b..dad1a97c0 100644 --- a/sc2/src/uqm/element.h +++ b/sc2/src/uqm/element.h @@ -108,8 +108,10 @@ struct element void (*death_func) (struct element *ElementPtr); // Player this element belongs to - // 0: Bottom player in Melee; The Player in full-game - COUNT playerNr; + // -1: neutral (planets, asteroids, crew, etc.) + // 0: Melee: bottom player; Full-game: the human player + // 1: Melee: top player; Full-game: the NPC opponent + SIZE playerNr; ELEMENT_FLAGS state_flags; union @@ -147,6 +149,14 @@ struct element HELEMENT hTarget; }; +#define NEUTRAL_PLAYER_NUM -1 + +static inline BOOLEAN +elementsOfSamePlayer (ELEMENT *ElementPtr0, ELEMENT *ElementPtr1) +{ + return ElementPtr0->playerNr == ElementPtr1->playerNr; +} + extern QUEUE disp_q; // The maximum number of elements is chosen to provide a slight margin. // Currently, it is maximum *known used* in Melee + 30 diff --git a/sc2/src/uqm/encount.c b/sc2/src/uqm/encount.c index 238ccf388..2f4fbc20f 100644 --- a/sc2/src/uqm/encount.c +++ b/sc2/src/uqm/encount.c @@ -104,7 +104,7 @@ BuildBattle (COUNT which_player) return; } - if (which_player == 0) + if (which_player == RPG_PLAYER_NUM) pQueue = &GLOBAL (built_ship_q); else { @@ -141,7 +141,6 @@ BuildBattle (COUNT which_player) { BuiltShipPtr = LockStarShip (&race_q[which_player], hBuiltShip); BuiltShipPtr->captains_name_index = FragPtr->captains_name_index; - BuiltShipPtr->which_side = 1 << which_player; BuiltShipPtr->playerNr = which_player; if (FragPtr->crew_level != INFINITE_FLEET) BuiltShipPtr->crew_level = FragPtr->crew_level; @@ -160,13 +159,12 @@ BuildBattle (COUNT which_player) UnlockShipFrag (pQueue, hStarShip); } - if (which_player == 0 + if (which_player == RPG_PLAYER_NUM && (hBuiltShip = Build (&race_q[0], SIS_SHIP_ID))) { BuiltShipPtr = LockStarShip (&race_q[0], hBuiltShip); BuiltShipPtr->captains_name_index = 0; - BuiltShipPtr->which_side = GOOD_GUY; - BuiltShipPtr->playerNr = 0; + BuiltShipPtr->playerNr = RPG_PLAYER_NUM; BuiltShipPtr->crew_level = 0; BuiltShipPtr->max_crew = 0; // Crew will be copied directly from diff --git a/sc2/src/uqm/hyper.c b/sc2/src/uqm/hyper.c index fa2407fd7..73c906742 100644 --- a/sc2/src/uqm/hyper.c +++ b/sc2/src/uqm/hyper.c @@ -751,6 +751,7 @@ AllocHyperElement (STAR_DESC *SDPtr) ELEMENT *HyperSpaceElementPtr; LockElement (hHyperSpaceElement, &HyperSpaceElementPtr); + HyperSpaceElementPtr->playerNr = NEUTRAL_PLAYER_NUM; HyperSpaceElementPtr->state_flags = CHANGING | FINITE_LIFE; HyperSpaceElementPtr->life_span = 1; HyperSpaceElementPtr->mass_points = 1; @@ -792,6 +793,7 @@ AddAmbientElement (void) ELEMENT *HyperSpaceElementPtr; LockElement (hHyperSpaceElement, &HyperSpaceElementPtr); + HyperSpaceElementPtr->playerNr = NEUTRAL_PLAYER_NUM; HyperSpaceElementPtr->state_flags = APPEARING | FINITE_LIFE | NONSOLID; SetPrimType (&DisplayArray[HyperSpaceElementPtr->PrimIndex], STAMP_PRIM); diff --git a/sc2/src/uqm/init.c b/sc2/src/uqm/init.c index 5b0618e0c..a0862f4ce 100644 --- a/sc2/src/uqm/init.c +++ b/sc2/src/uqm/init.c @@ -165,8 +165,7 @@ BuildSIS (void) if (!hStarShip) return 0; StarShipPtr = LockStarShip (&race_q[0], hStarShip); - StarShipPtr->which_side = GOOD_GUY; - StarShipPtr->playerNr = 0; + StarShipPtr->playerNr = RPG_PLAYER_NUM; StarShipPtr->captains_name_index = 0; UnlockStarShip (&race_q[0], hStarShip); diff --git a/sc2/src/uqm/intel.c b/sc2/src/uqm/intel.c index 9cb7aeee1..eb587367d 100644 --- a/sc2/src/uqm/intel.c +++ b/sc2/src/uqm/intel.c @@ -43,7 +43,7 @@ computer_intelligence (ComputerInputContext *context, STARSHIP *StarShipPtr) InputState = tactical_intelligence (context, StarShipPtr); // Allow a player to warp-escape in cyborg mode - if (context->playerNr == 0) + if (StarShipPtr->playerNr == RPG_PLAYER_NUM) InputState |= CurrentInputToBattleInput ( context->playerNr) & BATTLE_ESCAPE; } diff --git a/sc2/src/uqm/melee.c b/sc2/src/uqm/melee.c index 31c9754d5..4528194d7 100644 --- a/sc2/src/uqm/melee.c +++ b/sc2/src/uqm/melee.c @@ -1687,7 +1687,6 @@ BuildAndDrawShipList (MELEE_STATE *pMS) BuiltShipPtr = LockStarShip (&race_q[side], hBuiltShip); BuiltShipPtr->index = index; BuiltShipPtr->ship_cost = ship_cost; - BuiltShipPtr->which_side = 1 << side; BuiltShipPtr->playerNr = side; BuiltShipPtr->captains_name_index = captains_name_index; // The next ones are not used in Melee diff --git a/sc2/src/uqm/misc.c b/sc2/src/uqm/misc.c index 141055dc0..91ab903b1 100644 --- a/sc2/src/uqm/misc.c +++ b/sc2/src/uqm/misc.c @@ -39,6 +39,7 @@ spawn_planet (void) extern FRAME planet[]; LockElement (hPlanetElement, &PlanetElementPtr); + PlanetElementPtr->playerNr = NEUTRAL_PLAYER_NUM; PlanetElementPtr->hit_points = 200; PlanetElementPtr->state_flags = APPEARING; PlanetElementPtr->life_span = NORMAL_LIFE + 1; @@ -79,6 +80,7 @@ spawn_rubble (ELEMENT *AsteroidElementPtr) PutElement (hRubbleElement); LockElement (hRubbleElement, &RubbleElementPtr); + RubbleElementPtr->playerNr = AsteroidElementPtr->playerNr; RubbleElementPtr->state_flags = APPEARING | FINITE_LIFE | NONSOLID; RubbleElementPtr->life_span = 5; RubbleElementPtr->turn_wait = RubbleElementPtr->next_turn = 0; @@ -136,6 +138,7 @@ spawn_asteroid (ELEMENT *ElementPtr) COUNT val; LockElement (hAsteroidElement, &AsteroidElementPtr); + AsteroidElementPtr->playerNr = NEUTRAL_PLAYER_NUM; AsteroidElementPtr->hit_points = 1; AsteroidElementPtr->mass_points = 3; AsteroidElementPtr->state_flags = APPEARING; @@ -327,9 +330,9 @@ AbandonShip (ELEMENT *ShipPtr, ELEMENT *TargetPtr, PutElement (hCrew); LockElement (hCrew, &CrewPtr); + CrewPtr->playerNr = NEUTRAL_PLAYER_NUM; CrewPtr->hit_points = 1; - CrewPtr->state_flags = - APPEARING | FINITE_LIFE | CREW_OBJECT; + CrewPtr->state_flags = APPEARING | FINITE_LIFE | CREW_OBJECT; CrewPtr->life_span = CREW_LIFE; SetPrimType (&DisplayArray[CrewPtr->PrimIndex], POINT_PRIM); SetPrimColor (&DisplayArray[CrewPtr->PrimIndex], diff --git a/sc2/src/uqm/netplay/checksum.h b/sc2/src/uqm/netplay/checksum.h index 8df9525b5..a19444910 100644 --- a/sc2/src/uqm/netplay/checksum.h +++ b/sc2/src/uqm/netplay/checksum.h @@ -36,9 +36,7 @@ typedef uint32 Checksum; static inline void crc_processELEMENT_FLAGS(crc_State *state, ELEMENT_FLAGS val) { - crc_processUint16(state, (uint16) (val & ~(GOOD_GUY | BAD_GUY))); - // Excluding the element side, as this does not have to - // be the same for both players over a network. + crc_processUint16(state, (uint16) val); } static inline void diff --git a/sc2/src/uqm/pickship.c b/sc2/src/uqm/pickship.c index 83593e481..101d781d6 100644 --- a/sc2/src/uqm/pickship.c +++ b/sc2/src/uqm/pickship.c @@ -403,7 +403,6 @@ GetEncounterStarShip (STARSHIP *LastStarShipPtr, COUNT which_player) * fight, all Syreen ships there would be crewed to * the maximum, instead of the normal level */ SPtr->crew_level = FragPtr->max_crew; - SPtr->which_side = 1 << which_player; SPtr->playerNr = which_player; SPtr->captains_name_index = PickCaptainName (); diff --git a/sc2/src/uqm/process.c b/sc2/src/uqm/process.c index 8820bf5f4..a579a64b0 100644 --- a/sc2/src/uqm/process.c +++ b/sc2/src/uqm/process.c @@ -684,7 +684,7 @@ PreProcessQueue (SIZE *pscroll_x, SIZE *pscroll_y) dy = DISPLAY_ALIGN (ElementPtr->next.location.y) - Origin.y; dy = WRAP_DELTA_Y (dy); - if (sides_active <= 2 || !(ElementPtr->state_flags & BAD_GUY)) + if (sides_active <= 2 || ElementPtr->playerNr == 0) { Origin.x = DISPLAY_ALIGN (Origin.x + (dx >> 1)); Origin.y = DISPLAY_ALIGN (Origin.y + (dy >> 1)); diff --git a/sc2/src/uqm/races.h b/sc2/src/uqm/races.h index 2dbc52d77..650adfba6 100644 --- a/sc2/src/uqm/races.h +++ b/sc2/src/uqm/races.h @@ -36,10 +36,7 @@ typedef HLINK HSTARSHIP; #define MAX_SHIPS_PER_SIDE 14 /* SHIP_INFO.ship_flags - ship specific flags */ -/* -#define GOOD_GUY (1 << 0) -#define BAD_GUY (1 << 1) -*/ +/* bits 0 and 1 are now available */ #define SEEKING_WEAPON (1 << 2) #define SEEKING_SPECIAL (1 << 3) #define POINT_DEFENSE (1 << 4) @@ -245,8 +242,6 @@ struct STARSHIP RACE_DESC *RaceDescPtr; // Ship information - UWORD which_side; - // In race_q: side the ship is on COUNT crew_level; // In full-game battles: crew left // In SuperMelee: irrelevant @@ -274,12 +269,17 @@ struct STARSHIP HELEMENT hShip; COUNT ShipFacing; - COUNT playerNr; - // 0: bottom player; In full-game: the human player + SIZE playerNr; + // 0: bottom player; In full-game: the human player (RPG) + // 1: top player; In full-game: the NPC opponent + // -1: neutral; this should currently never happen (asserts) BYTE control; // HUMAN, COMPUTER or NETWORK control flags, see intel.h }; +#define RPG_PLAYER_NUM 0 +#define NPC_PLAYER_NUM 1 + static inline STARSHIP * LockStarShip (const QUEUE *pq, HSTARSHIP h) { diff --git a/sc2/src/uqm/ship.c b/sc2/src/uqm/ship.c index 573763655..af2a49ce3 100644 --- a/sc2/src/uqm/ship.c +++ b/sc2/src/uqm/ship.c @@ -168,9 +168,9 @@ ship_preprocess (ELEMENT *ElementPtr) { // Preprocessing for the first time ElementPtr->crew_level = RDPtr->ship_info.crew_level; - if ((ElementPtr->state_flags & BAD_GUY) + if (ElementPtr->playerNr == NPC_PLAYER_NUM && LOBYTE (GLOBAL (CurrentActivity)) == IN_LAST_BATTLE) - { + { // Sa-Matra STAMP s; CONTEXT OldContext; @@ -388,7 +388,6 @@ spawn_ship (STARSHIP *StarShipPtr) if (!RDPtr) return FALSE; - RDPtr->ship_info.ship_flags |= StarShipPtr->which_side; StarShipPtr->RaceDescPtr = RDPtr; StarShipPtr->ship_input_state = 0; @@ -430,10 +429,10 @@ spawn_ship (STARSHIP *StarShipPtr) LockElement (hShip, &ShipElementPtr); + ShipElementPtr->playerNr = StarShipPtr->playerNr; ShipElementPtr->crew_level = 0; ShipElementPtr->mass_points = RDPtr->characteristics.ship_mass; - ShipElementPtr->state_flags = APPEARING | PLAYER_SHIP | IGNORE_SIMILAR - | (RDPtr->ship_info.ship_flags & (GOOD_GUY | BAD_GUY)); + ShipElementPtr->state_flags = APPEARING | PLAYER_SHIP | IGNORE_SIMILAR; ShipElementPtr->turn_wait = 0; ShipElementPtr->thrust_wait = 0; ShipElementPtr->life_span = NORMAL_LIFE; @@ -441,7 +440,7 @@ spawn_ship (STARSHIP *StarShipPtr) SetPrimType (&DisplayArray[ShipElementPtr->PrimIndex], STAMP_PRIM); ShipElementPtr->current.image.farray = RDPtr->ship_data.ship; - if ((ShipElementPtr->state_flags & BAD_GUY) + if (ShipElementPtr->playerNr == NPC_PLAYER_NUM && LOBYTE (GLOBAL (CurrentActivity)) == IN_LAST_BATTLE) { // This is the Sa-Matra diff --git a/sc2/src/uqm/ships/androsyn/androsyn.c b/sc2/src/uqm/ships/androsyn/androsyn.c index 10435b6e8..392e6fe9f 100644 --- a/sc2/src/uqm/ships/androsyn/androsyn.c +++ b/sc2/src/uqm/ships/androsyn/androsyn.c @@ -200,8 +200,8 @@ initialize_bubble (ELEMENT *ShipPtr, HELEMENT BubbleArray[]) MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = StarShipPtr->ShipFacing; MissileBlock.index = 0; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = ANDROSYNTH_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; diff --git a/sc2/src/uqm/ships/arilou/arilou.c b/sc2/src/uqm/ships/arilou/arilou.c index 30b9ad02a..d64cb00c0 100644 --- a/sc2/src/uqm/ships/arilou/arilou.c +++ b/sc2/src/uqm/ships/arilou/arilou.c @@ -127,8 +127,8 @@ initialize_autoaim_laser (ELEMENT *ShipPtr, HELEMENT LaserArray[]) LaserBlock.cy = ShipPtr->next.location.y; LaserBlock.ex = COSINE (FACING_TO_ANGLE (LaserBlock.face), LASER_RANGE); LaserBlock.ey = SINE (FACING_TO_ANGLE (LaserBlock.face), LASER_RANGE); - LaserBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + LaserBlock.sender = ShipPtr->playerNr; + LaserBlock.flags = IGNORE_SIMILAR; LaserBlock.pixoffs = ARILOU_OFFSET; LaserBlock.color = BUILD_COLOR (MAKE_RGB15 (0x1F, 0x1F, 0x0A), 0x0E); LaserArray[0] = initialize_laser (&LaserBlock); diff --git a/sc2/src/uqm/ships/blackurq/blackurq.c b/sc2/src/uqm/ships/blackurq/blackurq.c index f6cf4a2bd..e072287f1 100644 --- a/sc2/src/uqm/ships/blackurq/blackurq.c +++ b/sc2/src/uqm/ships/blackurq/blackurq.c @@ -322,8 +322,8 @@ initialize_buzzsaw (ELEMENT *ShipPtr, HELEMENT SawArray[]) MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = StarShipPtr->ShipFacing; MissileBlock.index = 0; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = KOHR_AH_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; @@ -392,8 +392,7 @@ black_urquan_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern, if (!(BuzzSawPtr->state_flags & NONSOLID) && BuzzSawPtr->next.image.farray == StarShipPtr->RaceDescPtr->ship_data.weapon && BuzzSawPtr->life_span > MISSILE_LIFE * 3 / 4 - && (BuzzSawPtr->state_flags & (GOOD_GUY | BAD_GUY)) == - (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY))) + && elementsOfSamePlayer (BuzzSawPtr, ShipPtr)) { { //COUNT which_turn; @@ -479,9 +478,8 @@ spawn_gas_cloud (ELEMENT *ElementPtr) MissileBlock.cy = ElementPtr->next.location.y; MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.special; MissileBlock.index = 0; - MissileBlock.sender = - (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ElementPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = 20; MissileBlock.speed = GAS_SPEED; MissileBlock.hit_points = GAS_HITS; diff --git a/sc2/src/uqm/ships/chenjesu/chenjesu.c b/sc2/src/uqm/ships/chenjesu/chenjesu.c index 63dd9443b..255774e85 100644 --- a/sc2/src/uqm/ships/chenjesu/chenjesu.c +++ b/sc2/src/uqm/ships/chenjesu/chenjesu.c @@ -133,9 +133,8 @@ crystal_postprocess (ELEMENT *ElementPtr) MissileBlock.cy = ElementPtr->next.location.y; MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.index = 1; - MissileBlock.sender = - (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ElementPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = 0; MissileBlock.speed = FRAGMENT_SPEED; MissileBlock.hit_points = FRAGMENT_HITS; @@ -316,10 +315,7 @@ doggy_collision (ELEMENT *ElementPtr0, POINT *pPt0, #define ENERGY_DRAIN 10 collision (ElementPtr0, pPt0, ElementPtr1, pPt1); if ((ElementPtr1->state_flags & PLAYER_SHIP) - && (ElementPtr0->state_flags - & (GOOD_GUY | BAD_GUY)) != - (ElementPtr1->state_flags - & (GOOD_GUY | BAD_GUY))) + && !elementsOfSamePlayer (ElementPtr0, ElementPtr1)) { STARSHIP *StarShipPtr; @@ -357,8 +353,8 @@ spawn_doggy (ELEMENT *ElementPtr) DoggyElementPtr->hit_points = 3; DoggyElementPtr->mass_points = 4; DoggyElementPtr->thrust_wait = 0; - DoggyElementPtr->state_flags = APPEARING - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + DoggyElementPtr->playerNr = ElementPtr->playerNr; + DoggyElementPtr->state_flags = APPEARING; DoggyElementPtr->life_span = NORMAL_LIFE; SetPrimType (&(GLOBAL (DisplayArray))[DoggyElementPtr->PrimIndex], STAMP_PRIM); @@ -446,8 +442,7 @@ chenjesu_intelligence (ELEMENT *ShipPtr, EVALUATE_DESC *ObjectsOfConcern, && CrystalPtr->next.image.farray == StarShipPtr->RaceDescPtr->ship_data.weapon && CrystalPtr->preprocess_func && CrystalPtr->life_span > 0 - && (CrystalPtr->state_flags & (GOOD_GUY | BAD_GUY)) == - (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY))) + && elementsOfSamePlayer (CrystalPtr, ShipPtr)) { if (ObjectsOfConcern[ENEMY_SHIP_INDEX].ObjectPtr) { @@ -514,8 +509,8 @@ initialize_crystal (ELEMENT *ShipPtr, HELEMENT CrystalArray[]) MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = StarShipPtr->ShipFacing; MissileBlock.index = 0; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = CHENJESU_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; diff --git a/sc2/src/uqm/ships/chmmr/chmmr.c b/sc2/src/uqm/ships/chmmr/chmmr.c index e3c8329e1..666be210d 100644 --- a/sc2/src/uqm/ships/chmmr/chmmr.c +++ b/sc2/src/uqm/ships/chmmr/chmmr.c @@ -157,9 +157,9 @@ laser_death (ELEMENT *ElementPtr) ELEMENT *IonSpotsPtr; LockElement (hIonSpots, &IonSpotsPtr); - IonSpotsPtr->state_flags = - FINITE_LIFE | NONSOLID | IGNORE_SIMILAR | APPEARING - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + IonSpotsPtr->playerNr = ElementPtr->playerNr; + IonSpotsPtr->state_flags = FINITE_LIFE | NONSOLID + | IGNORE_SIMILAR | APPEARING; IonSpotsPtr->turn_wait = IonSpotsPtr->next_turn = 0; IonSpotsPtr->life_span = 9; @@ -223,8 +223,8 @@ initialize_megawatt_laser (ELEMENT *ShipPtr, HELEMENT LaserArray[]) + DISPLAY_TO_WORLD (r.corner.y); LaserBlock.ex = COSINE (FACING_TO_ANGLE (LaserBlock.face), LASER_RANGE); LaserBlock.ey = SINE (FACING_TO_ANGLE (LaserBlock.face), LASER_RANGE); - LaserBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + LaserBlock.sender = ShipPtr->playerNr; + LaserBlock.flags = IGNORE_SIMILAR; LaserBlock.pixoffs = 0; LaserBlock.color = cycle_array[StarShipPtr->special_counter]; LaserArray[0] = initialize_laser (&LaserBlock); @@ -284,8 +284,7 @@ chmmr_postprocess (ELEMENT *ElementPtr) LockElement (GetTailElement (), &MuzzleFlashPtr); if (MuzzleFlashPtr != ElementPtr - && (MuzzleFlashPtr->state_flags & (GOOD_GUY | BAD_GUY)) == - (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)) + && elementsOfSamePlayer (MuzzleFlashPtr, ElementPtr) && (MuzzleFlashPtr->state_flags & APPEARING) && GetPrimType (&(GLOBAL (DisplayArray))[ MuzzleFlashPtr->PrimIndex @@ -294,9 +293,9 @@ chmmr_postprocess (ELEMENT *ElementPtr) && (hMuzzleFlash = AllocElement ())) { LockElement (hMuzzleFlash, &MuzzleFlashPtr); - MuzzleFlashPtr->state_flags = - FINITE_LIFE | NONSOLID | IGNORE_SIMILAR | APPEARING - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + MuzzleFlashPtr->playerNr = ElementPtr->playerNr; + MuzzleFlashPtr->state_flags = FINITE_LIFE | NONSOLID + | IGNORE_SIMILAR | APPEARING; MuzzleFlashPtr->life_span = 1; MuzzleFlashPtr->current = ElementPtr->next; @@ -407,10 +406,9 @@ chmmr_postprocess (ELEMENT *ElementPtr) ELEMENT *ShadowElementPtr; LockElement (hShadow, &ShadowElementPtr); - - ShadowElementPtr->state_flags = - FINITE_LIFE | NONSOLID | IGNORE_SIMILAR | POST_PROCESS - | (ShipElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + ShadowElementPtr->playerNr = ShipElementPtr->playerNr; + ShadowElementPtr->state_flags = FINITE_LIFE | NONSOLID + | IGNORE_SIMILAR | POST_PROCESS; ShadowElementPtr->life_span = 1; ShadowElementPtr->current = ShipElementPtr->next; @@ -522,8 +520,8 @@ spawn_point_defense (ELEMENT *ElementPtr) { LockElement (hObject, &ObjectPtr); hNextObject = GetPredElement (ObjectPtr); - if (((ObjectPtr->state_flags | ShipPtr->state_flags) - & (GOOD_GUY | BAD_GUY)) == (GOOD_GUY | BAD_GUY) + if (!elementsOfSamePlayer (ObjectPtr, ShipPtr) + && ObjectPtr->playerNr != NEUTRAL_PLAYER_NUM && CollisionPossible (ObjectPtr, ShipPtr) && !OBJECT_CLOAKED (ObjectPtr)) { @@ -572,9 +570,8 @@ spawn_point_defense (ELEMENT *ElementPtr) - SattPtr->next.location.x; LaserBlock.ey = ObjectPtr->next.location.y - SattPtr->next.location.y; - LaserBlock.sender = - (SattPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + LaserBlock.sender = SattPtr->playerNr; + LaserBlock.flags = IGNORE_SIMILAR; LaserBlock.pixoffs = 0; LaserBlock.color = BUILD_COLOR (MAKE_RGB15 (0x00, 0x01, 0x1F), 0x4D); hPointDefense = initialize_laser (&LaserBlock); @@ -618,8 +615,8 @@ satellite_postprocess (ELEMENT *ElementPtr) PutElement (hDefense); LockElement (hDefense, &DefensePtr); - DefensePtr->state_flags = APPEARING | NONSOLID | FINITE_LIFE - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + DefensePtr->playerNr = ElementPtr->playerNr; + DefensePtr->state_flags = APPEARING | NONSOLID | FINITE_LIFE; { ELEMENT *SuccPtr; @@ -693,9 +690,9 @@ spawn_satellites (ELEMENT *ElementPtr) ELEMENT *SattPtr; LockElement (hSatellite, &SattPtr); - SattPtr->state_flags = - IGNORE_SIMILAR | APPEARING | FINITE_LIFE - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + SattPtr->playerNr = ElementPtr->playerNr; + SattPtr->state_flags = IGNORE_SIMILAR | APPEARING + | FINITE_LIFE; SattPtr->life_span = NORMAL_LIFE + 1; SattPtr->hit_points = 10; SattPtr->mass_points = 10; @@ -747,9 +744,9 @@ chmmr_preprocess (ELEMENT *ElementPtr) STARSHIP *StarShipPtr; LockElement (hSatellite, &SattPtr); - SattPtr->state_flags = - FINITE_LIFE | NONSOLID | IGNORE_SIMILAR | APPEARING - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + SattPtr->playerNr = ElementPtr->playerNr; + SattPtr->state_flags = FINITE_LIFE | NONSOLID | IGNORE_SIMILAR + | APPEARING; SattPtr->life_span = HYPERJUMP_LIFE + 1; SattPtr->death_func = spawn_satellites; diff --git a/sc2/src/uqm/ships/druuge/druuge.c b/sc2/src/uqm/ships/druuge/druuge.c index 5e5cea87e..bcd067eac 100644 --- a/sc2/src/uqm/ships/druuge/druuge.c +++ b/sc2/src/uqm/ships/druuge/druuge.c @@ -164,8 +164,8 @@ initialize_cannon (ELEMENT *ShipPtr, HELEMENT CannonArray[]) MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = StarShipPtr->ShipFacing; MissileBlock.index = MissileBlock.face; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = DRUUGE_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; diff --git a/sc2/src/uqm/ships/human/human.c b/sc2/src/uqm/ships/human/human.c index 951a9158b..480092163 100644 --- a/sc2/src/uqm/ships/human/human.c +++ b/sc2/src/uqm/ships/human/human.c @@ -165,11 +165,10 @@ spawn_point_defense (ELEMENT *ElementPtr) ELEMENT *DefensePtr; LockElement (hDefense, &DefensePtr); - DefensePtr->state_flags = APPEARING | NONSOLID | FINITE_LIFE | - (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); - { - DefensePtr->death_func = spawn_point_defense; - } + DefensePtr->playerNr = ElementPtr->playerNr; + DefensePtr->state_flags = APPEARING | NONSOLID | FINITE_LIFE; + DefensePtr->death_func = spawn_point_defense; + GetElementStarShip (ElementPtr, &StarShipPtr); SetElementStarShip (DefensePtr, StarShipPtr); UnlockElement (hDefense); @@ -237,8 +236,8 @@ spawn_point_defense (ELEMENT *ElementPtr) - ShipPtr->next.location.x; LaserBlock.ey = ObjectPtr->next.location.y - ShipPtr->next.location.y; - LaserBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + LaserBlock.sender = ShipPtr->playerNr; + LaserBlock.flags = IGNORE_SIMILAR; LaserBlock.pixoffs = 0; LaserBlock.color = BUILD_COLOR (MAKE_RGB15 (0x1F, 0x1F, 0x1F), 0x0F); hPointDefense = initialize_laser (&LaserBlock); @@ -276,7 +275,8 @@ initialize_nuke (ELEMENT *ShipPtr, HELEMENT NukeArray[]) MissileBlock.cy = ShipPtr->next.location.y; MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = MissileBlock.index = StarShipPtr->ShipFacing; - MissileBlock.sender = ShipPtr->state_flags & (GOOD_GUY | BAD_GUY); + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = 0; MissileBlock.pixoffs = HUMAN_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; diff --git a/sc2/src/uqm/ships/ilwrath/ilwrath.c b/sc2/src/uqm/ships/ilwrath/ilwrath.c index eff46c65f..d5cc1d497 100644 --- a/sc2/src/uqm/ships/ilwrath/ilwrath.c +++ b/sc2/src/uqm/ships/ilwrath/ilwrath.c @@ -190,8 +190,8 @@ initialize_flame (ELEMENT *ShipPtr, HELEMENT FlameArray[]) MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = StarShipPtr->ShipFacing; MissileBlock.index = 0; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = ILWRATH_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; diff --git a/sc2/src/uqm/ships/lastbat/lastbat.c b/sc2/src/uqm/ships/lastbat/lastbat.c index 096d85ebb..f48075c02 100644 --- a/sc2/src/uqm/ships/lastbat/lastbat.c +++ b/sc2/src/uqm/ships/lastbat/lastbat.c @@ -157,7 +157,7 @@ static void comet_collision (ELEMENT *ElementPtr0, POINT *pPt0, ELEMENT *ElementPtr1, POINT *pPt1) { - if (ElementPtr1->state_flags & GOOD_GUY) + if (ElementPtr1->playerNr == RPG_PLAYER_NUM) { BYTE old_hits; COUNT old_life; @@ -211,7 +211,8 @@ spawn_comet (ELEMENT *ElementPtr) MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = 0; MissileBlock.index = 24; - MissileBlock.sender = BAD_GUY | IGNORE_SIMILAR; + MissileBlock.sender = ElementPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = 0; MissileBlock.speed = 0; MissileBlock.hit_points = COMET_HITS; @@ -293,7 +294,7 @@ static void gate_collision (ELEMENT *ElementPtr0, POINT *pPt0, ELEMENT *ElementPtr1, POINT *pPt1) { - if (ElementPtr1->state_flags & GOOD_GUY) + if (ElementPtr1->playerNr == RPG_PLAYER_NUM) { STARSHIP *StarShipPtr; @@ -591,7 +592,7 @@ sentinel_collision (ELEMENT *ElementPtr0, POINT *pPt0, COUNT angle; STARSHIP *StarShipPtr; - if (ElementPtr1->state_flags & BAD_GUY) + if (ElementPtr1->playerNr == NPC_PLAYER_NUM) { if (ElementPtr0->preprocess_func == ElementPtr1->preprocess_func && !(ElementPtr0->state_flags & DEFY_PHYSICS) @@ -718,7 +719,8 @@ samatra_postprocess (ELEMENT *ElementPtr) MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = 0; MissileBlock.index = 0; - MissileBlock.sender = BAD_GUY; + MissileBlock.sender = ElementPtr->playerNr; + MissileBlock.flags = 0; MissileBlock.pixoffs = 0; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; @@ -789,8 +791,8 @@ samatra_preprocess (ELEMENT *ElementPtr) GeneratorPtr->hit_points = GENERATOR_HITS; GeneratorPtr->mass_points = MAX_SHIP_MASS * 10; GeneratorPtr->life_span = NORMAL_LIFE; - GeneratorPtr->state_flags = - APPEARING | BAD_GUY | IGNORE_SIMILAR; + GeneratorPtr->playerNr = ElementPtr->playerNr; + GeneratorPtr->state_flags = APPEARING | IGNORE_SIMILAR; SetPrimType ( &GLOBAL (DisplayArray[GeneratorPtr->PrimIndex]), STAMP_PRIM @@ -833,8 +835,8 @@ samatra_preprocess (ELEMENT *ElementPtr) LockElement (hTurret, &TurretPtr); TurretPtr->hit_points = 1; TurretPtr->life_span = NORMAL_LIFE; - TurretPtr->state_flags = - APPEARING | BAD_GUY | IGNORE_SIMILAR | NONSOLID; + TurretPtr->playerNr = ElementPtr->playerNr; + TurretPtr->state_flags = APPEARING | IGNORE_SIMILAR | NONSOLID; SetPrimType ( &GLOBAL (DisplayArray[TurretPtr->PrimIndex]), STAMP_PRIM @@ -869,8 +871,9 @@ samatra_preprocess (ELEMENT *ElementPtr) GatePtr->hit_points = GATE_HITS; GatePtr->mass_points = GATE_DAMAGE; GatePtr->life_span = 2; - GatePtr->state_flags = - APPEARING | FINITE_LIFE | BAD_GUY | IGNORE_SIMILAR; + GatePtr->playerNr = ElementPtr->playerNr; + GatePtr->state_flags = APPEARING | FINITE_LIFE + | IGNORE_SIMILAR; SetPrimType ( &GLOBAL (DisplayArray[GatePtr->PrimIndex]), STAMP_PRIM diff --git a/sc2/src/uqm/ships/melnorme/melnorme.c b/sc2/src/uqm/ships/melnorme/melnorme.c index ee04f85cd..218e3b970 100644 --- a/sc2/src/uqm/ships/melnorme/melnorme.c +++ b/sc2/src/uqm/ships/melnorme/melnorme.c @@ -312,8 +312,8 @@ initialize_pump_up (ELEMENT *ShipPtr, HELEMENT PumpUpArray[]) MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = StarShipPtr->ShipFacing; MissileBlock.index = 0; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = MELNORME_OFFSET; MissileBlock.speed = DISPLAY_TO_WORLD (MELNORME_OFFSET); MissileBlock.hit_points = PUMPUP_DAMAGE; @@ -380,9 +380,8 @@ confuse_preprocess (ELEMENT *ElementPtr) if (hEffect) { LockElement (hEffect, &eptr); - - eptr->state_flags = FINITE_LIFE | NONSOLID | CHANGING - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + eptr->playerNr = ElementPtr->playerNr; + eptr->state_flags = FINITE_LIFE | NONSOLID | CHANGING; eptr->life_span = 1; eptr->current = eptr->next = ElementPtr->next; eptr->preprocess_func = confuse_preprocess; @@ -417,8 +416,7 @@ confusion_collision (ELEMENT *ElementPtr0, POINT *pPt0, hConfusionElement; hConfusionElement = hNextElement) { LockElement (hConfusionElement, &ConfusionPtr); - if ((ConfusionPtr->state_flags & (GOOD_GUY | BAD_GUY)) == - (ElementPtr0->state_flags & (GOOD_GUY | BAD_GUY)) + if (elementsOfSamePlayer (ConfusionPtr, ElementPtr0) && ConfusionPtr->current.image.farray == StarShipPtr->RaceDescPtr->ship_data.special && (ConfusionPtr->state_flags & NONSOLID)) @@ -443,8 +441,8 @@ confusion_collision (ELEMENT *ElementPtr0, POINT *pPt0, ConfusionPtr->current.image.frame, 8 ); ConfusionPtr->next = ConfusionPtr->current; - ConfusionPtr->state_flags = FINITE_LIFE | NONSOLID | CHANGING - | (ElementPtr0->state_flags & (GOOD_GUY | BAD_GUY)); + ConfusionPtr->playerNr = ElementPtr0->playerNr; + ConfusionPtr->state_flags = FINITE_LIFE | NONSOLID | CHANGING; ConfusionPtr->preprocess_func = confuse_preprocess; SetPrimType ( &(GLOBAL (DisplayArray))[ConfusionPtr->PrimIndex], @@ -488,8 +486,8 @@ initialize_confusion (ELEMENT *ShipPtr, HELEMENT ConfusionArray[]) ConfusionBlock.farray = StarShipPtr->RaceDescPtr->ship_data.special; ConfusionBlock.index = 0; ConfusionBlock.face = StarShipPtr->ShipFacing; - ConfusionBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + ConfusionBlock.sender = ShipPtr->playerNr; + ConfusionBlock.flags = IGNORE_SIMILAR; ConfusionBlock.pixoffs = MELNORME_OFFSET; ConfusionBlock.speed = CMISSILE_SPEED; ConfusionBlock.hit_points = CMISSILE_HITS; @@ -524,8 +522,8 @@ initialize_test_pump_up (ELEMENT *ShipPtr, HELEMENT PumpUpArray[]) MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = StarShipPtr->ShipFacing; MissileBlock.index = 0; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = MELNORME_OFFSET; MissileBlock.speed = PUMPUP_SPEED; MissileBlock.hit_points = PUMPUP_DAMAGE; diff --git a/sc2/src/uqm/ships/mmrnmhrm/mmrnmhrm.c b/sc2/src/uqm/ships/mmrnmhrm/mmrnmhrm.c index d78e59ff8..b7ce2ec24 100644 --- a/sc2/src/uqm/ships/mmrnmhrm/mmrnmhrm.c +++ b/sc2/src/uqm/ships/mmrnmhrm/mmrnmhrm.c @@ -248,8 +248,7 @@ twin_laser_collision (ELEMENT *ElementPtr0, POINT *pPt0, ELEMENT *ElementPtr1, POINT *pPt1) { if (!(ElementPtr1->state_flags & PLAYER_SHIP) - || !(ElementPtr0->state_flags & ElementPtr1->state_flags - & (GOOD_GUY | BAD_GUY))) + || !elementsOfSamePlayer (ElementPtr0, ElementPtr1)) weapon_collision (ElementPtr0, pPt0, ElementPtr1, pPt1); } @@ -275,7 +274,8 @@ initialize_dual_weapons (ELEMENT *ShipPtr, HELEMENT WeaponArray[]) LASER_BLOCK LaserBlock; ELEMENT *LaserPtr; - LaserBlock.sender = ShipPtr->state_flags & (GOOD_GUY | BAD_GUY); + LaserBlock.sender = ShipPtr->playerNr; + LaserBlock.flags = 0; LaserBlock.pixoffs = 0; LaserBlock.color = BUILD_COLOR (MAKE_RGB15 (0x1F, 0x0A, 0x0A), 0x0C); LaserBlock.face = facing; @@ -318,8 +318,8 @@ initialize_dual_weapons (ELEMENT *ShipPtr, HELEMENT WeaponArray[]) ELEMENT *TorpPtr; TorpBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; - TorpBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + TorpBlock.sender = ShipPtr->playerNr; + TorpBlock.flags = IGNORE_SIMILAR; TorpBlock.pixoffs = 0; TorpBlock.speed = MISSILE_SPEED; TorpBlock.hit_points = MISSILE_HITS; diff --git a/sc2/src/uqm/ships/mycon/mycon.c b/sc2/src/uqm/ships/mycon/mycon.c index 180446142..6cdff44f6 100644 --- a/sc2/src/uqm/ships/mycon/mycon.c +++ b/sc2/src/uqm/ships/mycon/mycon.c @@ -306,7 +306,8 @@ initialize_plasma (ELEMENT *ShipPtr, HELEMENT PlasmaArray[]) MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = StarShipPtr->ShipFacing; MissileBlock.index = 0; - MissileBlock.sender = ShipPtr->state_flags & (GOOD_GUY | BAD_GUY); + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = 0; MissileBlock.pixoffs = MYCON_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_DAMAGE; diff --git a/sc2/src/uqm/ships/orz/orz.c b/sc2/src/uqm/ships/orz/orz.c index c01c2ce48..6aed9792b 100644 --- a/sc2/src/uqm/ships/orz/orz.c +++ b/sc2/src/uqm/ships/orz/orz.c @@ -116,8 +116,7 @@ static void howitzer_collision (ELEMENT *ElementPtr0, POINT *pPt0, ELEMENT *ElementPtr1, POINT *pPt1) { - if ((ElementPtr0->state_flags & (GOOD_GUY | BAD_GUY)) - != (ElementPtr1->state_flags & (GOOD_GUY | BAD_GUY))) + if (!elementsOfSamePlayer (ElementPtr0, ElementPtr1)) weapon_collision (ElementPtr0, pPt0, ElementPtr1, pPt1); } @@ -156,8 +155,8 @@ initialize_turret_missile (ELEMENT *ShipPtr, HELEMENT MissileArray[]) + TurretPtr->thrust_wait); UnlockElement (GetSuccElement (ShipPtr)); - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = TURRET_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; @@ -387,8 +386,7 @@ intruder_preprocess (ELEMENT *ElementPtr) { LockElement (hElement, &ShipPtr); if ((ShipPtr->state_flags & PLAYER_SHIP) - && (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - != (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY))) + && !elementsOfSamePlayer (ShipPtr, ElementPtr)) { STAMP s; @@ -542,8 +540,7 @@ marine_preprocess (ELEMENT *ElementPtr) && ObjectPtr->crew_level && !OBJECT_CLOAKED (ObjectPtr)) { - if ((ObjectPtr->state_flags & (GOOD_GUY | BAD_GUY)) != - (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY))) + if (!elementsOfSamePlayer (ObjectPtr, ElementPtr)) { if (ElementPtr->state_flags & IGNORE_SIMILAR) hTarget = hObject; @@ -588,8 +585,7 @@ marine_preprocess (ELEMENT *ElementPtr) COUNT num_frames; VELOCITY_DESC ShipVelocity; - if ((ObjectPtr->state_flags & (GOOD_GUY | BAD_GUY)) == - (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)) + if (elementsOfSamePlayer (ObjectPtr, ElementPtr) && (ElementPtr->state_flags & IGNORE_SIMILAR)) { ElementPtr->next.image.frame = SetAbsFrameIndex ( @@ -684,6 +680,7 @@ marine_preprocess (ELEMENT *ElementPtr) InsertElement (hIonElement, GetHeadElement ()); LockElement (hIonElement, &IonElementPtr); + IonElementPtr->playerNr = NEUTRAL_PLAYER_NUM; IonElementPtr->state_flags = APPEARING | FINITE_LIFE | NONSOLID; IonElementPtr->life_span = @@ -731,8 +728,7 @@ marine_collision (ELEMENT *ElementPtr0, POINT *pPt0, && !(ElementPtr0->state_flags & (NONSOLID | COLLISION)) && !(ElementPtr1->state_flags & FINITE_LIFE)) { - if ((ElementPtr0->state_flags & (GOOD_GUY | BAD_GUY)) - != (ElementPtr1->state_flags & (GOOD_GUY | BAD_GUY))) + if (!elementsOfSamePlayer (ElementPtr0, ElementPtr1)) { ElementPtr0->turn_wait = MAKE_BYTE (5, HINIBBLE (ElementPtr0->turn_wait)); @@ -847,10 +843,10 @@ turret_postprocess (ELEMENT *ElementPtr) ELEMENT *TurretPtr; LockElement (hTurret, &TurretPtr); - TurretPtr->state_flags = - FINITE_LIFE | NONSOLID | IGNORE_SIMILAR - | CHANGING | PRE_PROCESS | POST_PROCESS - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + TurretPtr->playerNr = ElementPtr->playerNr; + TurretPtr->state_flags = FINITE_LIFE | NONSOLID + | IGNORE_SIMILAR | CHANGING | PRE_PROCESS + | POST_PROCESS; TurretPtr->life_span = 1; TurretPtr->current.image = ElementPtr->current.image; TurretPtr->current.location = ShipPtr->next.location; @@ -886,9 +882,7 @@ turret_postprocess (ELEMENT *ElementPtr) LockElement (GetTailElement (), &TurretEffectPtr); if (TurretEffectPtr != ElementPtr - && (TurretEffectPtr->state_flags & - (GOOD_GUY | BAD_GUY)) == - (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)) + && elementsOfSamePlayer (TurretEffectPtr, ElementPtr) && (TurretEffectPtr->state_flags & APPEARING) && GetPrimType (&(GLOBAL (DisplayArray))[ TurretEffectPtr->PrimIndex @@ -901,10 +895,9 @@ turret_postprocess (ELEMENT *ElementPtr) SINE (facing, DISPLAY_TO_WORLD (2)); LockElement (hTurretEffect, &TurretEffectPtr); + TurretEffectPtr->playerNr = ElementPtr->playerNr; TurretEffectPtr->state_flags = FINITE_LIFE - | NONSOLID | IGNORE_SIMILAR | APPEARING - | (ElementPtr->state_flags & - (GOOD_GUY | BAD_GUY)); + | NONSOLID | IGNORE_SIMILAR | APPEARING; TurretEffectPtr->life_span = 4; TurretEffectPtr->current.location.x = @@ -964,9 +957,9 @@ turret_postprocess (ELEMENT *ElementPtr) ELEMENT *SpaceMarinePtr; LockElement (hSpaceMarine, &SpaceMarinePtr); - SpaceMarinePtr->state_flags = - IGNORE_SIMILAR | APPEARING | CREW_OBJECT - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + SpaceMarinePtr->playerNr = ElementPtr->playerNr; + SpaceMarinePtr->state_flags = IGNORE_SIMILAR | APPEARING + | CREW_OBJECT; SpaceMarinePtr->life_span = NORMAL_LIFE; SpaceMarinePtr->hit_points = 3; SpaceMarinePtr->mass_points = 1; @@ -1044,9 +1037,8 @@ orz_preprocess (ELEMENT *ElementPtr) ELEMENT *TurretPtr; LockElement (hTurret, &TurretPtr); - TurretPtr->state_flags = - FINITE_LIFE | NONSOLID | IGNORE_SIMILAR - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + TurretPtr->playerNr = ElementPtr->playerNr; + TurretPtr->state_flags = FINITE_LIFE | NONSOLID | IGNORE_SIMILAR; TurretPtr->life_span = 1; TurretPtr->current.image.farray = StarShipPtr->RaceDescPtr->ship_data.special; TurretPtr->current.image.frame = diff --git a/sc2/src/uqm/ships/pkunk/pkunk.c b/sc2/src/uqm/ships/pkunk/pkunk.c index bc2d6d68f..b6f78a641 100644 --- a/sc2/src/uqm/ships/pkunk/pkunk.c +++ b/sc2/src/uqm/ships/pkunk/pkunk.c @@ -141,8 +141,8 @@ initialize_bug_missile (ELEMENT *ShipPtr, HELEMENT MissileArray[]) MissileBlock.cy = ShipPtr->next.location.y; MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.index = 0; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = PKUNK_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; @@ -224,9 +224,7 @@ new_pkunk (ELEMENT *ElementPtr) } else { - ElementPtr->state_flags = APPEARING | PLAYER_SHIP | IGNORE_SIMILAR - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); - + ElementPtr->state_flags = APPEARING | PLAYER_SHIP | IGNORE_SIMILAR; ElementPtr->mass_points = SHIP_MASS; ElementPtr->preprocess_func = StarShipPtr->RaceDescPtr->preprocess_func; ElementPtr->postprocess_func = StarShipPtr->RaceDescPtr->postprocess_func; @@ -387,6 +385,7 @@ phoenix_transition (ELEMENT *ElementPtr) PutElement (hShipImage); LockElement (hShipImage, &ShipImagePtr); + ShipImagePtr->playerNr = NEUTRAL_PLAYER_NUM; ShipImagePtr->state_flags = APPEARING | FINITE_LIFE | NONSOLID; ShipImagePtr->life_span = TRANSITION_LIFE; SetPrimType (&(GLOBAL (DisplayArray))[ShipImagePtr->PrimIndex], @@ -450,9 +449,8 @@ pkunk_preprocess (ELEMENT *ElementPtr) { LockElement (hPhoenix, &PhoenixPtr); - PhoenixPtr->state_flags = - FINITE_LIFE | NONSOLID | IGNORE_SIMILAR - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + PhoenixPtr->playerNr = ElementPtr->playerNr; + PhoenixPtr->state_flags = FINITE_LIFE | NONSOLID | IGNORE_SIMILAR; PhoenixPtr->life_span = 1; PhoenixPtr->death_func = intercept_pkunk_death; diff --git a/sc2/src/uqm/ships/shofixti/shofixti.c b/sc2/src/uqm/ships/shofixti/shofixti.c index 6ee724e74..5cdca78aa 100644 --- a/sc2/src/uqm/ships/shofixti/shofixti.c +++ b/sc2/src/uqm/ships/shofixti/shofixti.c @@ -125,8 +125,8 @@ initialize_standard_missile (ELEMENT *ShipPtr, HELEMENT MissileArray[]) MissileBlock.cy = ShipPtr->next.location.y; MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = MissileBlock.index = StarShipPtr->ShipFacing; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = SHOFIXTI_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; @@ -187,6 +187,7 @@ destruct_preprocess (ELEMENT *ElementPtr) LockElement (hDestruct, &DestructPtr); SetElementStarShip (DestructPtr, StarShipPtr); DestructPtr->hit_points = DestructPtr->mass_points = 0; + DestructPtr->playerNr = NEUTRAL_PLAYER_NUM; DestructPtr->state_flags = APPEARING | FINITE_LIFE | NONSOLID; DestructPtr->life_span = (NUM_EXPLOSION_FRAMES - 3) - 1; SetPrimType ( @@ -234,8 +235,8 @@ self_destruct (ELEMENT *ElementPtr) ELEMENT *DestructPtr; LockElement (hDestruct, &DestructPtr); - DestructPtr->state_flags = APPEARING | NONSOLID | FINITE_LIFE | - (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + DestructPtr->playerNr = ElementPtr->playerNr; + DestructPtr->state_flags = APPEARING | NONSOLID | FINITE_LIFE; DestructPtr->next.location = ElementPtr->next.location; DestructPtr->life_span = 0; DestructPtr->pParent = ElementPtr->pParent; diff --git a/sc2/src/uqm/ships/sis_ship/sis_ship.c b/sc2/src/uqm/ships/sis_ship/sis_ship.c index 64bfd9052..e2f95c5ce 100644 --- a/sc2/src/uqm/ships/sis_ship/sis_ship.c +++ b/sc2/src/uqm/ships/sis_ship/sis_ship.c @@ -314,11 +314,10 @@ spawn_point_defense (ELEMENT *ElementPtr) ELEMENT *DefensePtr; LockElement (hDefense, &DefensePtr); - DefensePtr->state_flags = APPEARING | NONSOLID | FINITE_LIFE | - (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); - { - DefensePtr->death_func = spawn_point_defense; - } + DefensePtr->playerNr = ElementPtr->playerNr; + DefensePtr->state_flags = APPEARING | NONSOLID | FINITE_LIFE; + DefensePtr->death_func = spawn_point_defense; + GetElementStarShip (ElementPtr, &StarShipPtr); SetElementStarShip (DefensePtr, StarShipPtr); UnlockElement (hDefense); @@ -403,8 +402,8 @@ spawn_point_defense (ELEMENT *ElementPtr) - ShipPtr->next.location.x; LaserBlock.ey = ObjectPtr->next.location.y - ShipPtr->next.location.y; - LaserBlock.sender = (ShipPtr->state_flags & - (GOOD_GUY | BAD_GUY)) | IGNORE_SIMILAR; + LaserBlock.sender = ShipPtr->playerNr; + LaserBlock.flags = IGNORE_SIMILAR; LaserBlock.pixoffs = 0; LaserBlock.color = LaserColor; hPointDefense = initialize_laser (&LaserBlock); @@ -571,8 +570,8 @@ initialize_blasters (ELEMENT *ShipPtr, HELEMENT BlasterArray[]) lpMB->cx = ShipPtr->next.location.x; lpMB->cy = ShipPtr->next.location.y; lpMB->farray = StarShipPtr->RaceDescPtr->ship_data.weapon; - lpMB->sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + lpMB->sender = ShipPtr->playerNr; + lpMB->flags = IGNORE_SIMILAR; lpMB->blast_offs = BLASTER_OFFSET; lpMB->speed = BLASTER_SPEED; lpMB->preprocess_func = blaster_preprocess; diff --git a/sc2/src/uqm/ships/slylandr/slylandr.c b/sc2/src/uqm/ships/slylandr/slylandr.c index 8fe2a15a7..0e31bbd38 100644 --- a/sc2/src/uqm/ships/slylandr/slylandr.c +++ b/sc2/src/uqm/ships/slylandr/slylandr.c @@ -152,8 +152,8 @@ initialize_lightning (ELEMENT *ElementPtr, HELEMENT LaserArray[]) LaserBlock.ex = 0; LaserBlock.ey = 0; - LaserBlock.sender = (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + LaserBlock.sender = ElementPtr->playerNr; + LaserBlock.flags = IGNORE_SIMILAR; LaserBlock.face = 0; LaserBlock.pixoffs = 0; LaserArray[0] = initialize_laser (&LaserBlock); @@ -306,9 +306,8 @@ harvest_space_junk (ELEMENT *ElementPtr) LockElement (hElement, &ObjPtr); hNextElement = GetSuccElement (ObjPtr); - if (!(ObjPtr->state_flags - & (APPEARING | GOOD_GUY | BAD_GUY - | PLAYER_SHIP | FINITE_LIFE)) + if (!(ObjPtr->state_flags & (APPEARING | PLAYER_SHIP | FINITE_LIFE)) + && ObjPtr->playerNr == NEUTRAL_PLAYER_NUM && !GRAVITY_MASS (ObjPtr->mass_points) && CollisionPossible (ObjPtr, ElementPtr)) { diff --git a/sc2/src/uqm/ships/spathi/spathi.c b/sc2/src/uqm/ships/spathi/spathi.c index 60273fd81..3f4fabe7d 100644 --- a/sc2/src/uqm/ships/spathi/spathi.c +++ b/sc2/src/uqm/ships/spathi/spathi.c @@ -154,7 +154,8 @@ spawn_butt_missile (ELEMENT *ShipPtr) ButtMissileBlock.face = ButtMissileBlock.index = NORMALIZE_FACING (StarShipPtr->ShipFacing + ANGLE_TO_FACING (HALF_CIRCLE)); - ButtMissileBlock.sender = ShipPtr->state_flags & (GOOD_GUY | BAD_GUY); + ButtMissileBlock.sender = ShipPtr->playerNr; + ButtMissileBlock.flags = 0; ButtMissileBlock.pixoffs = SPATHI_REAR_OFFSET; ButtMissileBlock.speed = DISCRIMINATOR_SPEED; ButtMissileBlock.hit_points = DISCRIMINATOR_HITS; @@ -248,8 +249,8 @@ initialize_standard_missile (ELEMENT *ShipPtr, HELEMENT MissileArray[]) MissileBlock.cy = ShipPtr->next.location.y; MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = MissileBlock.index = StarShipPtr->ShipFacing; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = SPATHI_FORWARD_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; diff --git a/sc2/src/uqm/ships/supox/supox.c b/sc2/src/uqm/ships/supox/supox.c index b8ac0aa07..e003e5533 100644 --- a/sc2/src/uqm/ships/supox/supox.c +++ b/sc2/src/uqm/ships/supox/supox.c @@ -189,8 +189,8 @@ initialize_horn (ELEMENT *ShipPtr, HELEMENT HornArray[]) MissileBlock.cy = ShipPtr->next.location.y; MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = MissileBlock.index = StarShipPtr->ShipFacing; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = SUPOX_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; diff --git a/sc2/src/uqm/ships/syreen/syreen.c b/sc2/src/uqm/ships/syreen/syreen.c index 843305d7c..727b6d7cd 100644 --- a/sc2/src/uqm/ships/syreen/syreen.c +++ b/sc2/src/uqm/ships/syreen/syreen.c @@ -125,8 +125,8 @@ initialize_dagger (ELEMENT *ShipPtr, HELEMENT DaggerArray[]) MissileBlock.cy = ShipPtr->next.location.y; MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = MissileBlock.index = StarShipPtr->ShipFacing; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = SYREEN_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; @@ -153,8 +153,8 @@ spawn_crew (ELEMENT *ElementPtr) LockElement (hCrew, &CrewPtr); CrewPtr->next.location = ElementPtr->next.location; - CrewPtr->state_flags = APPEARING | NONSOLID | FINITE_LIFE - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + CrewPtr->playerNr = ElementPtr->playerNr; + CrewPtr->state_flags = APPEARING | NONSOLID | FINITE_LIFE; CrewPtr->life_span = 0; CrewPtr->death_func = spawn_crew; CrewPtr->pParent = ElementPtr->pParent; @@ -177,8 +177,7 @@ spawn_crew (ELEMENT *ElementPtr) hNextElement = GetSuccElement (ObjPtr); if ((ObjPtr->state_flags & PLAYER_SHIP) - && (ObjPtr->state_flags & (GOOD_GUY | BAD_GUY)) != - (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)) + && !elementsOfSamePlayer (ObjPtr, ElementPtr) && ObjPtr->crew_level > 1) { SIZE dx, dy; diff --git a/sc2/src/uqm/ships/thradd/thradd.c b/sc2/src/uqm/ships/thradd/thradd.c index b405370ee..7749e8dc2 100644 --- a/sc2/src/uqm/ships/thradd/thradd.c +++ b/sc2/src/uqm/ships/thradd/thradd.c @@ -254,8 +254,8 @@ initialize_horn (ELEMENT *ShipPtr, HELEMENT HornArray[]) MissileBlock.cy = ShipPtr->next.location.y; MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = MissileBlock.index = StarShipPtr->ShipFacing; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = THRADDASH_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; @@ -328,8 +328,8 @@ thraddash_preprocess (ELEMENT *ElementPtr) MissileBlock.index = GetFrameCount ( StarShipPtr->RaceDescPtr->ship_data.special[0] ) - 1; - MissileBlock.sender = (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ElementPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = 0; MissileBlock.speed = 0; MissileBlock.hit_points = NAPALM_HITS; diff --git a/sc2/src/uqm/ships/umgah/umgah.c b/sc2/src/uqm/ships/umgah/umgah.c index 03bf367c6..8145e3d1d 100644 --- a/sc2/src/uqm/ships/umgah/umgah.c +++ b/sc2/src/uqm/ships/umgah/umgah.c @@ -274,8 +274,8 @@ initialize_cone (ELEMENT *ShipPtr, HELEMENT ConeArray[]) MissileBlock.cy = ShipPtr->next.location.y; MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.special; MissileBlock.face = StarShipPtr->ShipFacing; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = UMGAH_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; diff --git a/sc2/src/uqm/ships/urquan/urquan.c b/sc2/src/uqm/ships/urquan/urquan.c index 7c0a06619..9290e289b 100644 --- a/sc2/src/uqm/ships/urquan/urquan.c +++ b/sc2/src/uqm/ships/urquan/urquan.c @@ -126,8 +126,8 @@ initialize_fusion (ELEMENT *ShipPtr, HELEMENT FusionArray[]) MissileBlock.cy = ShipPtr->next.location.y; MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = MissileBlock.index = StarShipPtr->ShipFacing; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = URQUAN_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; @@ -162,8 +162,8 @@ fighter_postprocess (ELEMENT *ElementPtr) LaserBlock.face = ElementPtr->thrust_wait; LaserBlock.ex = COSINE (FACING_TO_ANGLE (LaserBlock.face), LASER_RANGE); LaserBlock.ey = SINE (FACING_TO_ANGLE (LaserBlock.face), LASER_RANGE); - LaserBlock.sender = (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + LaserBlock.sender = ElementPtr->playerNr; + LaserBlock.flags = IGNORE_SIMILAR; LaserBlock.pixoffs = FIGHTER_OFFSET; LaserBlock.color = BUILD_COLOR (MAKE_RGB15 (0x1F, 0x1F, 0x0A), 0x0E); Laser = initialize_laser (&LaserBlock); @@ -415,9 +415,9 @@ spawn_fighters (ELEMENT *ElementPtr) FighterElementPtr->hit_points = 1; FighterElementPtr->mass_points = 0; FighterElementPtr->thrust_wait = TRACK_THRESHOLD + 1; - FighterElementPtr->state_flags = APPEARING - | FINITE_LIFE | CREW_OBJECT | IGNORE_SIMILAR - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + FighterElementPtr->playerNr = ElementPtr->playerNr; + FighterElementPtr->state_flags = APPEARING | FINITE_LIFE + | CREW_OBJECT | IGNORE_SIMILAR; FighterElementPtr->life_span = FIGHTER_LIFE; SetPrimType (&(GLOBAL (DisplayArray))[FighterElementPtr->PrimIndex], STAMP_PRIM); diff --git a/sc2/src/uqm/ships/utwig/utwig.c b/sc2/src/uqm/ships/utwig/utwig.c index ba3318a1b..9b328081b 100644 --- a/sc2/src/uqm/ships/utwig/utwig.c +++ b/sc2/src/uqm/ships/utwig/utwig.c @@ -130,8 +130,8 @@ initialize_lance (ELEMENT *ShipPtr, HELEMENT WeaponArray[]) GetElementStarShip (ShipPtr, &StarShipPtr); MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = MissileBlock.index = StarShipPtr->ShipFacing; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; MissileBlock.damage = MISSILE_DAMAGE; diff --git a/sc2/src/uqm/ships/vux/vux.c b/sc2/src/uqm/ships/vux/vux.c index 444e7418f..76bd0b574 100644 --- a/sc2/src/uqm/ships/vux/vux.c +++ b/sc2/src/uqm/ships/vux/vux.c @@ -203,8 +203,8 @@ spawn_limpets (ELEMENT *ElementPtr) MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.special; MissileBlock.face = StarShipPtr->ShipFacing + HALF_CIRCLE; MissileBlock.index = 0; - MissileBlock.sender = (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ElementPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = LIMPET_OFFSET; MissileBlock.speed = LIMPET_SPEED; MissileBlock.hit_points = LIMPET_HITS; @@ -241,8 +241,8 @@ initialize_horrific_laser (ELEMENT *ShipPtr, HELEMENT LaserArray[]) LaserBlock.cy = ShipPtr->next.location.y; LaserBlock.ex = COSINE (FACING_TO_ANGLE (LaserBlock.face), LASER_RANGE); LaserBlock.ey = SINE (FACING_TO_ANGLE (LaserBlock.face), LASER_RANGE); - LaserBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + LaserBlock.sender = ShipPtr->playerNr; + LaserBlock.flags = IGNORE_SIMILAR; LaserBlock.pixoffs = VUX_OFFSET; LaserBlock.color = BUILD_COLOR (MAKE_RGB15 (0x0A, 0x1F, 0x0A), 0x0A); LaserArray[0] = initialize_laser (&LaserBlock); diff --git a/sc2/src/uqm/ships/yehat/yehat.c b/sc2/src/uqm/ships/yehat/yehat.c index 221526d47..4204bd1ad 100644 --- a/sc2/src/uqm/ships/yehat/yehat.c +++ b/sc2/src/uqm/ships/yehat/yehat.c @@ -124,8 +124,8 @@ initialize_standard_missiles (ELEMENT *ShipPtr, HELEMENT MissileArray[]) GetElementStarShip (ShipPtr, &StarShipPtr); MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = MissileBlock.index = StarShipPtr->ShipFacing; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = YEHAT_OFFSET; MissileBlock.speed = MISSILE_SPEED; MissileBlock.hit_points = MISSILE_HITS; @@ -265,12 +265,11 @@ yehat_postprocess (ELEMENT *ElementPtr) InsertElement (hShipElement, GetSuccElement (ElementPtr)); LockElement (hShipElement, &ShipElementPtr); - + ShipElementPtr->playerNr = ElementPtr->playerNr; ShipElementPtr->state_flags = /* in place of APPEARING */ (CHANGING | PRE_PROCESS | POST_PROCESS) - | FINITE_LIFE | NONSOLID - | (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + | FINITE_LIFE | NONSOLID; SetPrimType ( &(GLOBAL (DisplayArray))[ShipElementPtr->PrimIndex], STAMP_PRIM diff --git a/sc2/src/uqm/ships/zoqfot/zoqfot.c b/sc2/src/uqm/ships/zoqfot/zoqfot.c index 71fbabb6c..3679adc2d 100644 --- a/sc2/src/uqm/ships/zoqfot/zoqfot.c +++ b/sc2/src/uqm/ships/zoqfot/zoqfot.c @@ -154,8 +154,8 @@ initialize_spit (ELEMENT *ShipPtr, HELEMENT SpitArray[]) MissileBlock.farray = StarShipPtr->RaceDescPtr->ship_data.weapon; MissileBlock.face = StarShipPtr->ShipFacing; MissileBlock.index = 0; - MissileBlock.sender = (ShipPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + MissileBlock.sender = ShipPtr->playerNr; + MissileBlock.flags = IGNORE_SIMILAR; MissileBlock.pixoffs = ZOQFOTPIK_OFFSET; MissileBlock.speed = DISPLAY_TO_WORLD ( GetFrameCount (StarShipPtr->RaceDescPtr->ship_data.weapon[0])) << 1; @@ -210,8 +210,8 @@ spawn_tongue (ELEMENT *ElementPtr) TongueBlock.cy = ElementPtr->next.location.y; TongueBlock.farray = StarShipPtr->RaceDescPtr->ship_data.special; TongueBlock.face = TongueBlock.index = StarShipPtr->ShipFacing; - TongueBlock.sender = (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)) - | IGNORE_SIMILAR; + TongueBlock.sender = ElementPtr->playerNr; + TongueBlock.flags = IGNORE_SIMILAR; TongueBlock.pixoffs = 0; TongueBlock.speed = TONGUE_SPEED; TongueBlock.hit_points = TONGUE_HITS; diff --git a/sc2/src/uqm/shipstat.c b/sc2/src/uqm/shipstat.c index 16e895cd7..f1383aa68 100644 --- a/sc2/src/uqm/shipstat.c +++ b/sc2/src/uqm/shipstat.c @@ -141,7 +141,10 @@ InitShipStatus (SHIP_INFO *SIPtr, STARSHIP *StarShipPtr, RECT *pClipRect) CONTEXT OldContext; if (StarShipPtr) // set during battle + { + assert (StarShipPtr->playerNr >= 0); y = status_y_offsets[StarShipPtr->playerNr]; + } OldContext = SetContext (StatusContext); if (pClipRect) @@ -267,7 +270,7 @@ InitShipStatus (SHIP_INFO *SIPtr, STARSHIP *StarShipPtr, RECT *pClipRect) SetContextFont (OldFont); } } - else if (StarShipPtr->playerNr == 0) + else if (StarShipPtr->playerNr == RPG_PLAYER_NUM) { // This is SIS DrawCrewFuelString (y, 0); DrawShipNameString (GLOBAL_SIS (ShipName), (COUNT)~0, y); diff --git a/sc2/src/uqm/status.c b/sc2/src/uqm/status.c index df9a67cbc..830556c15 100644 --- a/sc2/src/uqm/status.c +++ b/sc2/src/uqm/status.c @@ -188,6 +188,7 @@ DrawCaptainsWindow (STARSHIP *StarShipPtr) BatchGraphics (); + assert (StarShipPtr->playerNr >= 0); y_offs = status_y_offsets[StarShipPtr->playerNr]; r.corner.x = CAPTAIN_XOFFS - 2; @@ -261,7 +262,8 @@ DrawCaptainsWindow (STARSHIP *StarShipPtr) s.origin.y = y; DrawStamp (&s); - if (StarShipPtr->captains_name_index == 0 && StarShipPtr->playerNr == 0) + if (StarShipPtr->captains_name_index == 0 + && StarShipPtr->playerNr == RPG_PLAYER_NUM) { // This is SIS TEXT t; @@ -335,7 +337,7 @@ DeltaCrew (ELEMENT *ElementPtr, SIZE crew_delta) SHIP_INFO *ShipInfoPtr; if (LOBYTE (GLOBAL (CurrentActivity)) == IN_LAST_BATTLE - && (ElementPtr->state_flags & BAD_GUY)) + && ElementPtr->playerNr == NPC_PLAYER_NUM) return (TRUE); /* Samatra can't be crew-modified */ retval = TRUE; @@ -374,7 +376,8 @@ PreProcessStatus (ELEMENT *ShipPtr) STARSHIP *StarShipPtr; GetElementStarShip (ShipPtr, &StarShipPtr); - if (StarShipPtr->captains_name_index || StarShipPtr->playerNr == 0) + if (StarShipPtr->captains_name_index + || StarShipPtr->playerNr == RPG_PLAYER_NUM) { // All except Sa-Matra, no captain's window there STATUS_FLAGS old_status_flags, cur_status_flags; CAPTAIN_STUFF *CSPtr; @@ -387,6 +390,7 @@ PreProcessStatus (ELEMENT *ShipPtr) old_status_flags &= (LEFT | RIGHT | THRUST | WEAPON | SPECIAL); if (old_status_flags) { + assert (StarShipPtr->playerNr >= 0); CaptainsWindow (CSPtr, status_y_offsets[StarShipPtr->playerNr], old_status_flags, cur_status_flags, 1); } @@ -399,13 +403,15 @@ PostProcessStatus (ELEMENT *ShipPtr) STARSHIP *StarShipPtr; GetElementStarShip (ShipPtr, &StarShipPtr); - if (StarShipPtr->captains_name_index || StarShipPtr->playerNr == 0) + if (StarShipPtr->captains_name_index + || StarShipPtr->playerNr == RPG_PLAYER_NUM) { // All except Sa-Matra, no captain's window there COORD y; STATUS_FLAGS cur_status_flags, old_status_flags; cur_status_flags = StarShipPtr->cur_status_flags; + assert (StarShipPtr->playerNr >= 0); y = status_y_offsets[StarShipPtr->playerNr]; if (ShipPtr->crew_level == 0) diff --git a/sc2/src/uqm/tactrans.c b/sc2/src/uqm/tactrans.c index 65f54aa29..28c343e7e 100644 --- a/sc2/src/uqm/tactrans.c +++ b/sc2/src/uqm/tactrans.c @@ -474,6 +474,7 @@ explosion_preprocess (ELEMENT *ShipPtr) PutElement (hElement); LockElement (hElement, &ElementPtr); + ElementPtr->playerNr = NEUTRAL_PLAYER_NUM; ElementPtr->state_flags = APPEARING | FINITE_LIFE | NONSOLID; ElementPtr->life_span = 9; SetPrimType (&DisplayArray[ElementPtr->PrimIndex], STAMP_PRIM); @@ -516,6 +517,7 @@ ship_death (ELEMENT *ShipPtr) { // Not running away and not reincarnating (Pkunk) // When a ship tries to run away, it is (dis)counted in DoRunAway(), // so when it dies while running away, we will not count it again + assert (StarShipPtr->playerNr >= 0); battle_counter[StarShipPtr->playerNr]--; } @@ -600,6 +602,7 @@ spawn_ion_trail (ELEMENT *ElementPtr) InsertElement (hIonElement, GetHeadElement ()); LockElement (hIonElement, &IonElementPtr); + IonElementPtr->playerNr = NEUTRAL_PLAYER_NUM; IonElementPtr->state_flags = APPEARING | FINITE_LIFE | NONSOLID; IonElementPtr->life_span = IonElementPtr->thrust_wait = ION_LIFE; SetPrimType (&DisplayArray[IonElementPtr->PrimIndex], POINT_PRIM); @@ -738,6 +741,7 @@ ship_transition (ELEMENT *ElementPtr) angle = FACING_TO_ANGLE (StarShipPtr->ShipFacing); LockElement (hShipImage, &ShipImagePtr); + ShipImagePtr->playerNr = NEUTRAL_PLAYER_NUM; ShipImagePtr->state_flags = APPEARING | FINITE_LIFE | NONSOLID; ShipImagePtr->life_span = ShipImagePtr->thrust_wait = TRANSITION_LIFE; diff --git a/sc2/src/uqm/uqmdebug.c b/sc2/src/uqm/uqmdebug.c index 17c4db483..14bdbf9c1 100644 --- a/sc2/src/uqm/uqmdebug.c +++ b/sc2/src/uqm/uqmdebug.c @@ -1469,9 +1469,9 @@ depositQualityString (BYTE quality) //////////////////////////////////////////////////////////////////////////// -// Which should be GOOD_GUY or BAD_GUY +// playerNr should be 0 or 1 STARSHIP* -findPlayerShip(ELEMENT_FLAGS which) { +findPlayerShip (SIZE playerNr) { HELEMENT hElement, hNextElement; for (hElement = GetHeadElement (); hElement; hElement = hNextElement) @@ -1482,7 +1482,7 @@ findPlayerShip(ELEMENT_FLAGS which) { hNextElement = GetSuccElement (ElementPtr); if ((ElementPtr->state_flags & PLAYER_SHIP) && - (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY)) == which) + ElementPtr->playerNr == playerNr) { STARSHIP *StarShipPtr; GetElementStarShip (ElementPtr, &StarShipPtr); @@ -1507,7 +1507,7 @@ resetCrewBattle(void) { (LOBYTE (GLOBAL (CurrentActivity)) == IN_HYPERSPACE)) return; - StarShipPtr = findPlayerShip (GOOD_GUY); + StarShipPtr = findPlayerShip (RPG_PLAYER_NUM); if (StarShipPtr == NULL || StarShipPtr->RaceDescPtr == NULL) return; @@ -1529,7 +1529,7 @@ resetEnergyBattle(void) { (LOBYTE (GLOBAL (CurrentActivity)) == IN_HYPERSPACE)) return; - StarShipPtr = findPlayerShip (GOOD_GUY); + StarShipPtr = findPlayerShip (RPG_PLAYER_NUM); if (StarShipPtr == NULL || StarShipPtr->RaceDescPtr == NULL) return; diff --git a/sc2/src/uqm/uqmdebug.h b/sc2/src/uqm/uqmdebug.h index c164ef199..173985cfc 100644 --- a/sc2/src/uqm/uqmdebug.h +++ b/sc2/src/uqm/uqmdebug.h @@ -162,8 +162,8 @@ const char *densityString (BYTE density); const char *depositQualityString (BYTE quality); -// Find a player ship. Setting which to BAD_GUY is only meaningful in battle. -STARSHIP* findPlayerShip(ELEMENT_FLAGS which); +// Find a player ship. Setting playerNr to non-0 is only meaningful in battle. +STARSHIP* findPlayerShip (SIZE playerNr); // Resets the crew of the first player (the bottom one) to its maximum. void resetCrewBattle(void); diff --git a/sc2/src/uqm/weapon.c b/sc2/src/uqm/weapon.c index 251b8f627..f0aa9ea62 100644 --- a/sc2/src/uqm/weapon.c +++ b/sc2/src/uqm/weapon.c @@ -44,10 +44,11 @@ initialize_laser (LASER_BLOCK *pLaserBlock) ELEMENT *LaserElementPtr; LockElement (hLaserElement, &LaserElementPtr); + LaserElementPtr->playerNr = pLaserBlock->sender; LaserElementPtr->hit_points = 1; LaserElementPtr->mass_points = 1; - LaserElementPtr->state_flags = - APPEARING | FINITE_LIFE | pLaserBlock->sender; + LaserElementPtr->state_flags = APPEARING | FINITE_LIFE + | pLaserBlock->flags; LaserElementPtr->life_span = LASER_LIFE; LaserElementPtr->collision_func = (CollisionFunc*)weapon_collision; LaserElementPtr->blast_offset = 1; @@ -89,8 +90,9 @@ initialize_missile (MISSILE_BLOCK *pMissileBlock) LockElement (hMissileElement, &MissileElementPtr); MissileElementPtr->hit_points = (BYTE)pMissileBlock->hit_points; MissileElementPtr->mass_points = (BYTE)pMissileBlock->damage; - MissileElementPtr->state_flags = - APPEARING | FINITE_LIFE | pMissileBlock->sender; + MissileElementPtr->playerNr = pMissileBlock->sender; + MissileElementPtr->state_flags = APPEARING | FINITE_LIFE + | pMissileBlock->flags; MissileElementPtr->life_span = pMissileBlock->life; SetPrimType (&DisplayArray[MissileElementPtr->PrimIndex], STAMP_PRIM); MissileElementPtr->current.image.farray = pMissileBlock->farray; @@ -139,8 +141,7 @@ weapon_collision (ELEMENT *WeaponElementPtr, POINT *pWPt, /* lasers from the same ship can't hit each other */ (GetPrimType (&DisplayArray[HitElementPtr->PrimIndex]) != LINE_PRIM || GetPrimType (&DisplayArray[WeaponElementPtr->PrimIndex]) != LINE_PRIM - || (HitElementPtr->state_flags & (GOOD_GUY | BAD_GUY)) != - (WeaponElementPtr->state_flags & (GOOD_GUY | BAD_GUY)))) + || !elementsOfSamePlayer (HitElementPtr, WeaponElementPtr))) #endif /* NEVER */ { do_damage (HitElementPtr, damage); @@ -181,8 +182,8 @@ weapon_collision (ELEMENT *WeaponElementPtr, POINT *pWPt, PutElement (hBlastElement); LockElement (hBlastElement, &BlastElementPtr); - BlastElementPtr->state_flags = APPEARING | FINITE_LIFE | NONSOLID - | (WeaponElementPtr->state_flags & (GOOD_GUY | BAD_GUY)); + BlastElementPtr->playerNr = WeaponElementPtr->playerNr; + BlastElementPtr->state_flags = APPEARING | FINITE_LIFE | NONSOLID; SetPrimType (&DisplayArray[BlastElementPtr->PrimIndex], STAMP_PRIM); BlastElementPtr->current.location.x = DISPLAY_TO_WORLD (pWPt->x); @@ -279,8 +280,7 @@ ModifySilhouette (ELEMENT *ElementPtr, STAMP *modify_stamp, } ObjectIntersect.IntersectStamp.origin.y += - (ElementPtr->state_flags & GOOD_GUY) ? - GOOD_GUY_YOFFS : BAD_GUY_YOFFS; + status_y_offsets[ElementPtr->playerNr]; if (modify_flags & MODIFY_SWAP) { @@ -330,8 +330,7 @@ TrackShip (ELEMENT *Tracker, COUNT *pfacing) LockElement (hShip, &Trackee); hNextShip = GetSuccElement (Trackee); if ((Trackee->state_flags & PLAYER_SHIP) - && (Trackee->state_flags & (GOOD_GUY | BAD_GUY)) != - (Tracker->state_flags & (GOOD_GUY | BAD_GUY)) + && !elementsOfSamePlayer (Trackee, Tracker) && (!OBJECT_CLOAKED (Trackee) || ((Tracker->state_flags & PLAYER_SHIP) && (Tracker->state_flags & APPEARING)) diff --git a/sc2/src/uqm/weapon.h b/sc2/src/uqm/weapon.h index 50ca705bd..52fd777d2 100644 --- a/sc2/src/uqm/weapon.h +++ b/sc2/src/uqm/weapon.h @@ -25,7 +25,8 @@ typedef struct { COORD cx, cy, ex, ey; - ELEMENT_FLAGS sender; + ELEMENT_FLAGS flags; + SIZE sender; // player number SIZE pixoffs; COUNT face; COLOR color; @@ -34,7 +35,8 @@ typedef struct typedef struct { COORD cx, cy; - ELEMENT_FLAGS sender; + ELEMENT_FLAGS flags; + SIZE sender; // player number SIZE pixoffs, speed, hit_points, damage; COUNT face, index, life; FRAME *farray;