]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Random start weapons: Move ammo into an entity.
authorLyberta <lyberta@lyberta.net>
Sat, 23 Sep 2017 06:26:35 +0000 (09:26 +0300)
committerLyberta <lyberta@lyberta.net>
Sat, 23 Sep 2017 06:26:35 +0000 (09:26 +0300)
qcsrc/common/t_items.qc
qcsrc/common/t_items.qh
qcsrc/server/client.qc
qcsrc/server/miscfunctions.qc
qcsrc/server/miscfunctions.qh

index 11d0911ab8d9497e05e1d703d59f1f03b1f32176..3874a427491924c4ac375d5a77feb43b2f118594 100644 (file)
@@ -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));
        }
 }
 
index 75f982c996538ed5b2bc39ad9bb6ba7e1472d88d..80385971ab34d40a1ea17dbcc42e73714042aa9a 100644 (file)
@@ -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);
 
index ee6fa4fa627cf9f8ad5486c75b961d6b4b311db1..d601f76fbe0d4b99e28f395a47ddebc5665a1d61 100644 (file)
@@ -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);
 
index 78652f6f0cc0e75438dc387eb34b169437f12d71..dc57af27470ccfc7ac8979dcd10aae5924f0b3ed 100644 (file)
@@ -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);
index 8dc3faa18ab26a68b6e63d75a84924ec4dff2e47..4544a5e0959f88cc22a85755e947a5d717f6e521 100644 (file)
@@ -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;