Skip to content
Open
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
9 changes: 6 additions & 3 deletions EXILED/Exiled.API/Features/Items/FirearmModules/Magazine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@ namespace Exiled.API.Features.Items.FirearmModules

using Exiled.API.Features.Items.FirearmModules.Barrel;
using Exiled.API.Features.Items.FirearmModules.Primary;

using InventorySystem.Items.Firearms.Modules;

using InventorySystem.Items.Firearms.Modules.Scp127;
using UnityEngine;

/// <summary>
Expand Down Expand Up @@ -66,8 +65,12 @@ public static Magazine Get(IAmmoContainerModule module)
PumpActionModule pump => new PumpBarrelMagazine(pump),
IPrimaryAmmoContainerModule primary => primary switch
{
MagazineModule magazine => new NormalMagazine(magazine),
CylinderAmmoModule cylinder => new CylinderMagazine(cylinder),
MagazineModule magazine => magazine switch
{
Scp127MagazineModule scp127MagazineModule => new Scp127Magazine(scp127MagazineModule),
_ => new NormalMagazine(magazine)
},
_ => null,
},
_ => null,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
// -----------------------------------------------------------------------
// <copyright file="Scp127Magazine.cs" company="ExMod Team">
// Copyright (c) ExMod Team. All rights reserved.
// Licensed under the CC BY-SA 3.0 license.
// </copyright>
// -----------------------------------------------------------------------

namespace Exiled.API.Features.Items.FirearmModules.Primary
{
using InventorySystem.Items.Firearms.Modules.Scp127;

/// <summary>
/// Represents a normal magazine for SCP-127.
/// </summary>
public class Scp127Magazine : NormalMagazine
{
/// <summary>
/// Initializes a new instance of the <see cref="Scp127Magazine"/> class.
/// </summary>
/// <param name="magazine"><inheritdoc cref="MagazineModule"/></param>
public Scp127Magazine(Scp127MagazineModule magazine)
: base(magazine)
{
MagazineModule = magazine;
}

/// <inheritdoc cref="NormalMagazine.MagazineModule"/>
public new Scp127MagazineModule MagazineModule { get; }

/// <summary>
/// Gets or sets the kill bonus.
/// </summary>
public int KillBonus
{
get => MagazineModule.KillBonus;
set => MagazineModule.KillBonus = value;
}

/// <summary>
/// Gets or sets the rank up bonus.
/// </summary>
public int RankUpBonus
{
get => MagazineModule.RankUpBonus;
set => MagazineModule.RankUpBonus = value;
}

/// <summary>
/// Gets or sets all settings.
/// </summary>
public Scp127MagazineModule.RegenerationSettings[] RegenerationPerTier
{
get => MagazineModule._regenerationPerTier;
set => MagazineModule._regenerationPerTier = value;
}

/// <summary>
/// Gets the current setting.
/// </summary>
public Scp127MagazineModule.RegenerationSettings ActiveSetting => MagazineModule.ActiveSettings;

/// <summary>
/// Gets or sets a pause in bullets regeneration process.
/// </summary>
public float RemainingRegenPause
{
get => MagazineModule._remainingRegenPause;
set => MagazineModule._remainingRegenPause = value;
}

/// <summary>
/// Gets or sets the amount of bullets that should be regenerated.
/// </summary>
public float RegenProgress
{
get => MagazineModule._regenProgress;
set => MagazineModule._regenProgress = value;
}
}
}
12 changes: 10 additions & 2 deletions EXILED/Exiled.API/Features/Items/Item.cs
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,11 @@ public static Item Get(ItemBase itemBase)

return itemBase switch
{
InventorySystem.Items.Firearms.Firearm firearm => new Firearm(firearm),
InventorySystem.Items.Firearms.Firearm firearm => firearm.ItemTypeId switch
{
ItemType.GunSCP127 => new Scp127(firearm),
_ => new Firearm(firearm),
},
KeycardItem keycard => keycard switch
{
ChaosKeycardItem chaosKeycardItem => new ChaosKeycard(chaosKeycardItem),
Expand Down Expand Up @@ -318,7 +322,11 @@ public static T Get<T>(ushort serial)
/// <returns>The <see cref="Item"/> created. This can be cast as a subclass.</returns>
public static Item Create(ItemType type, Player owner = null) => type.GetTemplate() switch
{
InventorySystem.Items.Firearms.Firearm => new Firearm(type),
InventorySystem.Items.Firearms.Firearm => type switch
{
ItemType.GunSCP127 => new Scp127(),
_ => new Firearm(type),
},
KeycardItem keycard => keycard switch
{
ChaosKeycardItem => new ChaosKeycard(type),
Expand Down
Loading
Loading