X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Ft_items.qc;h=e3a2c8be439a5bcb5d3bc5dd3341856cbc0a2e74;hp=c18d704097994fee0f13e924f562c21a02e09f42;hb=45ccf5629b069c240a72cdabae5bf1605733f29e;hpb=daea4b84ea67263f00814befde8f387466feaa2d diff --git a/qcsrc/common/t_items.qc b/qcsrc/common/t_items.qc index c18d704097..e3a2c8be43 100644 --- a/qcsrc/common/t_items.qc +++ b/qcsrc/common/t_items.qc @@ -716,7 +716,7 @@ int GetResourceType(.float resource_property) return health; } -float GetResourceLimit(int resource_type) +float GetResourceLimit(entity e, 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, e, resource_type, limit); + limit = M_ARGV(2, float); if (limit > RESOURCE_AMOUNT_HARD_LIMIT) { limit = RESOURCE_AMOUNT_HARD_LIMIT; @@ -776,13 +776,13 @@ float GetResourceLimit(int resource_type) return limit; } -void GivePlayerResource(entity player, int resource_type, float amount) +void GiveResource(entity receiver, int resource_type, float amount) { if (amount == 0) { return; } - bool forbid = MUTATOR_CALLHOOK(GivePlayerResource, player, resource_type, + bool forbid = MUTATOR_CALLHOOK(GiveResource, receiver, resource_type, amount); if (forbid) { @@ -791,51 +791,38 @@ 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); - player.(resource_property) = bound(player.(resource_property), - player.(resource_property) + amount, max_amount); + float max_amount = GetResourceLimit(receiver, resource_type); + receiver.(resource_property) = bound(receiver.(resource_property), + receiver.(resource_property) + amount, max_amount); switch (resource_type) { case RESOURCE_HEALTH: { - player.pauserothealth_finished = max(player.pauserothealth_finished, - time + autocvar_g_balance_pause_health_rot); + receiver.pauserothealth_finished = + max(receiver.pauserothealth_finished, time + + autocvar_g_balance_pause_health_rot); return; } case RESOURCE_ARMOR: { - player.pauserotarmor_finished = max(player.pauserotarmor_finished, - time + autocvar_g_balance_pause_armor_rot); + receiver.pauserotarmor_finished = + max(receiver.pauserotarmor_finished, time + + autocvar_g_balance_pause_armor_rot); return; } case RESOURCE_FUEL: { - player.pauserotfuel_finished = max(player.pauserotfuel_finished, + receiver.pauserotfuel_finished = max(receiver.pauserotfuel_finished, time + autocvar_g_balance_pause_fuel_rot); return; } } } -void GivePlayerResourceViaProperty(entity player, .float resource_property, +void GiveResourceViaProperty(entity receiver, .float resource_property, float amount) { - GivePlayerResource(player, GetResourceType(resource_property), amount); -} - -void GivePlayerHealth(entity player, float amount) -{ - GivePlayerResource(player, RESOURCE_HEALTH, amount); -} - -void GivePlayerArmor(entity player, float amount) -{ - GivePlayerResource(player, RESOURCE_ARMOR, amount); -} - -void GivePlayerFuel(entity player, float amount) -{ - GivePlayerResource(player, RESOURCE_FUEL, amount); + GiveResource(receiver, GetResourceType(resource_property), amount); } void GivePlayerRandomWeapons(entity player, int num_weapons, @@ -933,7 +920,7 @@ float Item_GiveAmmoTo(entity item, entity player, .float ammotype, float ammomax { amount = ammomax - player.(ammotype); } - GivePlayerResourceViaProperty(player, ammotype, amount); + GiveResourceViaProperty(player, ammotype, amount); return true; } } @@ -942,8 +929,7 @@ float Item_GiveAmmoTo(entity item, entity player, .float ammotype, float ammomax float mi = min(item.(ammotype), ammomax); if (player.(ammotype) < mi) { - GivePlayerResourceViaProperty(player, ammotype, mi - - player.(ammotype)); + GiveResourceViaProperty(player, ammotype, mi - player.(ammotype)); } return true; }