コード例 #1
0
 public void OnDoorAccess(ref DoorInteractionEvent ev)
 {
     if (Methods.BlackoutMode)
     {
         ev.Allow = true;
     }
 }
コード例 #2
0
    public void OnReceived(EBEvent e)
    {
        switch (e.type)
        {
        case EBEventType.InteractionWithDoor:
        {
            DoorInteractionEvent die = e as DoorInteractionEvent;
            if (!isDoorTriggered && (die.door == door))
            {
                isDoorTriggered = true;
                monster.SetActive(true);
                monster.GetComponent <CameraVisibilityChecker>().SetCamera(camera);
                monster.GetComponent <MonsterBehaviour>().SetMainTarget(controller.transform);
                NoiseEffectsManager noiseEffectsManager = controller.gameObject.GetComponentInChildren <NoiseEffectsManager>();
                noiseEffectsManager.SetMonster(monster.transform);
                noiseEffectsManager.enabled = true;
                dispatcher.Subscribe(EBEventType.CaughtByMonster, address, gameObject);
                dispatcher.Subscribe(EBEventType.MonsterInFrustum, address, gameObject);
            }
        }
        break;

        case EBEventType.CaughtByMonster:
            StartCoroutine(EndingAnimation());
            break;

        case EBEventType.MonsterInFrustum:
            controller.SetMouseLookEnabled(false);
            controller.SetHeadBobEnabled(false);
            controller.enabled = false;
            director.StartAnimating(camera, rotationTarget, camera.transform);
            break;
        }
    }
コード例 #3
0
 public void DoorInteract(ref DoorInteractionEvent ev)
 {
     try {
         if (ev.Player.GetRole() == RoleType.Scp0492 && ev.Door.doorType == 2 && !ev.Door.Networklocked)
         {
             if ((!plugin.canClose && ev.Door.NetworkisOpen) ||
                 (plugin.griefProtection && ev.Door.DoorName.StartsWith("106")))
             {
                 return;
             }
             int  amount = 0;
             Door d      = ev.Door;
             foreach (ReferenceHub hub in Player.GetHubs(RoleType.Scp0492))
             {
                 if (Vector3.Distance(d.transform.position, hub.GetPosition()) <= plugin.distanceNeeded)
                 {
                     amount++;
                 }
             }
             if (amount >= plugin.amountNeeded)
             {
                 ev.Allow = true;
                 if (plugin.currentMode != Mode.OPEN && !ev.Door.NetworkisOpen && plugin.canClose)
                 {
                     d.DestroyDoor(plugin.currentMode == Mode.LOCK_BREAK);
                     if (plugin.forceDestroy)
                     {
                         d.destroyed        = true;
                         d.Networkdestroyed = true;
                         return;
                     }
                     Timing.CallDelayed(0.5f, () => {
                         d.Networklocked = true;
                         d.locked        = true;
                     });
                     if (plugin.unlockLater)
                     {
                         Timing.CallDelayed(plugin.unlockAfter, () => {
                             d.Networklocked = false;
                             d.locked        = false;
                         });
                     }
                 }
             }
             else
             {
                 if (plugin.neededBroadcastDuration <= 0)
                 {
                     ev.Player.ClearBroadcasts();
                     ev.Player.Broadcast(plugin.neededBroadcastDuration, plugin.neededBroadcast.Replace("%amount", $"{plugin.amountNeeded - amount}"), false);
                 }
             }
         }
     } catch (Exception e) {
         Log.Error("ZDB DoorInteract error: " + e.StackTrace);
     }
 }
コード例 #4
0
 public void OnReceived(EBEvent e)
 {
     if (e.type == EBEventType.InteractionWithDoor)
     {
         DoorInteractionEvent die = e as DoorInteractionEvent;
         if (die.door == door)
         {
             StartCoroutine(Animation());
         }
     }
 }
コード例 #5
0
 public void OnPlayerDoorInteract(ref DoorInteractionEvent ev)
 {
     if (SCP_ROLES.Contains(ev.Player.GetRole()))
     {
         return;
     }
     if (ev.Allow)
     {
         return;
     }
     ev.Allow = hasPermission(ev.Player, ev.Door.permissionLevel);
 }
コード例 #6
0
ファイル: Plugin.cs プロジェクト: kirun9/CoinBlocksDoors
        private void OnDoorInteract(ref DoorInteractionEvent ev)
        {
            try
            {
                var inv  = ev.Player.inventory;
                var item = inv.GetItemInHand().id;
                if (string.Equals(ev.Door.permissionLevel, "CHCKPOINT_ACC", StringComparison.OrdinalIgnoreCase) && !AllowCheckpoint)
                {
                    return;
                }

                if (item == ItemType.Coin && MaxUses == 0)
                {
                    Coroutines.Add(Timing.RunCoroutine(LockDoor(ev.Door), Segment.Update));
                    if (!ev.Door.locked)
                    {
                        inv.items.RemoveAt(inv.GetItemIndex());
                    }
                    ev.Allow = false;
                    return;
                }

                if (Doors.Contains(new DoorItem(ev.Door, 0)))
                {
                    var temp = ev.Door;
                    var door = Doors.Find((d) => d.Door.GetInstanceID() == temp.GetInstanceID());
                    door.Used++;
                    if (door.Used == door.MaxUses)
                    {
                        Doors.Remove(door);
                    }
                    else
                    {
                        ev.Allow = false;
                    }
                }
                else if (item == ItemType.Coin)
                {
                    var random = (MinUses > 0) ? (MinUses < MaxUses) ? UnityEngine.Random.Range(MinUses, MaxUses) : (MinUses == MaxUses) ? MinUses : MinUses : 1;
                    var door   = new DoorItem(ev.Door, random);
                    Doors.Add(door);
                    inv.items.RemoveAt(inv.GetItemIndex());
                    ev.Allow = false;
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex.ToString());
            }
        }
コード例 #7
0
 public void OnDoorAccess(ref DoorInteractionEvent ev)
 {
     if (ev.Allow == true)
     {
         return;
     }
     foreach (var item in ev.Player.inventory.items)
     {
         if (ev.Player.inventory.GetItemByID(item.id).permissions.Contains(ev.Door.permissionLevel))
         {
             ev.Allow = true;
             return;
         }
     }
 }
コード例 #8
0
        public void OnPlayerDoorInteract(ref DoorInteractionEvent ev)
        {
            Door attackedDoor = ev.Door;

            if (ev.Player.GetRole() == RoleType.Scp0492)
            {
                if (_attackHandler.AddAttack(attackedDoor, ev.Player))
                {
                    attackedDoor.DestroyDoor(true);
                    if (Configs.BreakUnbreakable)
                    {
                        attackedDoor.Networkdestroyed = true;
                    }
                }
            }
        }