Only give secondaries that exist

This commit is contained in:
Kp 2013-10-26 19:52:41 +00:00
parent 58958e091b
commit 6fc8d110f3
4 changed files with 16 additions and 7 deletions

View file

@ -195,6 +195,8 @@ extern int weapon_info_read_n(weapon_info *wi, int n, PHYSFS_file *fp, int file_
#define HAS_FUSION_FLAG HAS_PRIMARY_FLAG(FUSION_INDEX)
#define HAS_CONCUSSION_FLAG HAS_SECONDARY_FLAG(CONCUSSION_INDEX)
#define HAS_HOMING_FLAG HAS_SECONDARY_FLAG(HOMING_INDEX)
#define HAS_PROXIMITY_BOMB_FLAG HAS_SECONDARY_FLAG(PROXIMITY_INDEX)
#define HAS_SMART_FLAG HAS_SECONDARY_FLAG(SMART_INDEX)
#define HAS_MEGA_FLAG HAS_SECONDARY_FLAG(MEGA_INDEX)
@ -224,6 +226,7 @@ extern int weapon_info_read_n(weapon_info *wi, int n, PHYSFS_file *fp, int file_
#define PROXIMITY_INDEX 2
#define SMART_INDEX 3
#define MEGA_INDEX 4
#if defined(DXX_BUILD_DESCENT_I)
#define NUM_SHAREWARE_WEAPONS 3 //in shareware, old get first 3 of each
@ -240,6 +243,12 @@ extern int weapon_info_read_n(weapon_info *wi, int n, PHYSFS_file *fp, int file_
#define VULCAN_AMMO_SCALE 0xcc163 //(0x198300/2) //multiply ammo by this before displaying
#define NUM_SMART_CHILDREN 6 // Number of smart children created by default.
#define HAS_FLASH_FLAG HAS_SECONDARY_FLAG(SMISSILE1_INDEX)
#define HAS_GUIDED_FLAG HAS_SECONDARY_FLAG(GUIDED_INDEX)
#define HAS_SMART_BOMB_FLAG HAS_SECONDARY_FLAG(SMART_MINE_INDEX)
#define HAS_MERCURY_FLAG HAS_SECONDARY_FLAG(SMISSILE4_INDEX)
#define HAS_EARTHSHAKER_FLAG HAS_SECONDARY_FLAG(SMISSILE5_INDEX)
#endif
extern int N_weapon_types;

View file

@ -1459,7 +1459,7 @@ static int FinalCheats(int key)
HUD_init_message_literal(HM_DEFAULT, TXT_WOWIE_ZOWIE);
Players[Player_num].primary_weapon_flags |= (HAS_LASER_FLAG | HAS_VULCAN_FLAG | HAS_SPREADFIRE_FLAG);
Players[Player_num].secondary_weapon_flags |= 0xff ^ (HAS_SMART_FLAG | HAS_MEGA_FLAG);
Players[Player_num].secondary_weapon_flags |= (HAS_CONCUSSION_FLAG | HAS_HOMING_FLAG | HAS_PROXIMITY_BOMB_FLAG);
Players[Player_num].vulcan_ammo = Primary_ammo_max[VULCAN_INDEX];
for (unsigned i=0; i<3; i++)
@ -1479,7 +1479,7 @@ static int FinalCheats(int key)
HUD_init_message(HM_DEFAULT, "SUPER %s",TXT_WOWIE_ZOWIE);
Players[Player_num].primary_weapon_flags |= (HAS_LASER_FLAG | HAS_VULCAN_FLAG | HAS_SPREADFIRE_FLAG | HAS_PLASMA_FLAG | HAS_FUSION_FLAG);
Players[Player_num].secondary_weapon_flags = 0xff;
Players[Player_num].secondary_weapon_flags |= (HAS_CONCUSSION_FLAG | HAS_HOMING_FLAG | HAS_PROXIMITY_BOMB_FLAG | HAS_SMART_FLAG | HAS_MEGA_FLAG);
Players[Player_num].vulcan_ammo = Primary_ammo_max[VULCAN_INDEX];
for (unsigned i=0; i<MAX_SECONDARY_WEAPONS; i++)
@ -1507,12 +1507,12 @@ static int FinalCheats(int key)
if (Piggy_hamfile_version < 3) // SHAREWARE
{
Players[Player_num].primary_weapon_flags |= (HAS_LASER_FLAG | HAS_VULCAN_FLAG | HAS_SPREADFIRE_FLAG | HAS_PLASMA_FLAG) | (HAS_GAUSS_FLAG | HAS_HELIX_FLAG);
Players[Player_num].secondary_weapon_flags = ~((1<<SMISSILE4_INDEX) | (1<<MEGA_INDEX) | (1<<SMISSILE5_INDEX));
Players[Player_num].secondary_weapon_flags |= (HAS_CONCUSSION_FLAG | HAS_HOMING_FLAG | HAS_PROXIMITY_BOMB_FLAG | HAS_SMART_FLAG) | (HAS_FLASH_FLAG | HAS_GUIDED_FLAG | HAS_SMART_BOMB_FLAG);
}
else
{
Players[Player_num].primary_weapon_flags |= (HAS_LASER_FLAG | HAS_VULCAN_FLAG | HAS_SPREADFIRE_FLAG | HAS_PLASMA_FLAG | HAS_FUSION_FLAG) | (HAS_GAUSS_FLAG | HAS_HELIX_FLAG | HAS_PHOENIX_FLAG | HAS_OMEGA_FLAG);
Players[Player_num].secondary_weapon_flags = 0xffff;
Players[Player_num].secondary_weapon_flags |= (HAS_CONCUSSION_FLAG | HAS_HOMING_FLAG | HAS_PROXIMITY_BOMB_FLAG | HAS_SMART_FLAG | HAS_MEGA_FLAG) | (HAS_FLASH_FLAG | HAS_GUIDED_FLAG | HAS_SMART_BOMB_FLAG | HAS_MERCURY_FLAG | HAS_EARTHSHAKER_FLAG);
}
Players[Player_num].vulcan_ammo = Primary_ammo_max[VULCAN_INDEX];

View file

@ -157,10 +157,10 @@ void do_megawow_powerup(int quantity)
powerup_basic(30, 0, 30, 1, "MEGA-WOWIE-ZOWIE!");
#if defined(DXX_BUILD_DESCENT_I)
Players[Player_num].primary_weapon_flags = (HAS_LASER_FLAG | HAS_VULCAN_FLAG | HAS_SPREADFIRE_FLAG | HAS_PLASMA_FLAG | HAS_FUSION_FLAG);
Players[Player_num].secondary_weapon_flags = 0xff;
Players[Player_num].secondary_weapon_flags |= (HAS_CONCUSSION_FLAG | HAS_HOMING_FLAG | HAS_PROXIMITY_BOMB_FLAG | HAS_SMART_FLAG | HAS_MEGA_FLAG);
#elif defined(DXX_BUILD_DESCENT_II)
Players[Player_num].primary_weapon_flags = (HAS_LASER_FLAG | HAS_VULCAN_FLAG | HAS_SPREADFIRE_FLAG | HAS_PLASMA_FLAG | HAS_FUSION_FLAG) | (HAS_GAUSS_FLAG | HAS_HELIX_FLAG | HAS_PHOENIX_FLAG | HAS_OMEGA_FLAG);
Players[Player_num].secondary_weapon_flags = 0xffff;
Players[Player_num].secondary_weapon_flags |= (HAS_CONCUSSION_FLAG | HAS_HOMING_FLAG | HAS_PROXIMITY_BOMB_FLAG | HAS_SMART_FLAG | HAS_MEGA_FLAG) | (HAS_FLASH_FLAG | HAS_GUIDED_FLAG | HAS_SMART_BOMB_FLAG | HAS_MERCURY_FLAG | HAS_EARTHSHAKER_FLAG);
#endif
Players[Player_num].vulcan_ammo = VULCAN_AMMO_MAX;

View file

@ -238,7 +238,7 @@ int player_has_weapon(int weapon_num, int secondary_flag)
} else {
weapon_index = Secondary_weapon_to_weapon_info[weapon_num];
if (Players[Player_num].secondary_weapon_flags & (1 << weapon_num))
if (Players[Player_num].secondary_weapon_flags & HAS_SECONDARY_FLAG(weapon_num))
return_value |= HAS_WEAPON_FLAG;
if (Weapon_info[weapon_index].ammo_usage <= Players[Player_num].secondary_ammo[weapon_num])