]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
URS: Added player argument to GetResourceLimit.
authorLyberta <lyberta@lyberta.net>
Mon, 28 Aug 2017 05:10:18 +0000 (08:10 +0300)
committerLyberta <lyberta@lyberta.net>
Mon, 28 Aug 2017 05:10:18 +0000 (08:10 +0300)
qcsrc/common/t_items.qc
qcsrc/common/t_items.qh
qcsrc/server/client.qc
qcsrc/server/mutators/events.qh

index 95f315ad2714e0cf1ddbaedac0ecf26a56e299cc..458a0dcb2edc7e309dae661a5cfacadf47064576 100644 (file)
@@ -716,7 +716,7 @@ int GetResourceType(.float resource_property)
        return health;
 }
 
-float GetResourceLimit(int resource_type)
+float GetResourceLimit(entity player, int resource_type)
 {
        float limit;
        switch (resource_type)
@@ -767,8 +767,8 @@ float GetResourceLimit(int resource_type)
                        return 0;
                }
        }
-       MUTATOR_CALLHOOK(GetResourceLimit, resource_type, limit);
-       limit = M_ARGV(1, float);
+       MUTATOR_CALLHOOK(GetResourceLimit, player, resource_type, limit);
+       limit = M_ARGV(2, float);
        if (limit > RESOURCE_AMOUNT_HARD_LIMIT)
        {
                limit = RESOURCE_AMOUNT_HARD_LIMIT;
@@ -791,7 +791,7 @@ void GivePlayerResource(entity player, int resource_type, float amount)
        resource_type = M_ARGV(1, int);
        amount = M_ARGV(2, float);
        .float resource_property = GetResourceProperty(resource_type);
-       float max_amount = GetResourceLimit(resource_type);
+       float max_amount = GetResourceLimit(player, resource_type);
        player.(resource_property) = bound(player.(resource_property),
                player.(resource_property) + amount, max_amount);
        switch (resource_type)
index 38598e098c126dc0e8b4c4f12af2c20fb77d9f6f..613a78dde8503b4ebd2dcd2c0c4bc5f2f44f814c 100644 (file)
@@ -111,9 +111,10 @@ int GetResourceType(.float resource_property);
 .float GetResourceProperty(int resource_type);
 
 /// \brief Returns the maximum amount of the given resource.
+/// \param[in] player Player to check.
 /// \param[in] resource_type Type of the resource (a RESOURCE_* constant).
 /// \return Maximum amount of the given resource.
-float GetResourceLimit(int resource_type);
+float GetResourceLimit(entity player, int resource_type);
 
 /// \brief Gives player a resource such as health, armor or ammo.
 /// \param[in,out] player Player to give resource to.
index 9d4df94e77070631dd98a239a37617633895c758..b7d3a294c5d0bafec6cf1e88728d810e3d152171 100644 (file)
@@ -1628,8 +1628,8 @@ void player_regen(entity this)
                float mina, maxa, limith, limita;
                maxa = autocvar_g_balance_armor_rotstable;
                mina = autocvar_g_balance_armor_regenstable;
-               limith = GetResourceLimit(RESOURCE_HEALTH);
-               limita = GetResourceLimit(RESOURCE_ARMOR);
+               limith = GetResourceLimit(this, RESOURCE_HEALTH);
+               limita = GetResourceLimit(this, RESOURCE_ARMOR);
 
                regen_health_rotstable = regen_health_rotstable * max_mod;
                regen_health_stable = regen_health_stable * max_mod;
@@ -1656,7 +1656,7 @@ void player_regen(entity this)
 
                maxf = autocvar_g_balance_fuel_rotstable;
                minf = autocvar_g_balance_fuel_regenstable;
-               limitf = GetResourceLimit(RESOURCE_FUEL);
+               limitf = GetResourceLimit(this, RESOURCE_FUEL);
 
                this.ammo_fuel = CalcRotRegen(this.ammo_fuel, minf, autocvar_g_balance_fuel_regen, autocvar_g_balance_fuel_regenlinear, frametime * (time > this.pauseregen_finished) * ((this.items & ITEM_JetpackRegen.m_itemid) != 0), maxf, autocvar_g_balance_fuel_rot, autocvar_g_balance_fuel_rotlinear, frametime * (time > this.pauserotfuel_finished), limitf);
        }
index eddb1e5caaf7fb09991760723c7a8f55f38df5ba..6c286c60728a1a112d34bcd32fee974afb25cd0e 100644 (file)
@@ -623,9 +623,10 @@ enum {
 /** Called when the amount of player resources changes. Can be used to override
 resource limit. */
 #define EV_GetResourceLimit(i, o) \
-       /** resource type */ i(int, MUTATOR_ARGV_0_int) \
-       /** limit */         i(float, MUTATOR_ARGV_1_float) \
-       /**/                 o(float, MUTATOR_ARGV_1_float) \
+       /** player */        i(entity, MUTATOR_ARGV_0_entity) \
+       /** resource type */ i(int, MUTATOR_ARGV_1_int) \
+       /** limit */         i(float, MUTATOR_ARGV_2_float) \
+       /**/                 o(float, MUTATOR_ARGV_2_float) \
        /**/
 MUTATOR_HOOKABLE(GetResourceLimit, EV_GetResourceLimit);