/// <summary>
 /// Initializes a new instance of the <see cref="UpgradingPlayerEventArgs"/> class.
 /// </summary>
 /// <param name="player">The <see cref="Player"/> being upgraded.</param>
 /// <param name="heldOnly"><inheritdoc cref="HeldOnly"/></param>
 /// <param name="setting">The <see cref="Scp914KnobSetting"/> being used.</param>
 /// <param name="upgradeItems"><inheritdoc cref="UpgradeItems"/></param>
 /// <param name="moveVector"><inheritdoc cref="OutputPosition"/></param>
 public UpgradingPlayerEventArgs(Player player, bool upgradeItems, bool heldOnly, Scp914KnobSetting setting, Vector3 moveVector)
 {
     Player         = player;
     UpgradeItems   = upgradeItems;
     HeldOnly       = heldOnly;
     KnobSetting    = setting;
     OutputPosition = player.Position + moveVector;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="UpgradingInventoryItemEventArgs"/> class.
 /// </summary>
 /// <param name="player"><inheritdoc cref="Player"/></param>
 /// <param name="item"><inheritdoc cref="Item"/></param>
 /// <param name="knobSetting"><inheritdoc cref="KnobSetting"/></param>
 /// <param name="isAllowed"><inheritdoc cref="IsAllowed"/></param>
 public UpgradingInventoryItemEventArgs(Player player, ItemBase item, Scp914KnobSetting knobSetting, bool isAllowed = true)
 {
     Scp914      = Exiled.API.Features.Scp914.Scp914Controller;
     Player      = player;
     Item        = Item.Get(item);
     KnobSetting = knobSetting;
     IsAllowed   = isAllowed;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="UpgradingItemEventArgs"/> class.
 /// </summary>
 /// <param name="item"><inheritdoc cref="ItemPickupBase"/></param>
 /// <param name="newPos"><inheritdoc cref="OutputPosition"/></param>
 /// <param name="knobSetting"><inheritdoc cref="KnobSetting"/></param>
 /// <param name="isAllowed"><inheritdoc cref="IsAllowed"/></param>
 public UpgradingItemEventArgs(ItemPickupBase item, Vector3 newPos, Scp914KnobSetting knobSetting, bool isAllowed = true)
 {
     Scp914         = API.Features.Scp914.Scp914Controller;
     Item           = Pickup.Get(item);
     OutputPosition = newPos;
     KnobSetting    = knobSetting;
     IsAllowed      = isAllowed;
 }
Beispiel #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UpgradingEventArgs"/> class.
 /// </summary>
 /// <param name="item"><inheritdoc cref="Item"/></param>
 /// <param name="newPos"><inheritdoc cref="Events.EventArgs.UpgradingItemEventArgs.OutputPosition"/></param>
 /// <param name="knobSetting"><inheritdoc cref="Events.EventArgs.UpgradingItemEventArgs.KnobSetting"/></param>
 /// <param name="isAllowed"><inheritdoc cref="Events.EventArgs.UpgradingItemEventArgs.IsAllowed"/></param>
 public UpgradingEventArgs(ItemPickupBase item, Vector3 newPos, Scp914KnobSetting knobSetting, bool isAllowed = true)
     : base(item, newPos, knobSetting, isAllowed)
 {
     Item = item;
 }
Beispiel #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ChangingKnobSettingEventArgs"/> class.
 /// </summary>
 /// <param name="player"><inheritdoc cref="Player"/></param>
 /// <param name="knobSetting"><inheritdoc cref="KnobSetting"/></param>
 /// <param name="isAllowed"><inheritdoc cref="IsAllowed"/></param>
 public ChangingKnobSettingEventArgs(Player player, Scp914KnobSetting knobSetting, bool isAllowed = true)
 {
     Player      = player;
     KnobSetting = knobSetting;
     IsAllowed   = isAllowed;
 }
Beispiel #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UpgradingItemEventArgs"/> class.
 /// </summary>
 /// <param name="player"><inheritdoc cref="Player"/></param>
 /// <param name="item"><inheritdoc cref="Item"/></param>
 /// <param name="knobSetting"><inheritdoc cref="Events.EventArgs.UpgradingItemEventArgs.KnobSetting"/></param>
 /// <param name="isAllowed"><inheritdoc cref="Events.EventArgs.UpgradingItemEventArgs.IsAllowed"/></param>
 public UpgradingItemEventArgs(Player player, ItemBase item, Scp914KnobSetting knobSetting, bool isAllowed = true)
     : base(player, item, knobSetting, isAllowed)
 {
     Item = item;
 }
Beispiel #7
0
        private static bool UpgradePatch(Collider[] intake, Vector3 moveVector, Scp914Mode mode, Scp914KnobSetting setting)
        {
            try
            {
                var objects = HashSetPool <GameObject> .Shared.Rent();

                var upgradeDropped   = (mode & Scp914Mode.Dropped) == Scp914Mode.Dropped;
                var upgradeInventory = (mode & Scp914Mode.Inventory) == Scp914Mode.Inventory;
                var heldOnly         = upgradeInventory && (mode & Scp914Mode.Held) == Scp914Mode.Held;

                var players = new List <Player>();
                var items   = new List <SynapseItem>();

                foreach (var collider in intake)
                {
                    var gameObject = collider.transform.root.gameObject;

                    if (objects.Add(gameObject))
                    {
                        if (ReferenceHub.TryGetHub(gameObject, out var ply))
                        {
                            players.Add(ply.GetPlayer());
                        }
                        else if (gameObject.TryGetComponent <ItemPickupBase>(out var pickup))
                        {
                            items.Add(pickup.GetSynapseItem());
                        }
                    }
                }

                Event.Get.Map.Invoke914Activate(ref players, ref items, ref moveVector, out var allow);

                foreach (var ply in players)
                {
                    Scp914Upgrader.ProcessPlayer(ply.Hub, upgradeInventory, heldOnly, moveVector, setting);
                }

                foreach (var item in items)
                {
                    Scp914Upgrader.ProcessPickup(item.PickupBase, upgradeDropped, moveVector, setting);
                }

                HashSetPool <GameObject> .Shared.Return(objects);

                return(false);
            }
            catch (Exception e)
            {
                Synapse.Api.Logger.Get.Error($"Synapse-Event: Scp914 Activate Event failed!!\n{e}");
                return(true);
            }
        }