From a9477bba522b949a13b41ff5ca32e81ea60ca21e Mon Sep 17 00:00:00 2001 From: Lyberta Date: Sat, 23 Sep 2017 09:26:35 +0300 Subject: [PATCH] Random start weapons: Move ammo into an entity. --- qcsrc/common/t_items.qc | 33 ++++----------------------------- qcsrc/common/t_items.qh | 8 ++------ qcsrc/server/client.qc | 4 +--- qcsrc/server/miscfunctions.qc | 34 ++++++++++++++++++++++++---------- qcsrc/server/miscfunctions.qh | 13 +++---------- 5 files changed, 34 insertions(+), 58 deletions(-) diff --git a/qcsrc/common/t_items.qc b/qcsrc/common/t_items.qc index 11d0911ab..3874a4274 100644 --- a/qcsrc/common/t_items.qc +++ b/qcsrc/common/t_items.qc @@ -683,7 +683,7 @@ void Item_ScheduleInitialRespawn(entity e) } void GiveRandomWeapons(entity receiver, int num_weapons, string weapon_names, - float shells, float bullets, float rockets, float cells, float plasma) + entity ammo_entity) { if (num_weapons == 0) { @@ -720,34 +720,9 @@ void GiveRandomWeapons(entity receiver, int num_weapons, string weapon_names, { continue; } - switch (RandomSelection_chosen_ent.ammo_type) - { - case (RESOURCE_SHELLS): - { - GiveResource(receiver, RESOURCE_SHELLS, shells); - break; - } - case (RESOURCE_BULLETS): - { - GiveResource(receiver, RESOURCE_BULLETS, bullets); - break; - } - case (RESOURCE_ROCKETS): - { - GiveResource(receiver, RESOURCE_ROCKETS, rockets); - break; - } - case (RESOURCE_CELLS): - { - GiveResource(receiver, RESOURCE_CELLS, cells); - break; - } - case (RESOURCE_PLASMA): - { - GiveResource(receiver, RESOURCE_PLASMA, plasma); - break; - } - } + GiveResource(receiver, RandomSelection_chosen_ent.ammo_type, + GetResourceAmount(ammo_entity, + RandomSelection_chosen_ent.ammo_type)); } } diff --git a/qcsrc/common/t_items.qh b/qcsrc/common/t_items.qh index 75f982c99..80385971a 100644 --- a/qcsrc/common/t_items.qh +++ b/qcsrc/common/t_items.qh @@ -88,14 +88,10 @@ void Item_ScheduleInitialRespawn(entity e); /// \param[in,out] receiver Entity to give weapons to. /// \param[in] num_weapons Number of weapons to give. /// \param[in] weapon_names Names of weapons to give separated by spaces. -/// \param[in] shells Amount of shells to give with shell-based weapon. -/// \param[in] bullets Amount of bullets to give with bullet-based weapon. -/// \param[in] rockets Amount of rockets to give with rocket-based weapon. -/// \param[in] cells Amount of cells to give with cell-based weapon. -/// \param[in] plasma Amount of plasma to give with plasma-based weapon. +/// \param[in] ammo Entity containing the ammo amount for each possible weapon. /// \return No return. void GiveRandomWeapons(entity receiver, int num_weapons, string weapon_names, - float shells, float bullets, float rockets, float cells, float plasma); + entity ammo_entity); float Item_GiveAmmoTo(entity item, entity player, int resource_type, float ammomax); diff --git a/qcsrc/server/client.qc b/qcsrc/server/client.qc index ee6fa4fa6..d601f76fb 100644 --- a/qcsrc/server/client.qc +++ b/qcsrc/server/client.qc @@ -548,9 +548,7 @@ void PutPlayerInServer(entity this) this.armorvalue = start_armorvalue; this.weapons = start_weapons; GiveRandomWeapons(this, random_start_weapons_count, - cvar_string("g_random_start_weapons"), random_start_shells, - random_start_bullets, random_start_rockets, random_start_cells, - random_start_plasma); + cvar_string("g_random_start_weapons"), random_start_ammo); } SetSpectatee_status(this, 0); diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index 78652f6f0..dc57af274 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -525,6 +525,10 @@ void readplayerstartcvars() start_ammo_rockets = 0; start_ammo_cells = 0; start_ammo_plasma = 0; + if (random_start_ammo == NULL) + { + random_start_ammo = spawn(); + } start_health = cvar("g_balance_health_start"); start_armorvalue = cvar("g_balance_armor_start"); @@ -644,11 +648,16 @@ void readplayerstartcvars() start_ammo_plasma = cvar("g_start_ammo_plasma"); start_ammo_fuel = cvar("g_start_ammo_fuel"); random_start_weapons_count = cvar("g_random_start_weapons_count"); - random_start_shells = cvar("g_random_start_shells"); - random_start_bullets = cvar("g_random_start_bullets"); - random_start_rockets = cvar("g_random_start_rockets"); - random_start_cells = cvar("g_random_start_cells"); - random_start_plasma = cvar("g_random_start_plasma"); + SetResourceAmount(random_start_ammo, RESOURCE_SHELLS, cvar( + "g_random_start_shells")); + SetResourceAmount(random_start_ammo, RESOURCE_BULLETS, cvar( + "g_random_start_bullets")); + SetResourceAmount(random_start_ammo, RESOURCE_ROCKETS, + cvar("g_random_start_rockets")); + SetResourceAmount(random_start_ammo, RESOURCE_CELLS, cvar( + "g_random_start_cells")); + SetResourceAmount(random_start_ammo, RESOURCE_PLASMA, cvar( + "g_random_start_plasma")); } if (warmup_stage) @@ -717,11 +726,16 @@ void readplayerstartcvars() start_ammo_cells = max(0, start_ammo_cells); start_ammo_plasma = max(0, start_ammo_plasma); start_ammo_fuel = max(0, start_ammo_fuel); - random_start_shells = max(0, random_start_shells); - random_start_bullets = max(0, random_start_bullets); - random_start_rockets = max(0, random_start_rockets); - random_start_cells = max(0, random_start_cells); - random_start_plasma = max(0, random_start_plasma); + SetResourceAmount(random_start_ammo, RESOURCE_SHELLS, max(0, + GetResourceAmount(random_start_ammo, RESOURCE_SHELLS))); + SetResourceAmount(random_start_ammo, RESOURCE_BULLETS, max(0, + GetResourceAmount(random_start_ammo, RESOURCE_BULLETS))); + SetResourceAmount(random_start_ammo, RESOURCE_ROCKETS, max(0, + GetResourceAmount(random_start_ammo, RESOURCE_ROCKETS))); + SetResourceAmount(random_start_ammo, RESOURCE_CELLS, max(0, + GetResourceAmount(random_start_ammo, RESOURCE_CELLS))); + SetResourceAmount(random_start_ammo, RESOURCE_PLASMA, max(0, + GetResourceAmount(random_start_ammo, RESOURCE_PLASMA))); warmup_start_ammo_shells = max(0, warmup_start_ammo_shells); warmup_start_ammo_nails = max(0, warmup_start_ammo_nails); diff --git a/qcsrc/server/miscfunctions.qh b/qcsrc/server/miscfunctions.qh index 8dc3faa18..4544a5e09 100644 --- a/qcsrc/server/miscfunctions.qh +++ b/qcsrc/server/miscfunctions.qh @@ -190,16 +190,9 @@ float start_ammo_plasma; float start_ammo_fuel; /// \brief Number of random start weapons to give to players. int random_start_weapons_count; -/// \brief Amount of shells to give with a shell-based random start weapon. -float random_start_shells; -/// \brief Amount of bullets to give with a bullet-based random start weapon. -float random_start_bullets; -/// \brief Amount of rockets to give with a rocket-based random start weapon. -float random_start_rockets; -/// \brief Amount of cells to give with a cell-based random start weapon. -float random_start_cells; -/// \brief Amount of plasma to give with a plasma-based random start weapon. -float random_start_plasma; +/// \brief Entity that contains amount of ammo to give with random start +/// weapons. +entity random_start_ammo; float start_health; float start_armorvalue; WepSet warmup_start_weapons; -- 2.39.2