From: <av...@us...> - 2009-11-04 21:42:47
|
Revision: 3273 http://sc2.svn.sourceforge.net/sc2/?rev=3273&view=rev Author: avolkov Date: 2009-11-04 21:42:39 +0000 (Wed, 04 Nov 2009) Log Message: ----------- 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) Modified Paths: -------------- trunk/sc2/src/uqm/comm.c trunk/sc2/src/uqm/cyborg.c trunk/sc2/src/uqm/element.h trunk/sc2/src/uqm/encount.c trunk/sc2/src/uqm/hyper.c trunk/sc2/src/uqm/init.c trunk/sc2/src/uqm/intel.c trunk/sc2/src/uqm/melee.c trunk/sc2/src/uqm/misc.c trunk/sc2/src/uqm/netplay/checksum.h trunk/sc2/src/uqm/pickship.c trunk/sc2/src/uqm/process.c trunk/sc2/src/uqm/races.h trunk/sc2/src/uqm/ship.c trunk/sc2/src/uqm/ships/androsyn/androsyn.c trunk/sc2/src/uqm/ships/arilou/arilou.c trunk/sc2/src/uqm/ships/blackurq/blackurq.c trunk/sc2/src/uqm/ships/chenjesu/chenjesu.c trunk/sc2/src/uqm/ships/chmmr/chmmr.c trunk/sc2/src/uqm/ships/druuge/druuge.c trunk/sc2/src/uqm/ships/human/human.c trunk/sc2/src/uqm/ships/ilwrath/ilwrath.c trunk/sc2/src/uqm/ships/lastbat/lastbat.c trunk/sc2/src/uqm/ships/melnorme/melnorme.c trunk/sc2/src/uqm/ships/mmrnmhrm/mmrnmhrm.c trunk/sc2/src/uqm/ships/mycon/mycon.c trunk/sc2/src/uqm/ships/orz/orz.c trunk/sc2/src/uqm/ships/pkunk/pkunk.c trunk/sc2/src/uqm/ships/shofixti/shofixti.c trunk/sc2/src/uqm/ships/sis_ship/sis_ship.c trunk/sc2/src/uqm/ships/slylandr/slylandr.c trunk/sc2/src/uqm/ships/spathi/spathi.c trunk/sc2/src/uqm/ships/supox/supox.c trunk/sc2/src/uqm/ships/syreen/syreen.c trunk/sc2/src/uqm/ships/thradd/thradd.c trunk/sc2/src/uqm/ships/umgah/umgah.c trunk/sc2/src/uqm/ships/urquan/urquan.c trunk/sc2/src/uqm/ships/utwig/utwig.c trunk/sc2/src/uqm/ships/vux/vux.c trunk/sc2/src/uqm/ships/yehat/yehat.c trunk/sc2/src/uqm/ships/zoqfot/zoqfot.c trunk/sc2/src/uqm/shipstat.c trunk/sc2/src/uqm/status.c trunk/sc2/src/uqm/tactrans.c trunk/sc2/src/uqm/uqmdebug.c trunk/sc2/src/uqm/uqmdebug.h trunk/sc2/src/uqm/weapon.c trunk/sc2/src/uqm/weapon.h Modified: trunk/sc2/src/uqm/comm.c =================================================================== --- trunk/sc2/src/uqm/comm.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/comm.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -1436,7 +1436,7 @@ || (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 @@ if (status) { // Start combat - BuildBattle (0); + BuildBattle (RPG_PLAYER_NUM); EncounterBattle (); } else Modified: trunk/sc2/src/uqm/cyborg.c =================================================================== --- trunk/sc2/src/uqm/cyborg.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/cyborg.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -603,8 +603,7 @@ 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 @@ } } } - 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 @@ } 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) { Modified: trunk/sc2/src/uqm/element.h =================================================================== --- trunk/sc2/src/uqm/element.h 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/element.h 2009-11-04 21:42:39 UTC (rev 3273) @@ -108,8 +108,10 @@ 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 @@ 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 Modified: trunk/sc2/src/uqm/encount.c =================================================================== --- trunk/sc2/src/uqm/encount.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/encount.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -104,7 +104,7 @@ return; } - if (which_player == 0) + if (which_player == RPG_PLAYER_NUM) pQueue = &GLOBAL (built_ship_q); else { @@ -141,7 +141,6 @@ { 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 @@ 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 Modified: trunk/sc2/src/uqm/hyper.c =================================================================== --- trunk/sc2/src/uqm/hyper.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/hyper.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -751,6 +751,7 @@ 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 @@ ELEMENT *HyperSpaceElementPtr; LockElement (hHyperSpaceElement, &HyperSpaceElementPtr); + HyperSpaceElementPtr->playerNr = NEUTRAL_PLAYER_NUM; HyperSpaceElementPtr->state_flags = APPEARING | FINITE_LIFE | NONSOLID; SetPrimType (&DisplayArray[HyperSpaceElementPtr->PrimIndex], STAMP_PRIM); Modified: trunk/sc2/src/uqm/init.c =================================================================== --- trunk/sc2/src/uqm/init.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/init.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -165,8 +165,7 @@ 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); Modified: trunk/sc2/src/uqm/intel.c =================================================================== --- trunk/sc2/src/uqm/intel.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/intel.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -43,7 +43,7 @@ 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; } Modified: trunk/sc2/src/uqm/melee.c =================================================================== --- trunk/sc2/src/uqm/melee.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/melee.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -1687,7 +1687,6 @@ 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 Modified: trunk/sc2/src/uqm/misc.c =================================================================== --- trunk/sc2/src/uqm/misc.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/misc.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -39,6 +39,7 @@ 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 @@ 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 @@ 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 @@ 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], Modified: trunk/sc2/src/uqm/netplay/checksum.h =================================================================== --- trunk/sc2/src/uqm/netplay/checksum.h 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/netplay/checksum.h 2009-11-04 21:42:39 UTC (rev 3273) @@ -36,9 +36,7 @@ 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 Modified: trunk/sc2/src/uqm/pickship.c =================================================================== --- trunk/sc2/src/uqm/pickship.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/pickship.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -403,7 +403,6 @@ * 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 (); Modified: trunk/sc2/src/uqm/process.c =================================================================== --- trunk/sc2/src/uqm/process.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/process.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -684,7 +684,7 @@ 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)); Modified: trunk/sc2/src/uqm/races.h =================================================================== --- trunk/sc2/src/uqm/races.h 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/races.h 2009-11-04 21:42:39 UTC (rev 3273) @@ -36,10 +36,7 @@ #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 @@ 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 @@ 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) { Modified: trunk/sc2/src/uqm/ship.c =================================================================== --- trunk/sc2/src/uqm/ship.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ship.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -168,9 +168,9 @@ { // 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 @@ if (!RDPtr) return FALSE; - RDPtr->ship_info.ship_flags |= StarShipPtr->which_side; StarShipPtr->RaceDescPtr = RDPtr; StarShipPtr->ship_input_state = 0; @@ -430,10 +429,10 @@ 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 @@ 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 Modified: trunk/sc2/src/uqm/ships/androsyn/androsyn.c =================================================================== --- trunk/sc2/src/uqm/ships/androsyn/androsyn.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/androsyn/androsyn.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -200,8 +200,8 @@ 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; Modified: trunk/sc2/src/uqm/ships/arilou/arilou.c =================================================================== --- trunk/sc2/src/uqm/ships/arilou/arilou.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/arilou/arilou.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -127,8 +127,8 @@ 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); Modified: trunk/sc2/src/uqm/ships/blackurq/blackurq.c =================================================================== --- trunk/sc2/src/uqm/ships/blackurq/blackurq.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/blackurq/blackurq.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -322,8 +322,8 @@ 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 @@ 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 @@ 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; Modified: trunk/sc2/src/uqm/ships/chenjesu/chenjesu.c =================================================================== --- trunk/sc2/src/uqm/ships/chenjesu/chenjesu.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/chenjesu/chenjesu.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -133,9 +133,8 @@ 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 @@ #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 @@ 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 @@ && 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 @@ 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; Modified: trunk/sc2/src/uqm/ships/chmmr/chmmr.c =================================================================== --- trunk/sc2/src/uqm/ships/chmmr/chmmr.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/chmmr/chmmr.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -157,9 +157,9 @@ 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 @@ + 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 @@ 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 @@ && (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 @@ 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 @@ { 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 @@ - 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 @@ 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 @@ 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 @@ 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; Modified: trunk/sc2/src/uqm/ships/druuge/druuge.c =================================================================== --- trunk/sc2/src/uqm/ships/druuge/druuge.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/druuge/druuge.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -164,8 +164,8 @@ 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; Modified: trunk/sc2/src/uqm/ships/human/human.c =================================================================== --- trunk/sc2/src/uqm/ships/human/human.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/human/human.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -165,11 +165,10 @@ 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 @@ - 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 @@ 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; Modified: trunk/sc2/src/uqm/ships/ilwrath/ilwrath.c =================================================================== --- trunk/sc2/src/uqm/ships/ilwrath/ilwrath.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/ilwrath/ilwrath.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -190,8 +190,8 @@ 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; Modified: trunk/sc2/src/uqm/ships/lastbat/lastbat.c =================================================================== --- trunk/sc2/src/uqm/ships/lastbat/lastbat.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/lastbat/lastbat.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -157,7 +157,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 Modified: trunk/sc2/src/uqm/ships/melnorme/melnorme.c =================================================================== --- trunk/sc2/src/uqm/ships/melnorme/melnorme.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/melnorme/melnorme.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -312,8 +312,8 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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; Modified: trunk/sc2/src/uqm/ships/mmrnmhrm/mmrnmhrm.c =================================================================== --- trunk/sc2/src/uqm/ships/mmrnmhrm/mmrnmhrm.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/mmrnmhrm/mmrnmhrm.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -248,8 +248,7 @@ 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 @@ 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 @@ 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; Modified: trunk/sc2/src/uqm/ships/mycon/mycon.c =================================================================== --- trunk/sc2/src/uqm/ships/mycon/mycon.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/mycon/mycon.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -306,7 +306,8 @@ 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; Modified: trunk/sc2/src/uqm/ships/orz/orz.c =================================================================== --- trunk/sc2/src/uqm/ships/orz/orz.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/orz/orz.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -116,8 +116,7 @@ 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 @@ + 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 @@ { 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 @@ && 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 @@ 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 @@ 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 @@ && !(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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 = Modified: trunk/sc2/src/uqm/ships/pkunk/pkunk.c =================================================================== --- trunk/sc2/src/uqm/ships/pkunk/pkunk.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/pkunk/pkunk.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -141,8 +141,8 @@ 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 @@ } 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 @@ 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 @@ { 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; Modified: trunk/sc2/src/uqm/ships/shofixti/shofixti.c =================================================================== --- trunk/sc2/src/uqm/ships/shofixti/shofixti.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/shofixti/shofixti.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -125,8 +125,8 @@ 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 @@ 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 @@ 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; Modified: trunk/sc2/src/uqm/ships/sis_ship/sis_ship.c =================================================================== --- trunk/sc2/src/uqm/ships/sis_ship/sis_ship.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/sis_ship/sis_ship.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -314,11 +314,10 @@ 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 @@ - 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 @@ 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; Modified: trunk/sc2/src/uqm/ships/slylandr/slylandr.c =================================================================== --- trunk/sc2/src/uqm/ships/slylandr/slylandr.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/slylandr/slylandr.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -152,8 +152,8 @@ 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 @@ 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)) { Modified: trunk/sc2/src/uqm/ships/spathi/spathi.c =================================================================== --- trunk/sc2/src/uqm/ships/spathi/spathi.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/spathi/spathi.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -154,7 +154,8 @@ 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 @@ 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; Modified: trunk/sc2/src/uqm/ships/supox/supox.c =================================================================== --- trunk/sc2/src/uqm/ships/supox/supox.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/supox/supox.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -189,8 +189,8 @@ 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; Modified: trunk/sc2/src/uqm/ships/syreen/syreen.c =================================================================== --- trunk/sc2/src/uqm/ships/syreen/syreen.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/syreen/syreen.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -125,8 +125,8 @@ 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 @@ 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 @@ 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; Modified: trunk/sc2/src/uqm/ships/thradd/thradd.c =================================================================== --- trunk/sc2/src/uqm/ships/thradd/thradd.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/thradd/thradd.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -254,8 +254,8 @@ 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 @@ 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; Modified: trunk/sc2/src/uqm/ships/umgah/umgah.c =================================================================== --- trunk/sc2/src/uqm/ships/umgah/umgah.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/umgah/umgah.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -274,8 +274,8 @@ 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; Modified: trunk/sc2/src/uqm/ships/urquan/urquan.c =================================================================== --- trunk/sc2/src/uqm/ships/urquan/urquan.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/urquan/urquan.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -126,8 +126,8 @@ 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 @@ 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 @@ 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); Modified: trunk/sc2/src/uqm/ships/utwig/utwig.c =================================================================== --- trunk/sc2/src/uqm/ships/utwig/utwig.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/utwig/utwig.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -130,8 +130,8 @@ 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; Modified: trunk/sc2/src/uqm/ships/vux/vux.c =================================================================== --- trunk/sc2/src/uqm/ships/vux/vux.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/vux/vux.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -203,8 +203,8 @@ 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 @@ 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); Modified: trunk/sc2/src/uqm/ships/yehat/yehat.c =================================================================== --- trunk/sc2/src/uqm/ships/yehat/yehat.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/yehat/yehat.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -124,8 +124,8 @@ 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 @@ 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 Modified: trunk/sc2/src/uqm/ships/zoqfot/zoqfot.c =================================================================== --- trunk/sc2/src/uqm/ships/zoqfot/zoqfot.c 2009-11-02 08:04:51 UTC (rev 3272) +++ trunk/sc2/src/uqm/ships/zoqfot/zoqfot.c 2009-11-04 21:42:39 UTC (rev 3273) @@ -154,8 +154,8 @@ 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 @@ 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->pl... [truncated message content] |