Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EXILED::API] Adding StaminaRegenMultiplier (BodyArmor) #71

Merged
merged 6 commits into from
Aug 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion EXILED/Exiled.API/Features/Items/Armor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ namespace Exiled.API.Features.Items
using Exiled.API.Interfaces;

using InventorySystem.Items.Armor;

using PlayerRoles;

using Structs;
Expand Down Expand Up @@ -110,6 +109,11 @@ public float StaminaUseMultiplier
set => Base._staminaUseMultiplier = value;
}

/// <summary>
/// Gets or sets the stamina regen multiplier.
/// </summary>
public float StaminaRegenMultiplier { get; set; } = 1f;

/// <summary>
/// Gets or sets how much the users movement speed should be affected when wearing this armor. (higher values = slower movement).
/// </summary>
Expand Down Expand Up @@ -153,6 +157,7 @@ public IEnumerable<BodyArmor.ArmorCategoryLimitModifier> CategoryLimits
StaminaUseMultiplier = StaminaUseMultiplier,
RemoveExcessOnDrop = RemoveExcessOnDrop,
CategoryLimits = CategoryLimits,
StaminaRegenMultiplier = StaminaRegenMultiplier,
AmmoLimits = AmmoLimits,
VestEfficacy = VestEfficacy,
HelmetEfficacy = HelmetEfficacy,
Expand All @@ -168,6 +173,7 @@ internal override void ReadPickupInfo(Pickup pickup)
VestEfficacy = armorPickup.VestEfficacy;
RemoveExcessOnDrop = armorPickup.RemoveExcessOnDrop;
StaminaUseMultiplier = armorPickup.StaminaUseMultiplier;
StaminaRegenMultiplier = armorPickup.StaminaRegenMultiplier;
AmmoLimits = armorPickup.AmmoLimits;
CategoryLimits = armorPickup.CategoryLimits;
}
Expand Down
7 changes: 7 additions & 0 deletions EXILED/Exiled.API/Features/Pickups/BodyArmorPickup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,11 @@ public int VestEfficacy
/// </summary>
public float StaminaUseMultiplier { get; set; }

/// <summary>
/// Gets or sets the stamina regen multiplier.
/// </summary>
public float StaminaRegenMultiplier { get; set; }

/// <summary>
/// Gets how much the users movement speed should be affected when wearing this armor. (higher values = slower movement).
/// </summary>
Expand Down Expand Up @@ -129,6 +134,7 @@ internal override void ReadItemInfo(Item item)
vestEfficacy = armoritem.VestEfficacy;
RemoveExcessOnDrop = armoritem.RemoveExcessOnDrop;
StaminaUseMultiplier = armoritem.StaminaUseMultiplier;
StaminaRegenMultiplier = armoritem.StaminaRegenMultiplier;
AmmoLimits = armoritem.AmmoLimits;
CategoryLimits = armoritem.CategoryLimits;
}
Expand All @@ -144,6 +150,7 @@ protected override void InitializeProperties(ItemBase itemBase)
vestEfficacy = armoritem.VestEfficacy;
RemoveExcessOnDrop = !armoritem.DontRemoveExcessOnDrop;
StaminaUseMultiplier = armoritem._staminaUseMultiplier;
StaminaRegenMultiplier = armoritem.StaminaRegenMultiplier;
AmmoLimits = armoritem.AmmoLimits.Select(limit => (ArmorAmmoLimit)limit);
CategoryLimits = armoritem.CategoryLimits;
}
Expand Down
30 changes: 30 additions & 0 deletions EXILED/Exiled.Events/Patches/Generic/StaminaRegenArmor.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// -----------------------------------------------------------------------
// <copyright file="StaminaRegenArmor.cs" company="Exiled Team">
// Copyright (c) Exiled Team. All rights reserved.
// Licensed under the CC BY-SA 3.0 license.
// </copyright>
// -----------------------------------------------------------------------

namespace Exiled.Events.Patches.Generic
{
using Exiled.API.Features;
using Exiled.API.Features.Items;
#pragma warning disable SA1313

using HarmonyLib;
using InventorySystem.Items.Armor;

/// <summary>
/// Patches <see cref="BodyArmor.StaminaRegenMultiplier"/>.
/// Implements <see cref="API.Features.Items.Armor.StaminaRegenMultiplier"/>.
/// </summary>
[HarmonyPatch(typeof(BodyArmor), nameof(BodyArmor.StaminaRegenMultiplier), MethodType.Getter)]
internal class StaminaRegenArmor
{
private static void Postfix(BodyArmor __instance, ref float __result)
{
if(Item.Get(__instance) is Armor armor)
__result *= armor.StaminaRegenMultiplier;
}
}
}
Loading