├── .gitattributes ├── .github ├── CODE_OF_CONDUCT.md ├── ISSUE_TEMPLATE │ └── bug_report.md ├── README.md ├── SECURITY.md ├── documentation │ ├── GettingStarted.md │ ├── README.md │ └── localization │ │ ├── GettingStarted-BR.md │ │ ├── GettingStarted-FR.md │ │ ├── GettingStarted-KR.md │ │ ├── GettingStarted-ไทย.md │ │ ├── README-BR.md │ │ ├── README-CS.md │ │ ├── README-DE.md │ │ ├── README-DK.md │ │ ├── README-ES.md │ │ ├── README-FR.md │ │ ├── README-IT.md │ │ ├── README-KR.md │ │ ├── README-PL.md │ │ ├── README-TR.md │ │ ├── README-Русский.md │ │ ├── README-ไทย.md │ │ └── README-中文.md ├── labeler.yml ├── pull_request_template.md └── workflows │ ├── dev.yml │ ├── docs.yml │ ├── halloween.yml │ ├── main.yml │ ├── programs.yml │ ├── pull_request_opened.yml │ ├── push_nuget.yml │ └── release.yml ├── .gitignore ├── EXILED ├── .editorconfig ├── Directory.Build.props ├── EXILED.props ├── EXILED.sln ├── Exiled.API │ ├── Enums │ │ ├── AdminToyType.cs │ │ ├── AmmoType.cs │ │ ├── AuthenticationType.cs │ │ ├── BloodType.cs │ │ ├── CameraType.cs │ │ ├── ConfigType.cs │ │ ├── DamageType.cs │ │ ├── DanceType.cs │ │ ├── DangerType.cs │ │ ├── DecontaminationState.cs │ │ ├── DisruptorMode.cs │ │ ├── DoorBeepType.cs │ │ ├── DoorLockType.cs │ │ ├── DoorType.cs │ │ ├── EffectCategory.cs │ │ ├── EffectType.cs │ │ ├── ElevatorType.cs │ │ ├── EnvironmentType.cs │ │ ├── EscapeScenario.cs │ │ ├── FirearmType.cs │ │ ├── GeneratorState.cs │ │ ├── GlassType.cs │ │ ├── HazardType.cs │ │ ├── KeycardPermissions.cs │ │ ├── LeadingTeam.cs │ │ ├── LockerType.cs │ │ ├── ObjectiveType.cs │ │ ├── PingType.cs │ │ ├── PluginPriority.cs │ │ ├── PrefabType.cs │ │ ├── ProjectileType.cs │ │ ├── RadioRange.cs │ │ ├── ReservedSlotEventResult.cs │ │ ├── RespawnEffectType.cs │ │ ├── RevolverChamberState.cs │ │ ├── RoomType.cs │ │ ├── ScenesType.cs │ │ ├── Scp939VisibilityStates.cs │ │ ├── ShootingTargetButton.cs │ │ ├── ShootingTargetType.cs │ │ ├── Side.cs │ │ ├── SpawnLocationType.cs │ │ ├── SpawnReason.cs │ │ ├── SpawnableFaction.cs │ │ ├── ThrowRequest.cs │ │ ├── UncuffReason.cs │ │ ├── UsableRippleType.cs │ │ ├── WarheadStatus.cs │ │ └── ZoneType.cs │ ├── Exiled.API.csproj │ ├── Extensions │ │ ├── BitwiseExtensions.cs │ │ ├── CommonExtensions.cs │ │ ├── DamageTypeExtensions.cs │ │ ├── DangerTypeExtensions.cs │ │ ├── DoorTypeExtensions.cs │ │ ├── EffectTypeExtension.cs │ │ ├── ItemExtensions.cs │ │ ├── LockerExtensions.cs │ │ ├── MirrorExtensions.cs │ │ ├── QueueExtensions.cs │ │ ├── ReflectionExtensions.cs │ │ ├── RoleExtensions.cs │ │ ├── RoomExtensions.cs │ │ ├── SpawnExtensions.cs │ │ ├── StringExtensions.cs │ │ └── UserGroupExtensions.cs │ ├── Features │ │ ├── Attributes │ │ │ ├── CustomAbilityAttribute.cs │ │ │ ├── CustomItemAttribute.cs │ │ │ ├── CustomRoleAttribute.cs │ │ │ ├── DynamicEventDispatcherAttribute.cs │ │ │ ├── PatchGroupAttribute.cs │ │ │ └── PrefabAttribute.cs │ │ ├── Badge.cs │ │ ├── BanManager.cs │ │ ├── Broadcast.cs │ │ ├── Camera.cs │ │ ├── Cassie.cs │ │ ├── Coffee.cs │ │ ├── Components │ │ │ ├── CollisionHandler.cs │ │ │ └── FakeConnection.cs │ │ ├── ComponentsEqualityComparer.cs │ │ ├── Core │ │ │ ├── Attributes │ │ │ │ ├── ManagedObjectTypeAttribute.cs │ │ │ │ └── StateAttribute.cs │ │ │ ├── EActor.cs │ │ │ ├── EBehaviour.cs │ │ │ ├── EObject.cs │ │ │ ├── Generic │ │ │ │ ├── EBehaviour.cs │ │ │ │ ├── EnumClass.cs │ │ │ │ ├── Singleton.cs │ │ │ │ ├── StaticActor.cs │ │ │ │ └── UnmanagedEnumClass.cs │ │ │ ├── Interfaces │ │ │ │ └── IEntity.cs │ │ │ ├── StateMachine │ │ │ │ ├── IState.cs │ │ │ │ ├── State.cs │ │ │ │ └── StateController.cs │ │ │ ├── StaticActor.cs │ │ │ ├── TickComponent.cs │ │ │ ├── TypeCastObject.cs │ │ │ └── UserSettings │ │ │ │ ├── ButtonSetting.cs │ │ │ │ ├── DropdownSetting.cs │ │ │ │ ├── HeaderSetting.cs │ │ │ │ ├── KeybindSetting.cs │ │ │ │ ├── SettingBase.cs │ │ │ │ ├── SliderSetting.cs │ │ │ │ ├── TextInputSetting.cs │ │ │ │ ├── TwoButtonsSetting.cs │ │ │ │ └── UserTextInputSetting.cs │ │ ├── CustomHealthStat.cs │ │ ├── CustomStats │ │ │ └── CustomHumeShieldStat.cs │ │ ├── DamageHandlers │ │ │ ├── AttackerDamageHandler.cs │ │ │ ├── CustomDamageHandler.cs │ │ │ ├── DamageHandler.cs │ │ │ ├── DamageHandlerBase.cs │ │ │ ├── FirearmDamageHandler.cs │ │ │ ├── GenericDamageHandler.cs │ │ │ └── ScpDamageHandler.cs │ │ ├── Doors │ │ │ ├── AirlockController.cs │ │ │ ├── BasicDoor.cs │ │ │ ├── BasicNonInteractableDoor.cs │ │ │ ├── BreakableDoor.cs │ │ │ ├── CheckpointDoor.cs │ │ │ ├── Door.cs │ │ │ ├── ElevatorDoor.cs │ │ │ └── Gate.cs │ │ ├── DynamicEvents │ │ │ ├── DynamicDelegate.cs │ │ │ ├── DynamicEventDispatcher.cs │ │ │ ├── DynamicEventManager.cs │ │ │ ├── IDynamicEventDispatcher.cs │ │ │ ├── TDynamicDelegate.cs │ │ │ └── TDynamicEventDispatcher.cs │ │ ├── Effect.cs │ │ ├── Generator.cs │ │ ├── GlobalPatchProcessor.cs │ │ ├── Hazards │ │ │ ├── AmnesticCloudHazard.cs │ │ │ ├── Hazard.cs │ │ │ ├── SinkholeHazard.cs │ │ │ ├── TantrumHazard.cs │ │ │ └── TemporaryHazard.cs │ │ ├── Hint.cs │ │ ├── Intercom.cs │ │ ├── Items │ │ │ ├── Ammo.cs │ │ │ ├── Armor.cs │ │ │ ├── Consumable.cs │ │ │ ├── ExplosiveGrenade.cs │ │ │ ├── Firearm.cs │ │ │ ├── FirearmModules │ │ │ │ ├── Barrel │ │ │ │ │ ├── AutomaticBarrelMagazine.cs │ │ │ │ │ ├── BarrelMagazine.cs │ │ │ │ │ └── PumpBarrelMagazine.cs │ │ │ │ ├── Magazine.cs │ │ │ │ └── Primary │ │ │ │ │ ├── CylinderMagazine.cs │ │ │ │ │ ├── NormalMagazine.cs │ │ │ │ │ └── PrimaryMagazine.cs │ │ │ ├── FlashGrenade.cs │ │ │ ├── Flashlight.cs │ │ │ ├── Item.cs │ │ │ ├── Jailbird.cs │ │ │ ├── Keycard.cs │ │ │ ├── MicroHid.cs │ │ │ ├── Radio.cs │ │ │ ├── Scp018.cs │ │ │ ├── Scp1344.cs │ │ │ ├── Scp1576.cs │ │ │ ├── Scp2176.cs │ │ │ ├── Scp244.cs │ │ │ ├── Scp330.cs │ │ │ ├── Throwable.cs │ │ │ └── Usable.cs │ │ ├── Lift.cs │ │ ├── Lockers │ │ │ ├── Chamber.cs │ │ │ └── Locker.cs │ │ ├── Log.cs │ │ ├── Map.cs │ │ ├── Npc.cs │ │ ├── Objectives │ │ │ ├── EscapeObjective.cs │ │ │ ├── GeneratorActivatedObjective.cs │ │ │ ├── HumanDamageObjective.cs │ │ │ ├── HumanKillObjective.cs │ │ │ ├── HumanObjective.cs │ │ │ ├── Objective.cs │ │ │ └── ScpItemPickupObjective.cs │ │ ├── Paths.cs │ │ ├── Pickups │ │ │ ├── AmmoPickup.cs │ │ │ ├── BodyArmorPickup.cs │ │ │ ├── ExplosiveGrenadePickup.cs │ │ │ ├── FirearmPickup.cs │ │ │ ├── FlashGrenadePickup.cs │ │ │ ├── GrenadePickup.cs │ │ │ ├── JailbirdPickup.cs │ │ │ ├── KeycardPickup.cs │ │ │ ├── MicroHIDPickup.cs │ │ │ ├── Pickup.cs │ │ │ ├── Projectiles │ │ │ │ ├── EffectGrenadeProjectile.cs │ │ │ │ ├── ExplosionGrenadeProjectile.cs │ │ │ │ ├── FlashbangProjectile.cs │ │ │ │ ├── Projectile.cs │ │ │ │ ├── Scp018Projectile.cs │ │ │ │ ├── Scp2176Projectile.cs │ │ │ │ └── TimeGrenadeProjectile.cs │ │ │ ├── RadioPickup.cs │ │ │ ├── Scp1576Pickup.cs │ │ │ ├── Scp244Pickup.cs │ │ │ ├── Scp330Pickup.cs │ │ │ └── UsablePickup.cs │ │ ├── Player.cs │ │ ├── Plugin.cs │ │ ├── Pools │ │ │ ├── DictionaryPool.cs │ │ │ ├── HashSetPool.cs │ │ │ ├── IPool.cs │ │ │ ├── ListPool.cs │ │ │ ├── QueuePool.cs │ │ │ └── StringBuilderPool.cs │ │ ├── PrefabHelper.cs │ │ ├── Ragdoll.cs │ │ ├── Recontainer.cs │ │ ├── Respawn.cs │ │ ├── Roles │ │ │ ├── DestroyedRole.cs │ │ │ ├── FilmMakerRole.cs │ │ │ ├── FpcRole.cs │ │ │ ├── HumanRole.cs │ │ │ ├── IHumeShieldRole.cs │ │ │ ├── ISubroutinedScpRole.cs │ │ │ ├── IVoiceRole.cs │ │ │ ├── NoneRole.cs │ │ │ ├── OverwatchRole.cs │ │ │ ├── Role.cs │ │ │ ├── Scp0492Role.cs │ │ │ ├── Scp049Role.cs │ │ │ ├── Scp079Role.cs │ │ │ ├── Scp096Role.cs │ │ │ ├── Scp106Role.cs │ │ │ ├── Scp1507Role.cs │ │ │ ├── Scp173Role.cs │ │ │ ├── Scp3114Role.cs │ │ │ ├── Scp939Role.cs │ │ │ └── SpectatorRole.cs │ │ ├── Room.cs │ │ ├── Round.cs │ │ ├── Scp3114Ragdoll.cs │ │ ├── Scp559.cs │ │ ├── Scp914.cs │ │ ├── Scp956.cs │ │ ├── Server.cs │ │ ├── Spawn │ │ │ ├── DynamicSpawnPoint.cs │ │ │ ├── LockerSpawnPoint.cs │ │ │ ├── RoleSpawnPoint.cs │ │ │ ├── RoomSpawnPoint.cs │ │ │ ├── SpawnLocation.cs │ │ │ ├── SpawnPoint.cs │ │ │ ├── SpawnProperties.cs │ │ │ └── StaticSpawnPoint.cs │ │ ├── TeslaGate.cs │ │ ├── Toys │ │ │ ├── AdminToy.cs │ │ │ ├── Light.cs │ │ │ ├── Primitive.cs │ │ │ ├── ShootingTargetToy.cs │ │ │ └── Speaker.cs │ │ ├── Warhead.cs │ │ ├── Waves │ │ │ ├── TimedWave.cs │ │ │ └── WaveTimer.cs │ │ └── Window.cs │ ├── Interfaces │ │ ├── IConfig.cs │ │ ├── IDamageableDoor.cs │ │ ├── INonInteractableDoor.cs │ │ ├── IPlugin.cs │ │ ├── IPosition.cs │ │ ├── IRotation.cs │ │ ├── ITranslation.cs │ │ ├── IWorldSpace.cs │ │ └── IWrapper.cs │ └── Structs │ │ ├── ArmorAmmoLimit.cs │ │ ├── AttachmentIdentifier.cs │ │ ├── PrimitiveSettings.cs │ │ └── RadioRangeSettings.cs ├── Exiled.CreditTags │ ├── Commands │ │ └── ShowCreditTag.cs │ ├── Config.cs │ ├── CreditTags.cs │ ├── Enums │ │ ├── InfoSide.cs │ │ └── RankType.cs │ ├── Events │ │ └── CreditsHandler.cs │ ├── Exiled.CreditTags.csproj │ └── Features │ │ ├── DatabaseHandler.cs │ │ ├── Rank.cs │ │ ├── TagItem.cs │ │ └── ThreadSafeRequest.cs ├── Exiled.CustomItems │ ├── API │ │ ├── EventArgs │ │ │ ├── OwnerChangingRoleEventArgs.cs │ │ │ ├── OwnerDyingEventArgs.cs │ │ │ ├── OwnerEscapingEventArgs.cs │ │ │ ├── OwnerHandcuffingEventArgs.cs │ │ │ ├── UpgradingEventArgs.cs │ │ │ └── UpgradingItemEventArgs.cs │ │ ├── Extensions.cs │ │ └── Features │ │ │ ├── CustomArmor.cs │ │ │ ├── CustomGrenade.cs │ │ │ ├── CustomItem.cs │ │ │ ├── CustomKeycard.cs │ │ │ └── CustomWeapon.cs │ ├── Commands │ │ ├── Give.cs │ │ ├── Info.cs │ │ ├── List │ │ │ ├── List.cs │ │ │ ├── Registered.cs │ │ │ └── Tracked.cs │ │ ├── Main.cs │ │ └── Spawn.cs │ ├── Config.cs │ ├── CustomItems.cs │ ├── Events │ │ ├── MapHandler.cs │ │ └── PlayerHandler.cs │ ├── Exiled.CustomItems.csproj │ └── Patches │ │ └── PlayerInventorySee.cs ├── Exiled.CustomRoles │ ├── API │ │ ├── Extensions.cs │ │ └── Features │ │ │ ├── ActiveAbility.cs │ │ │ ├── CustomAbility.cs │ │ │ ├── CustomRole.cs │ │ │ ├── Enums │ │ │ ├── CheckType.cs │ │ │ └── KeypressActivationType.cs │ │ │ ├── Extensions │ │ │ └── ParserExtension.cs │ │ │ ├── Interfaces │ │ │ └── ITypeDiscriminator.cs │ │ │ ├── KeypressActivator.cs │ │ │ ├── Parsers │ │ │ ├── AbstractClassNodeTypeResolver.cs │ │ │ ├── AggregateExpectationTypeResolver.cs │ │ │ └── ParsingEventBuffer.cs │ │ │ └── PassiveAbility.cs │ ├── Commands │ │ ├── Give.cs │ │ ├── Info.cs │ │ ├── List │ │ │ ├── Abilities.cs │ │ │ ├── List.cs │ │ │ └── Registered.cs │ │ ├── Parent.cs │ │ └── UseAbility.cs │ ├── Config.cs │ ├── CustomRoles.cs │ ├── Events │ │ └── PlayerHandlers.cs │ └── Exiled.CustomRoles.csproj ├── Exiled.Events │ ├── Attributes │ │ └── EventPatchAttribute.cs │ ├── Commands │ │ ├── Config │ │ │ ├── EConfig.cs │ │ │ ├── Merge.cs │ │ │ └── Split.cs │ │ ├── Hub │ │ │ ├── Hub.cs │ │ │ ├── HubApi │ │ │ │ ├── ApiProvider.cs │ │ │ │ └── Models │ │ │ │ │ └── HubPlugin.cs │ │ │ └── Install.cs │ │ ├── PluginManager │ │ │ ├── Disable.cs │ │ │ ├── Enable.cs │ │ │ ├── Patches.cs │ │ │ ├── PluginManager.cs │ │ │ └── Show.cs │ │ ├── Reload │ │ │ ├── All.cs │ │ │ ├── Configs.cs │ │ │ ├── GamePlay.cs │ │ │ ├── Permissions.cs │ │ │ ├── Plugins.cs │ │ │ ├── Reload.cs │ │ │ ├── RemoteAdmin.cs │ │ │ └── Translations.cs │ │ └── TpsCommand.cs │ ├── Config.cs │ ├── EventArgs │ │ ├── Cassie │ │ │ └── SendingCassieMessageEventArgs.cs │ │ ├── Interfaces │ │ │ ├── IAttackerEvent.cs │ │ │ ├── ICameraEvent.cs │ │ │ ├── IDeniableEvent.cs │ │ │ ├── IDoorEvent.cs │ │ │ ├── IExiledEvent.cs │ │ │ ├── IFirearmEvent.cs │ │ │ ├── IGeneratorEvent.cs │ │ │ ├── IHazardEvent.cs │ │ │ ├── IItemEvent.cs │ │ │ ├── IPickupEvent.cs │ │ │ ├── IPlayerEvent.cs │ │ │ ├── IRagdollEvent.cs │ │ │ ├── IRoomEvent.cs │ │ │ ├── IScp0492Event.cs │ │ │ ├── IScp049Event.cs │ │ │ ├── IScp079Event.cs │ │ │ ├── IScp096Event.cs │ │ │ ├── IScp106Event.cs │ │ │ ├── IScp1344Event.cs │ │ │ ├── IScp1507Event.cs │ │ │ ├── IScp173Event.cs │ │ │ ├── IScp3114Event.cs │ │ │ ├── IScp330Event.cs │ │ │ ├── IScp559Event.cs │ │ │ ├── IScp939Event.cs │ │ │ ├── ITeslaEvent.cs │ │ │ └── IUsableEvent.cs │ │ ├── Item │ │ │ ├── ChangingAmmoEventArgs.cs │ │ │ ├── ChangingAttachmentsEventArgs.cs │ │ │ ├── ChangingMicroHIDPickupStateEventArgs.cs │ │ │ ├── ChargingJailbirdEventArgs.cs │ │ │ ├── KeycardInteractingEventArgs.cs │ │ │ ├── ReceivingPreferenceEventArgs.cs │ │ │ ├── SwingingEventArgs.cs │ │ │ └── UsingRadioPickupBatteryEventArgs.cs │ │ ├── Map │ │ │ ├── AnnouncingChaosEntranceEventArgs.cs │ │ │ ├── AnnouncingDecontaminationEventArgs.cs │ │ │ ├── AnnouncingNtfEntranceEventArgs.cs │ │ │ ├── AnnouncingScpTerminationEventArgs.cs │ │ │ ├── ChangedIntoGrenadeEventArgs.cs │ │ │ ├── ChangingIntoGrenadeEventArgs.cs │ │ │ ├── DecontaminatingEventArgs.cs │ │ │ ├── ElevatorSequencesUpdatedEventArgs.cs │ │ │ ├── ExplodingGrenadeEventArgs.cs │ │ │ ├── FillingLockerEventArgs.cs │ │ │ ├── GeneratorActivatingEventArgs.cs │ │ │ ├── PickupAddedEventArgs.cs │ │ │ ├── PickupDestroyedEventArgs.cs │ │ │ ├── PlacingBulletHoleEventArgs.cs │ │ │ ├── PlacingPickupIntoPocketDimensionEventArgs.cs │ │ │ ├── Scp244SpawningEventArgs.cs │ │ │ ├── SpawningItemEventArgs.cs │ │ │ ├── SpawningTeamVehicleEventArgs.cs │ │ │ └── TurningOffLightsEventArgs.cs │ │ ├── Player │ │ │ ├── ActivatingGeneratorEventArgs.cs │ │ │ ├── ActivatingWarheadPanelEventArgs.cs │ │ │ ├── ActivatingWorkstationEventArgs.cs │ │ │ ├── AimingDownSightEventArgs.cs │ │ │ ├── BannedEventArgs.cs │ │ │ ├── BanningEventArgs.cs │ │ │ ├── CancelledItemUseEventArgs.cs │ │ │ ├── CancellingItemUseEventArgs.cs │ │ │ ├── ChangedEmotionEventArgs.cs │ │ │ ├── ChangedItemEventArgs.cs │ │ │ ├── ChangingDangerStateEventArgs.cs │ │ │ ├── ChangingDisruptorModeEventArgs.cs │ │ │ ├── ChangingEmotionEventArgs.cs │ │ │ ├── ChangingGroupEventArgs.cs │ │ │ ├── ChangingIntercomMuteStatusEventArgs.cs │ │ │ ├── ChangingItemEventArgs.cs │ │ │ ├── ChangingMicroHIDStateEventArgs.cs │ │ │ ├── ChangingMoveStateEventArgs.cs │ │ │ ├── ChangingMuteStatusEventArgs.cs │ │ │ ├── ChangingNicknameEventArgs.cs │ │ │ ├── ChangingRadioPresetEventArgs.cs │ │ │ ├── ChangingRoleEventArgs.cs │ │ │ ├── ChangingSpectatedPlayerEventArgs.cs │ │ │ ├── ClosingGeneratorEventArgs.cs │ │ │ ├── DamagingDoorEventArgs.cs │ │ │ ├── DamagingShootingTargetEventArgs.cs │ │ │ ├── DamagingWindowEventArgs.cs │ │ │ ├── DeactivatingWorkstationEventArgs.cs │ │ │ ├── DestroyingEventArgs.cs │ │ │ ├── DiedEventArgs.cs │ │ │ ├── DrinkingCoffeeEventArgs.cs │ │ │ ├── DroppedAmmoEventArgs.cs │ │ │ ├── DroppedItemEventArgs.cs │ │ │ ├── DroppingAmmoEventArgs.cs │ │ │ ├── DroppingItemEventArgs.cs │ │ │ ├── DroppingNothingEventArgs.cs │ │ │ ├── DryfiringWeaponEventArgs.cs │ │ │ ├── DyingEventArgs.cs │ │ │ ├── EarningAchievementEventArgs.cs │ │ │ ├── EnteringEnvironmentalHazardEventArgs.cs │ │ │ ├── EnteringKillerCollisionEventArgs.cs │ │ │ ├── EnteringPocketDimensionEventArgs.cs │ │ │ ├── EscapedEventArgs.cs │ │ │ ├── EscapingEventArgs.cs │ │ │ ├── EscapingPocketDimensionEventArgs.cs │ │ │ ├── ExitingEnvironmentalHazardEventArgs.cs │ │ │ ├── FailingEscapePocketDimensionEventArgs.cs │ │ │ ├── FlippingCoinEventArgs.cs │ │ │ ├── HandcuffingEventArgs.cs │ │ │ ├── HealedEventArgs.cs │ │ │ ├── HealingEventArgs.cs │ │ │ ├── HurtEventArgs.cs │ │ │ ├── HurtingEventArgs.cs │ │ │ ├── InteractedEventArgs.cs │ │ │ ├── InteractingDoorEventArgs.cs │ │ │ ├── InteractingElevatorEventArgs.cs │ │ │ ├── InteractingLockerEventArgs.cs │ │ │ ├── InteractingShootingTargetEventArgs.cs │ │ │ ├── IntercomSpeakingEventArgs.cs │ │ │ ├── IssuingMuteEventArgs.cs │ │ │ ├── ItemAddedEventArgs.cs │ │ │ ├── ItemRemovedEventArgs.cs │ │ │ ├── JoinedEventArgs.cs │ │ │ ├── JumpingEventArgs.cs │ │ │ ├── KickedEventArgs.cs │ │ │ ├── KickingEventArgs.cs │ │ │ ├── LandingEventArgs.cs │ │ │ ├── LeftEventArgs.cs │ │ │ ├── MakingNoiseEventArgs.cs │ │ │ ├── OpeningGeneratorEventArgs.cs │ │ │ ├── PickingUpItemEventArgs.cs │ │ │ ├── PlayingAudioLogEventArgs.cs │ │ │ ├── PreAuthenticatingEventArgs.cs │ │ │ ├── ReceivingEffectEventArgs.cs │ │ │ ├── ReloadedWeaponEventArgs.cs │ │ │ ├── ReloadingWeaponEventArgs.cs │ │ │ ├── RemovedHandcuffsEventArgs.cs │ │ │ ├── RemovingHandcuffsEventArgs.cs │ │ │ ├── ReservedSlotsCheckEventArgs.cs │ │ │ ├── RevokingMuteEventArgs.cs │ │ │ ├── RotatingRevolverEventArgs.cs │ │ │ ├── SearchingPickupEventArgs.cs │ │ │ ├── SendingAdminChatMessageEventsArgs.cs │ │ │ ├── SendingValidCommandEventArgs.cs │ │ │ ├── SentValidCommandEventArgs.cs │ │ │ ├── ShootingEventArgs.cs │ │ │ ├── ShotEventArgs.cs │ │ │ ├── SpawnedEventArgs.cs │ │ │ ├── SpawnedRagdollEventArgs.cs │ │ │ ├── SpawningEventArgs.cs │ │ │ ├── SpawningRagdollEventArgs.cs │ │ │ ├── StayingOnEnvironmentalHazardEventArgs.cs │ │ │ ├── StoppingGeneratorEventArgs.cs │ │ │ ├── ThrowingRequestEventArgs.cs │ │ │ ├── ThrownProjectileEventArgs.cs │ │ │ ├── TogglingFlashlightEventArgs.cs │ │ │ ├── TogglingNoClipEventArgs.cs │ │ │ ├── TogglingOverwatchEventArgs.cs │ │ │ ├── TogglingRadioEventArgs.cs │ │ │ ├── TogglingWeaponFlashlightEventArgs.cs │ │ │ ├── TransmittingEventArgs.cs │ │ │ ├── TriggeringTeslaEventArgs.cs │ │ │ ├── UnloadedWeaponEventArgs.cs │ │ │ ├── UnloadingWeaponEventArgs.cs │ │ │ ├── UnlockingGeneratorEventArgs.cs │ │ │ ├── UsedItemEventArgs.cs │ │ │ ├── UsingItemCompletedEventArgs.cs │ │ │ ├── UsingItemEventArgs.cs │ │ │ ├── UsingMicroHIDEnergyEventArgs.cs │ │ │ ├── UsingRadioBatteryEventArgs.cs │ │ │ ├── VerifiedEventArgs.cs │ │ │ └── VoiceChattingEventArgs.cs │ │ ├── Scp049 │ │ │ ├── ActivatingSenseEventArgs.cs │ │ │ ├── AttackingEventArgs.cs │ │ │ ├── FinishingRecallEventArgs.cs │ │ │ ├── SendingCallEventArgs.cs │ │ │ └── StartingRecallEventArgs.cs │ │ ├── Scp0492 │ │ │ ├── ConsumedCorpseEventArgs.cs │ │ │ ├── ConsumingCorpseEventArgs.cs │ │ │ └── TriggeringBloodlustEventArgs.cs │ │ ├── Scp079 │ │ │ ├── ChangingCameraEventArgs.cs │ │ │ ├── ChangingSpeakerStatusEventArgs.cs │ │ │ ├── ElevatorTeleportingEventArgs.cs │ │ │ ├── GainingExperienceEventArgs.cs │ │ │ ├── GainingLevelEventArgs.cs │ │ │ ├── InteractingTeslaEventArgs.cs │ │ │ ├── LockingDownEventArgs.cs │ │ │ ├── LosingSignalEventArgs.cs │ │ │ ├── LostSignalEventArgs.cs │ │ │ ├── PingingEventArgs.cs │ │ │ ├── RecontainedEventArgs.cs │ │ │ ├── RecontainingEventArgs.cs │ │ │ ├── RoomBlackoutEventArgs.cs │ │ │ ├── StartingSpeakerEventArgs.cs │ │ │ ├── StoppingSpeakerEventArgs.cs │ │ │ ├── TriggeringDoorEventArgs.cs │ │ │ └── ZoneBlackoutEventArgs.cs │ │ ├── Scp096 │ │ │ ├── AddingTargetEventArgs.cs │ │ │ ├── CalmingDownEventArgs.cs │ │ │ ├── ChargingEventArgs.cs │ │ │ ├── EnragingEventArgs.cs │ │ │ ├── StartPryingGateEventArgs.cs │ │ │ └── TryingNotToCryEventArgs.cs │ │ ├── Scp106 │ │ │ ├── AttackingEventArgs.cs │ │ │ ├── ExitStalkingEventArgs.cs │ │ │ ├── StalkingEventArgs.cs │ │ │ └── TeleportingEventArgs.cs │ │ ├── Scp1344 │ │ │ ├── ChangedStatusEventArgs.cs │ │ │ ├── ChangingStatusEventArgs.cs │ │ │ ├── DeactivatedEventArgs.cs │ │ │ ├── DeactivatingEventArgs.cs │ │ │ └── TryingDeactivatingEventArgs.cs │ │ ├── Scp1507 │ │ │ ├── AttackingDoorEventArgs.cs │ │ │ ├── ScreamingEventArgs.cs │ │ │ ├── SpawningFlamingosEventArgs.cs │ │ │ └── UsingTapeEventArgs.cs │ │ ├── Scp173 │ │ │ ├── BeingObservedEventArgs.cs │ │ │ ├── BlinkingEventArgs.cs │ │ │ ├── BlinkingRequestEventArgs.cs │ │ │ ├── PlacingTantrumEventArgs.cs │ │ │ └── UsingBreakneckSpeedsEventArgs.cs │ │ ├── Scp244 │ │ │ ├── DamagingScp244EventArgs.cs │ │ │ ├── OpeningScp244EventArgs.cs │ │ │ └── UsingScp244EventArgs.cs │ │ ├── Scp2536 │ │ │ ├── FindingPositionEventArgs.cs │ │ │ ├── GrantingGiftEventArgs.cs │ │ │ └── OpeningGiftEventArgs.cs │ │ ├── Scp3114 │ │ │ ├── DancingEventArgs.cs │ │ │ ├── DisguisedEventArgs.cs │ │ │ ├── DisguisingEventArgs.cs │ │ │ ├── RevealedEventArgs.cs │ │ │ ├── RevealingEventArgs.cs │ │ │ ├── SlappedEventArgs.cs │ │ │ ├── StranglingEventArgs.cs │ │ │ ├── TryUseBodyEventArgs.cs │ │ │ └── VoiceLinesEventArgs.cs │ │ ├── Scp330 │ │ │ ├── DroppingScp330EventArgs.cs │ │ │ ├── EatenScp330EventArgs.cs │ │ │ ├── EatingScp330EventArgs.cs │ │ │ └── InteractingScp330EventArgs.cs │ │ ├── Scp559 │ │ │ ├── InteractingScp559EventArgs.cs │ │ │ └── SpawningEventArgs.cs │ │ ├── Scp914 │ │ │ ├── ActivatingEventArgs.cs │ │ │ ├── ChangingKnobSettingEventArgs.cs │ │ │ ├── UpgradingInventoryItemEventArgs.cs │ │ │ ├── UpgradingPickupEventArgs.cs │ │ │ └── UpgradingPlayerEventArgs.cs │ │ ├── Scp939 │ │ │ ├── ChangingFocusEventArgs.cs │ │ │ ├── ClawedEventArgs.cs │ │ │ ├── LungingEventArgs.cs │ │ │ ├── PlacedAmnesticCloudEventArgs.cs │ │ │ ├── PlacingAmnesticCloudEventArgs.cs │ │ │ ├── PlayingFootstepEventArgs.cs │ │ │ ├── PlayingSoundEventArgs.cs │ │ │ ├── PlayingVoiceEventArgs.cs │ │ │ ├── SavingVoiceEventArgs.cs │ │ │ ├── UpdatedCloudStateEventArgs.cs │ │ │ └── ValidatingVisibilityEventArgs.cs │ │ ├── Server │ │ │ ├── AddingUnitNameEventArgs.cs │ │ │ ├── ChoosingStartTeamQueueEventArgs.cs │ │ │ ├── CompletingObjectiveEventArgs.cs │ │ │ ├── EndingRoundEventArgs.cs │ │ │ ├── LocalReportingEventArgs.cs │ │ │ ├── ReportingCheaterEventArgs.cs │ │ │ ├── RespawnedTeamEventArgs.cs │ │ │ ├── RespawningTeamEventArgs.cs │ │ │ ├── RoundEndedEventArgs.cs │ │ │ ├── SelectingRespawnTeamEventArgs.cs │ │ │ ├── UnbannedEventArgs.cs │ │ │ └── UnbanningEventArgs.cs │ │ └── Warhead │ │ │ ├── ChangingLeverStatusEventArgs.cs │ │ │ ├── DeadmanSwitchInitiatingEventArgs.cs │ │ │ ├── DetonatingEventArgs.cs │ │ │ ├── StartingEventArgs.cs │ │ │ └── StoppingEventArgs.cs │ ├── Events.cs │ ├── Exiled.Events.csproj │ ├── Features │ │ ├── Event.cs │ │ ├── Event{T}.cs │ │ └── Patcher.cs │ ├── Handlers │ │ ├── Cassie.cs │ │ ├── Internal │ │ │ ├── ClientStarted.cs │ │ │ ├── ExplodingGrenade.cs │ │ │ ├── MapGenerated.cs │ │ │ ├── PickupEvent.cs │ │ │ ├── RagdollList.cs │ │ │ ├── Round.cs │ │ │ └── SceneUnloaded.cs │ │ ├── Item.cs │ │ ├── Map.cs │ │ ├── Player.cs │ │ ├── Scp049.cs │ │ ├── Scp0492.cs │ │ ├── Scp079.cs │ │ ├── Scp096.cs │ │ ├── Scp106.cs │ │ ├── Scp1344.cs │ │ ├── Scp1507.cs │ │ ├── Scp173.cs │ │ ├── Scp244.cs │ │ ├── Scp2536.cs │ │ ├── Scp3114.cs │ │ ├── Scp330.cs │ │ ├── Scp559.cs │ │ ├── Scp914.cs │ │ ├── Scp939.cs │ │ ├── Server.cs │ │ └── Warhead.cs │ └── Patches │ │ ├── Events │ │ ├── Cassie │ │ │ └── SendingCassieMessage.cs │ │ ├── Item │ │ │ ├── ChangingAmmo.cs │ │ │ ├── ChangingAttachments.cs │ │ │ ├── JailbirdPatch.cs │ │ │ ├── KeycardInteracting.cs │ │ │ ├── ReceivingPreference.cs │ │ │ └── UsingRadioPickupBattery.cs │ │ ├── Map │ │ │ ├── AnnouncingChaosEntrance.cs │ │ │ ├── AnnouncingDecontamination.cs │ │ │ ├── AnnouncingNtfEntrance.cs │ │ │ ├── AnnouncingScpTermination.cs │ │ │ ├── AnnouncingTeamEntrance.cs │ │ │ ├── BreakingScp2176.cs │ │ │ ├── ChangingIntoGrenade.cs │ │ │ ├── Decontaminating.cs │ │ │ ├── ElevatorSequencesUpdated.cs │ │ │ ├── ExplodingFlashGrenade.cs │ │ │ ├── ExplodingFragGrenade.cs │ │ │ ├── FillingLocker.cs │ │ │ ├── GeneratorActivating.cs │ │ │ ├── PlacingBulletHole.cs │ │ │ ├── PlacingPickupIntoPocketDimension.cs │ │ │ ├── Scp244Spawning.cs │ │ │ ├── SpawningItem.cs │ │ │ ├── SpawningTeamVehicle.cs │ │ │ └── TurningOffLights.cs │ │ ├── Player │ │ │ ├── ActivatingWarheadPanel.cs │ │ │ ├── ActivatingWorkstation.cs │ │ │ ├── Aiming.cs │ │ │ ├── Banned.cs │ │ │ ├── Banning.cs │ │ │ ├── ChangedItem.cs │ │ │ ├── ChangingDangerState.cs │ │ │ ├── ChangingDisruptorMode.cs │ │ │ ├── ChangingGroup.cs │ │ │ ├── ChangingItem.cs │ │ │ ├── ChangingMicroHIDState.cs │ │ │ ├── ChangingMoveState.cs │ │ │ ├── ChangingNickname.cs │ │ │ ├── ChangingRadioPreset.cs │ │ │ ├── ChangingRoleAndSpawned.cs │ │ │ ├── ChangingSpectatedPlayerPatch.cs │ │ │ ├── DamagingDoor.cs │ │ │ ├── DamagingShootingTarget.cs │ │ │ ├── DamagingWindow.cs │ │ │ ├── DeactivatingWorkstation.cs │ │ │ ├── Destroying.cs │ │ │ ├── DrinkingCoffee.cs │ │ │ ├── DroppingAmmo.cs │ │ │ ├── DroppingItem.cs │ │ │ ├── DryFire.cs │ │ │ ├── DyingAndDied.cs │ │ │ ├── EarningAchievement.cs │ │ │ ├── Emotion.cs │ │ │ ├── EnteringKillerCollision.cs │ │ │ ├── EnteringPocketDimension.cs │ │ │ ├── EnteringSinkholeEnvironmentalHazard.cs │ │ │ ├── EnteringTantrumEnvironmentalHazard.cs │ │ │ ├── EscapingAndEscaped.cs │ │ │ ├── EscapingPocketDimension.cs │ │ │ ├── ExitingSinkholeEnvironmentalHazard.cs │ │ │ ├── ExitingTantrumEnvironmentalHazard.cs │ │ │ ├── FailingEscapePocketDimension.cs │ │ │ ├── FlippingCoin.cs │ │ │ ├── Healing.cs │ │ │ ├── Hurting.cs │ │ │ ├── Interacted.cs │ │ │ ├── InteractingDoor.cs │ │ │ ├── InteractingElevator.cs │ │ │ ├── InteractingGenerator.cs │ │ │ ├── InteractingLocker.cs │ │ │ ├── InteractingShootingTarget.cs │ │ │ ├── IntercomSpeaking.cs │ │ │ ├── IssuingMute.cs │ │ │ ├── Joined.cs │ │ │ ├── Jumping.cs │ │ │ ├── Kicked.cs │ │ │ ├── Kicking.cs │ │ │ ├── Landing.cs │ │ │ ├── Left.cs │ │ │ ├── MakingNoise.cs │ │ │ ├── PickingUp330.cs │ │ │ ├── PickingUpAmmo.cs │ │ │ ├── PickingUpArmor.cs │ │ │ ├── PickingUpItem.cs │ │ │ ├── PickingUpScp244.cs │ │ │ ├── PlayingAudioLog.cs │ │ │ ├── PreAuthenticating.cs │ │ │ ├── ProcessDisarmMessage.cs │ │ │ ├── ReceivingStatusEffect.cs │ │ │ ├── ReloadedAndUnloaded.cs │ │ │ ├── ReloadingWeapon.cs │ │ │ ├── ReservedSlotPatch.cs │ │ │ ├── RevokingMute.cs │ │ │ ├── RotatingRevolver.cs │ │ │ ├── SearchingPickupEvent.cs │ │ │ ├── SendingAdminChatMessage.cs │ │ │ ├── SendingValidGameConsoleCommand.cs │ │ │ ├── SendingValidRACommand.cs │ │ │ ├── Shooting.cs │ │ │ ├── Shot.cs │ │ │ ├── Spawning.cs │ │ │ ├── SpawningRagdoll.cs │ │ │ ├── StayingOnEnvironmentalHazard.cs │ │ │ ├── StayingOnSinkholeEnvironmentalHazard.cs │ │ │ ├── StayingOnTantrumEnvironmentalHazard.cs │ │ │ ├── ThrowingRequest.cs │ │ │ ├── ThrownProjectile.cs │ │ │ ├── TogglingFlashlight.cs │ │ │ ├── TogglingNoClip.cs │ │ │ ├── TogglingOverwatch.cs │ │ │ ├── TogglingRadio.cs │ │ │ ├── TogglingWeaponFlashlight.cs │ │ │ ├── TriggeringTesla.cs │ │ │ ├── UsingAndCancellingItemUse.cs │ │ │ ├── UsingItemCompleted.cs │ │ │ ├── UsingMicroHIDEnergy.cs │ │ │ ├── UsingRadioBattery.cs │ │ │ ├── Verified.cs │ │ │ └── VoiceChatting.cs │ │ ├── Scp049 │ │ │ ├── ActivatingSense.cs │ │ │ ├── Attacking.cs │ │ │ ├── FinishingRecall.cs │ │ │ ├── SendingCall.cs │ │ │ └── StartingRecall.cs │ │ ├── Scp0492 │ │ │ ├── Consumed.cs │ │ │ ├── Consuming.cs │ │ │ └── TriggeringBloodlustEvent.cs │ │ ├── Scp079 │ │ │ ├── ChangingCamera.cs │ │ │ ├── ChangingSpeakerStatusAndVoiceChatting.cs │ │ │ ├── ElevatorTeleporting.cs │ │ │ ├── GainingExperience.cs │ │ │ ├── GainingLevel.cs │ │ │ ├── InteractingTesla.cs │ │ │ ├── LockingDown.cs │ │ │ ├── Lost.cs │ │ │ ├── Pinging.cs │ │ │ ├── Recontain.cs │ │ │ ├── Recontaining.cs │ │ │ ├── RoomBlackout.cs │ │ │ ├── TriggeringDoor.cs │ │ │ └── ZoneBlackout.cs │ │ ├── Scp096 │ │ │ ├── AddingTarget.cs │ │ │ ├── CalmingDown.cs │ │ │ ├── Charging.cs │ │ │ ├── Enraging.cs │ │ │ ├── StartPryingGate.cs │ │ │ └── TryingNotToCry.cs │ │ ├── Scp106 │ │ │ ├── Attacking.cs │ │ │ ├── ExitStalking.cs │ │ │ ├── Stalking.cs │ │ │ └── Teleporting.cs │ │ ├── Scp1344 │ │ │ ├── Deactivating.cs │ │ │ └── Status.cs │ │ ├── Scp1507 │ │ │ ├── AttackingDoor.cs │ │ │ ├── Scream.cs │ │ │ ├── SpawningFlamingos.cs │ │ │ └── TapeUsing.cs │ │ ├── Scp173 │ │ │ ├── BeingObserved.cs │ │ │ ├── Blinking.cs │ │ │ ├── BlinkingRequest.cs │ │ │ ├── PlacingTantrum.cs │ │ │ └── UsingBreakneckSpeeds.cs │ │ ├── Scp244 │ │ │ ├── DamagingScp244.cs │ │ │ ├── UpdateScp244.cs │ │ │ └── UsingScp244.cs │ │ ├── Scp2536 │ │ │ ├── FindingPosition.cs │ │ │ ├── GrantingGift.cs │ │ │ └── OpeningGift.cs │ │ ├── Scp3114 │ │ │ ├── Dancing.cs │ │ │ ├── Disguising.cs │ │ │ ├── Revealing.cs │ │ │ ├── Slapped.cs │ │ │ ├── Strangling.cs │ │ │ ├── TryUseBody.cs │ │ │ └── VoiceLines.cs │ │ ├── Scp330 │ │ │ ├── DroppingCandy.cs │ │ │ ├── EatingScp330.cs │ │ │ └── InteractingScp330.cs │ │ ├── Scp559 │ │ │ ├── Interacting.cs │ │ │ └── Spawning.cs │ │ ├── Scp914 │ │ │ ├── InteractingEvents.cs │ │ │ ├── UpgradingItem.cs │ │ │ └── UpgradingPlayer.cs │ │ ├── Scp939 │ │ │ ├── Clawed.cs │ │ │ ├── CreatedAmnesticCloud.cs │ │ │ ├── Focus.cs │ │ │ ├── Lunge.cs │ │ │ ├── PlacedAmnesticCloud.cs │ │ │ ├── PlacingAmnesticCloud.cs │ │ │ ├── PlayingFootstep.cs │ │ │ ├── PlayingSound.cs │ │ │ ├── PlayingVoice.cs │ │ │ ├── SavingVoice.cs │ │ │ └── ValidatingVisibility.cs │ │ ├── Server │ │ │ ├── AddingUnitName.cs │ │ │ ├── ChoosingStartTeamQueue.cs │ │ │ ├── CompletingObjective.cs │ │ │ ├── Reporting.cs │ │ │ ├── RespawningTeam.cs │ │ │ ├── RestartingRound.cs │ │ │ ├── RoundEnd.cs │ │ │ ├── SelectingRespawnTeam.cs │ │ │ ├── Unban.cs │ │ │ └── WaitingForPlayers.cs │ │ └── Warhead │ │ │ ├── ChangingLeverStatus.cs │ │ │ ├── DeadmanSwitchStart.cs │ │ │ ├── Detonation.cs │ │ │ ├── Starting.cs │ │ │ └── Stopping.cs │ │ ├── Fixes │ │ ├── ArmorDropPatch.cs │ │ ├── Fix106RegenerationWithScp244.cs │ │ ├── FixElevatorChamberAwake.cs │ │ ├── FixNWDisarmCommand.cs │ │ ├── FixOnAddedBeingCallAfterOnRemoved.cs │ │ ├── FixPickupPreviousOwner.cs │ │ ├── GetAmmoLimitFix.cs │ │ ├── GrenadePropertiesFix.cs │ │ ├── HurtingFix.cs │ │ ├── Jailbird914CoarseFix.cs │ │ ├── JailbirdHitRegFix.cs │ │ ├── KillPlayer.cs │ │ ├── LockerFixes.cs │ │ ├── NWFixDetonationTimer.cs │ │ ├── NWFixScp096BreakingDoor.cs │ │ ├── RemoteAdminNpcCommandAddToDictionaryFix.cs │ │ ├── RoleChangedPatch.cs │ │ ├── Scp173FirstKillPatch.cs │ │ ├── Scp173SecondKillPatch.cs │ │ ├── Scp3114AttackAhpFix.cs │ │ ├── Scp3114FriendlyFireFix.cs │ │ ├── ServerHubMicroHidFix.cs │ │ ├── VoiceChatMutesClear.cs │ │ └── WarheadConfigLockGateFix.cs │ │ └── Generic │ │ ├── AirlockListAdd.cs │ │ ├── AmmoDrain.cs │ │ ├── CameraList.cs │ │ ├── CanScp049SenseTutorial.cs │ │ ├── CoffeeListAdd.cs │ │ ├── CommandLogging.cs │ │ ├── CurrentHint.cs │ │ ├── DestroyRecontainerInstance.cs │ │ ├── DoorList.cs │ │ ├── GeneratorList.cs │ │ ├── GetCustomAmmoLimit.cs │ │ ├── GetCustomCategoryLimit.cs │ │ ├── GhostModePatch.cs │ │ ├── HazardList.cs │ │ ├── IndividualFriendlyFire.cs │ │ ├── InitRecontainerInstance.cs │ │ ├── LiftList.cs │ │ ├── LockerList.cs │ │ ├── OfflineModeIds.cs │ │ ├── ParseVisionInformation.cs │ │ ├── PickupControlPatch.cs │ │ ├── PocketDimensionTeleportList.cs │ │ ├── RoomLightControllersList.cs │ │ ├── RoomList.cs │ │ ├── Scp079Recontain.cs │ │ ├── Scp079Scan.cs │ │ ├── Scp173BeingLooked.cs │ │ ├── Scp559List.cs │ │ ├── Scp956Capybara.cs │ │ ├── ServerNamePatch.cs │ │ ├── SpeakerInRoom.cs │ │ ├── StaminaRegen.cs │ │ ├── StaminaRegenArmor.cs │ │ ├── StaminaUsage.cs │ │ ├── StayAtAmnesticCloud.cs │ │ └── TeslaList.cs ├── Exiled.Example │ ├── Commands │ │ ├── ParentCommandExample.cs │ │ └── Test.cs │ ├── Config.cs │ ├── Events │ │ ├── ItemHandler.cs │ │ ├── MapHandler.cs │ │ ├── PlayerHandler.cs │ │ ├── Scp096Handler.cs │ │ ├── Scp914Handler.cs │ │ ├── ServerHandler.cs │ │ └── WarheadHandler.cs │ ├── Example.cs │ └── Exiled.Example.csproj ├── Exiled.Installer │ ├── CommandSettings.cs │ ├── Exiled.Installer.csproj │ ├── Program.cs │ ├── Properties │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── README.md │ └── Resources │ │ └── Markup.txt ├── Exiled.Loader │ ├── AutoUpdateFiles.cs │ ├── AutoUpdateFiles.tt │ ├── Config.cs │ ├── ConfigManager.cs │ ├── Exiled.Loader.csproj │ ├── Features │ │ ├── Configs │ │ │ ├── CommentGatheringTypeInspector.cs │ │ │ ├── CommentsObjectDescriptor.cs │ │ │ ├── CommentsObjectGraphVisitor.cs │ │ │ ├── CommentsPropertyDescriptor.cs │ │ │ ├── CustomConverters │ │ │ │ ├── AttachmentIdentifiersConverter.cs │ │ │ │ ├── ColorConverter.cs │ │ │ │ └── VectorsConverter.cs │ │ │ ├── TypeAssigningEventEmitter.cs │ │ │ ├── UnderscoredNamingConvention.cs │ │ │ └── ValidatingNodeDeserializer.cs │ │ ├── LoaderMessages.cs │ │ ├── MultiAdminFeatures.cs │ │ └── PluginPriorityComparer.cs │ ├── GHApi │ │ ├── ApiProvider.cs │ │ ├── HttpClientExtensions.cs │ │ ├── Models │ │ │ ├── Release.cs │ │ │ └── ReleaseAsset.cs │ │ └── Settings │ │ │ └── GetReleasesSettings.cs │ ├── LinuxPermission.cs │ ├── Loader.cs │ ├── LoaderPlugin.cs │ ├── Models │ │ ├── ExiledLib.cs │ │ ├── NewVersion.cs │ │ └── TaggedRelease.cs │ ├── PathExtensions.cs │ ├── TranslationManager.cs │ └── Updater.cs ├── Exiled.Permissions │ ├── Commands │ │ └── Permissions │ │ │ ├── Add.cs │ │ │ ├── Group │ │ │ ├── Add.cs │ │ │ ├── Group.cs │ │ │ └── Remove.cs │ │ │ ├── Permissions.cs │ │ │ ├── Reload.cs │ │ │ └── Remove.cs │ ├── Config.cs │ ├── Exiled.Permissions.csproj │ ├── Extensions │ │ └── Permissions.cs │ ├── Features │ │ └── Group.cs │ ├── Permissions.cs │ ├── Properties │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ └── permissions.yml ├── Exiled.ruleset ├── Exiled │ └── Exiled.nuspec ├── assets │ ├── Exiled_Icon.ico │ ├── Exiled_Icon.jpg │ ├── Exiled_Icon.png │ └── Exiled_Icon_50x50.png ├── build.ps1 ├── docs │ ├── articles │ │ ├── SCPSLRessources │ │ │ ├── NW_Documentation.md │ │ │ └── NW_Documentation.tt │ │ ├── contributing │ │ │ └── index.md │ │ ├── index.md │ │ ├── installation │ │ │ ├── automatic │ │ │ │ ├── linux.md │ │ │ │ └── windows.md │ │ │ ├── index.md │ │ │ └── manual.md │ │ ├── plugins │ │ │ ├── events.md │ │ │ ├── mec.md │ │ │ └── structure.md │ │ └── toc.yml │ ├── assets │ │ ├── exiled.png │ │ └── favicon.ico │ ├── docfx.json │ ├── docs.csproj │ ├── filterConfig.yml │ ├── index.md │ └── toc.yml ├── packaging.ps1 └── stylecop.json └── LICENSE /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto eol=lf 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.ico binary 7 | *.jpg binary 8 | *.png binary 9 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "[BUG]" 5 | labels: requires-testing 6 | assignees: 7 | --- 8 | 9 | **Describe the bug** 10 | A clear and concise description of what the bug is. 11 | 12 | **To Reproduce** 13 | Steps to reproduce the behavior: 14 | 1. Go to '...' 15 | 2. Click on '....' 16 | 3. Scroll down to '....' 17 | 4. See error 18 | 19 | **Expected behavior** 20 | A clear and concise description of what you expected to happen. 21 | 22 | **Server logs** 23 | Please include a pastebin of your localadmin log file (or both MA_log and SCP_log files if you use MultiAdmin) from the time in which the bug occured 24 | 25 | **EXILED Version ("latest" is not a version):** 26 | 27 | 28 | **Results of `pluginmanager show` command in console:** 29 | 30 | 31 | **Additional context** 32 | Add any other context about the problem here. 33 | -------------------------------------------------------------------------------- /.github/SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Only the latest version released supports security updates. Some prereleases may also support them. 6 | 7 | ## Reporting a Vulnerability 8 | 9 | ExMod-Team takes the confidentiality and integrity of its user data very seriously. 10 | 11 | If you have detected a vulnerability on our codebase please report it to us inmediately. 12 | 13 | To contact us use the following discord server: https://discord.gg/PyUkWTg 14 | -------------------------------------------------------------------------------- /.github/labeler.yml: -------------------------------------------------------------------------------- 1 | Documentation: 2 | - changed-files: 3 | - any-glob-to-any-file: docs/** # Any modifications to Documentation 4 | - any-glob-to-any-file: EXILED/Localization/** # Any modifications to Localization 5 | 6 | GitHub: 7 | - changed-files: 8 | - any-glob-to-any-file: '**/*.nuspec' #NuGet 9 | - any-glob-to-any-file: '**/*.ps1' # Windows 10 | - any-glob-to-any-file: '**/*.sh' # Linux 11 | - any-glob-to-any-file: .github/** # Any modifications to github related files 12 | 13 | Events: # Add the 'Events' label 14 | - all: 15 | - changed-files: 16 | - any-glob-to-any-file: 'EXILED/Exiled.Events/**/*' 17 | - all-globs-to-all-files: '!EXILED/Exiled.Events/Patches/**/*' 18 | API: # Add the 'API' label 19 | - changed-files: 20 | - any-glob-to-any-file: EXILED/Exiled.API/** # Any modifications to the API 21 | 22 | Transpiler: # Add the 'transpiler' label 23 | - changed-files: 24 | - any-glob-to-any-file: EXILED/Exiled.Events/Patches/**/* # Any modifications to transpiler files 25 | 26 | Base-Game-Bug: 27 | - changed-files: 28 | - any-glob-to-any-file: EXILED/Exiled.Events/Patches/Fixes/**/* # Any modifications to transpiler fixes files 29 | 30 | CustomModules: # Add the 'CustomModules' label 31 | - changed-files: 32 | - any-glob-to-any-file: EXILED/Exiled.Custom*/** # Any modifications to Exiled.Custom* file 33 | 34 | Installer: # Add the 'Installer' label 35 | - changed-files: 36 | - any-glob-to-any-file: EXILED/Exiled.Installer/** # Any modifications to the Installer 37 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Description 2 | **Describe the changes** 3 | 4 | 5 | **What is the current behavior?** (You can also link to an open issue here) 6 | 7 | 8 | **What is the new behavior?** (if this is a feature change) 9 | 10 | 11 | **Does this PR introduce a breaking change?** (What changes might users need to make in their application due to this PR?) 12 | 13 | 14 | **Other information**: 15 | 16 |
17 | 18 | ## Types of changes 19 | 20 | - [ ] Bug fix (non-breaking change which fixes an issue) 21 | - [ ] New feature (non-breaking change which adds functionality) 22 | - [ ] Breaking change (fix or feature that would cause existing functionality to change) 23 | - [ ] Documentations 24 |
25 | 26 | ## Submission checklist 27 | 28 | - [ ] I have checked the project can be compiled 29 | - [ ] I have tested my changes and it worked as expected 30 | 31 | ### Patches (if there are any changes related to Harmony patches) 32 | - [ ] I have checked no IL patching errors in the console 33 | 34 | ### Other 35 | - [ ] Still requires more testing 36 | -------------------------------------------------------------------------------- /.github/workflows/programs.yml: -------------------------------------------------------------------------------- 1 | name: Exiled Programs CI 2 | 3 | on: [push, pull_request] 4 | 5 | defaults: 6 | run: 7 | working-directory: ./EXILED 8 | 9 | jobs: 10 | build: 11 | # Prevent double running for push & pull_request events from the main repo 12 | if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name 13 | 14 | name: .Net Core ${{ matrix.framework }} on ${{ matrix.os }} for ${{ matrix.proj_name }} 15 | runs-on: ${{ matrix.os }} 16 | strategy: 17 | matrix: 18 | os: [ubuntu-latest, windows-latest] 19 | proj_name: [Exiled.Installer] 20 | include: 21 | - os: ubuntu-latest 22 | target: linux-x64 23 | - os: windows-latest 24 | target: win-x64 25 | timeout-minutes: 30 26 | 27 | steps: 28 | - uses: actions/setup-dotnet@v4.0.1 29 | 30 | - uses: actions/checkout@v4.1.7 31 | 32 | - name: Install dependencies for ${{ matrix.proj_name }}@${{ matrix.target }} 33 | run: dotnet restore ${{ matrix.proj_name }} -r ${{ matrix.target }} 34 | 35 | - name: Build ${{ matrix.proj_name }}@${{ matrix.target }} 36 | run: dotnet publish ${{ matrix.proj_name }} -r ${{ matrix.target }} -c release -o builds/${{ matrix.target }} --self-contained true 37 | 38 | - name: Upload ${{ matrix.proj_name }}@${{ matrix.target }} build 39 | uses: actions/upload-artifact@v4 40 | with: 41 | name: ${{ matrix.proj_name }}-${{ matrix.target }} 42 | path: EXILED/builds/${{ matrix.target }} 43 | -------------------------------------------------------------------------------- /.github/workflows/pull_request_opened.yml: -------------------------------------------------------------------------------- 1 | name: Pull Request CI 2 | 3 | on: 4 | pull_request_target: 5 | branches: 6 | - '**' 7 | 8 | defaults: 9 | run: 10 | working-directory: ./EXILED 11 | 12 | jobs: 13 | set-labels: 14 | name: Set Labels 15 | permissions: 16 | contents: read 17 | pull-requests: write 18 | runs-on: ubuntu-latest 19 | steps: 20 | - uses: actions/labeler@v5.0.0 21 | with: 22 | repo-token: ${{ secrets.GITHUB_TOKEN }} 23 | configuration-path: .github/labeler.yml 24 | sync-labels: true 25 | assign-author: 26 | name: Assign Author 27 | runs-on: ubuntu-latest 28 | permissions: 29 | pull-requests: write 30 | steps: 31 | - uses: toshimaru/auto-author-assign@v2.1.1 32 | validate-pr-title: 33 | name: Validate PR title 34 | runs-on: ubuntu-latest 35 | steps: 36 | - uses: amannn/action-semantic-pull-request@v5 37 | env: 38 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 39 | -------------------------------------------------------------------------------- /EXILED/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $(MSBuildThisFileDirectory)\Exiled.ruleset 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/AdminToyType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// Unique identifier for the different types of admin toys. 12 | /// 13 | /// 14 | public enum AdminToyType 15 | { 16 | /// 17 | /// Primitive Object toy. 18 | /// 19 | PrimitiveObject, 20 | 21 | /// 22 | /// Light source toy. 23 | /// 24 | LightSource, 25 | 26 | /// 27 | /// ShootingTarget toy. 28 | /// 29 | ShootingTarget, 30 | 31 | /// 32 | /// Speaker toy. 33 | /// 34 | Speaker, 35 | } 36 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/BloodType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// Unique identifier for the different types of blood decals. 12 | /// 13 | /// 14 | /// 15 | public enum BloodType 16 | { 17 | /// 18 | /// The default blood decal. 19 | /// 20 | Default, 21 | 22 | /// 23 | /// The blood decal placed after Scp106 sends someone to the pocket dimension. 24 | /// 25 | Scp106, 26 | 27 | /// 28 | /// The spreaded blood decal. 29 | /// 30 | Spreaded, 31 | 32 | /// 33 | /// The faded blood decal. 34 | /// 35 | Faded, 36 | } 37 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/ConfigType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// The different types of configuration files distribution. 12 | /// 13 | public enum ConfigType 14 | { 15 | /// 16 | /// Default distribution, every plugin will share the same config file. 17 | /// 18 | Default, 19 | 20 | /// 21 | /// Separated distribution, each plugin will have an individual config file. 22 | /// 23 | Separated, 24 | } 25 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/DanceType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// All available dance variants being used by SCP-3114. 12 | /// 13 | public enum DanceType : byte 14 | { 15 | /// 16 | /// Break-dance. 17 | /// 18 | BreakDance, 19 | 20 | /// 21 | /// Chicken dance. 22 | /// 23 | ChickenDance, 24 | 25 | /// 26 | /// The "Running Man" dance. 27 | /// 28 | RunningMan, 29 | 30 | /// 31 | /// The "Maraschino" dance. 32 | /// 33 | Maraschino, 34 | 35 | /// 36 | /// Twist dance. 37 | /// 38 | Twist, 39 | 40 | /// 41 | /// The "Cabbage Patch" dance. 42 | /// 43 | CabbagePatch, 44 | 45 | /// 46 | /// Swing dance. 47 | /// 48 | Swing, 49 | 50 | /// 51 | /// Dance1 52 | /// 53 | None = byte.MaxValue, 54 | } 55 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/DisruptorMode.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// Represents disruptor's fire modes. 12 | /// 13 | public enum DisruptorMode 14 | { 15 | /// 16 | /// Unknown mode. 17 | /// 18 | None, 19 | 20 | /// 21 | /// Single shot mode. 22 | /// 23 | Disintegrator, 24 | 25 | /// 26 | /// Triple shot mode. 27 | /// 28 | BurstFire, 29 | } 30 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/DoorBeepType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | using Exiled.API.Features.Doors; 11 | 12 | /// 13 | /// Door beep types. 14 | /// 15 | /// 16 | public enum DoorBeepType 17 | { 18 | /// 19 | /// Permission denied beep. 20 | /// 21 | PermissionDenied, 22 | 23 | /// 24 | /// Lock bypass is denied. 25 | /// 26 | LockBypassDenied, 27 | 28 | /// 29 | /// Interaction denied. 30 | /// 31 | InteractionDenied, 32 | 33 | /// 34 | /// Interaction allowed. 35 | /// 36 | InteractionAllowed, 37 | } 38 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/EffectCategory.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// An enum which represents the categories of an effect. 12 | /// 13 | /// 14 | [System.Flags] 15 | public enum EffectCategory 16 | { 17 | /// 18 | /// Represents an uncategorized effect. 19 | /// 20 | None = 0, 21 | 22 | /// 23 | /// Represents an effect with a positive player impact. 24 | /// 25 | Positive = 1, 26 | 27 | /// 28 | /// Represents an effect with a negative player impact. 29 | /// 30 | Negative = 2, 31 | 32 | /// 33 | /// Represents an effect which modifies a player's movement speed. 34 | /// 35 | Movement = 4, 36 | 37 | /// 38 | /// Represents an effect which deals damage to a player over time. 39 | /// 40 | Harmful = 8, 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/ElevatorType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// The unique type of elevator. 12 | /// 13 | /// 14 | /// 15 | public enum ElevatorType : byte 16 | { 17 | /// 18 | /// Unknown elevator Type. 19 | /// 20 | Unknown, 21 | 22 | /// 23 | /// Entrance Gate A elevator. 24 | /// 25 | GateA, 26 | 27 | /// 28 | /// Entrance Gate B elevator. 29 | /// 30 | GateB, 31 | 32 | /// 33 | /// Heavy Containment Zone Nuke elevator. 34 | /// 35 | Nuke, 36 | 37 | /// 38 | /// Heavy Containment Zone SCP-049 elevator. 39 | /// 40 | Scp049, 41 | 42 | /// 43 | /// Light Containment Zone checkpoint A elevator. 44 | /// 45 | LczA, 46 | 47 | /// 48 | /// Light Containment Zone checkpoint B elevator. 49 | /// 50 | LczB, 51 | } 52 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/EnvironmentType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// A set of environment types. 12 | /// 13 | public enum EnvironmentType 14 | { 15 | /// 16 | /// The development environment, for developers. 17 | /// 18 | Development, 19 | 20 | /// 21 | /// The testing environment, for testing things. 22 | /// 23 | Testing, 24 | 25 | /// 26 | /// The production environment, for the public. 27 | /// 28 | Production, 29 | 30 | /// 31 | /// The ptb environment, for Public Test Builds. 32 | /// 33 | Ptb, 34 | 35 | /// 36 | /// The Production environment, for the public, with debugging features. 37 | /// 38 | ProductionDebug, 39 | } 40 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/EscapeScenario.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// A set of different Escape Scenario Type. 12 | /// 13 | public enum EscapeScenario 14 | { 15 | /// 16 | /// No Escape Scenario. 17 | /// 18 | None, 19 | 20 | /// 21 | /// ClassD Escape Scenario. 22 | /// 23 | ClassD, 24 | 25 | /// 26 | /// Cuffed ClassD Escape. 27 | /// 28 | CuffedClassD, 29 | 30 | /// 31 | /// Scientist Escape. 32 | /// 33 | Scientist, 34 | 35 | /// 36 | /// Cuffed Scientist Escape. 37 | /// 38 | CuffedScientist, 39 | 40 | /// 41 | /// Unspecified Escape. 42 | /// 43 | CustomEscape, 44 | } 45 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/GeneratorState.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | using System; 11 | 12 | using Features; 13 | 14 | /// 15 | /// Represents the state of a . 16 | /// 17 | /// 18 | /// 19 | [Flags] 20 | public enum GeneratorState : byte 21 | { 22 | /// 23 | /// Generator is locked. 24 | /// 25 | None = 1, 26 | 27 | /// 28 | /// Generator is unlocked. 29 | /// 30 | Unlocked = 2, 31 | 32 | /// 33 | /// Generator is open. 34 | /// 35 | Open = 4, 36 | 37 | /// 38 | /// Generator is activating. 39 | /// 40 | Activating = 8, 41 | 42 | /// 43 | /// Generator is engaged. 44 | /// 45 | Engaged = 16, 46 | } 47 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/HazardType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | using Exiled.API.Features.Hazards; 11 | 12 | /// 13 | /// Unique identifier for a . 14 | /// 15 | public enum HazardType 16 | { 17 | /// 18 | /// SCP-939 amnestic cloud. 19 | /// 20 | AmnesticCloud, 21 | 22 | /// 23 | /// Sinkhole spawned at start of round. 24 | /// 25 | Sinkhole, 26 | 27 | /// 28 | /// SCP-173 tantrum. 29 | /// 30 | Tantrum, 31 | 32 | /// 33 | /// Should never happen 34 | /// 35 | Unknown, 36 | } 37 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/LeadingTeam.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | using Extensions; 11 | 12 | using Features; 13 | 14 | using PlayerRoles; 15 | 16 | /// 17 | /// The team that is currently leading the round. 18 | /// 19 | /// 20 | /// 21 | public enum LeadingTeam : byte 22 | { 23 | /// 24 | /// Represents the Scientists, Guards, and NTF team. 25 | /// 26 | FacilityForces, 27 | 28 | /// 29 | /// Represents the Class-D and Chaos Insurgency team. 30 | /// 31 | ChaosInsurgency, 32 | 33 | /// 34 | /// Represents the SCP team. 35 | /// 36 | Anomalies, 37 | 38 | /// 39 | /// Represents a draw. 40 | /// 41 | Draw, 42 | } 43 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/ObjectiveType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// An enum representing the different types of objectives. 12 | /// 13 | /// 14 | public enum ObjectiveType 15 | { 16 | /// 17 | /// Unknown objective. 18 | /// 19 | None, 20 | 21 | /// 22 | /// Objective that is completed when SCP item is picked up. 23 | /// 24 | ScpItemPickup, 25 | 26 | /// 27 | /// Objective that is completed when enemy military is damaged. 28 | /// 29 | HumanDamage, 30 | 31 | /// 32 | /// Objective that is completed when enemy military is killed. 33 | /// 34 | HumanKill, 35 | 36 | /// 37 | /// Objective that is completed when generator is activated. 38 | /// 39 | GeneratorActivation, 40 | 41 | /// 42 | /// Objective that is completed when player escapes. 43 | /// 44 | Escape, 45 | } 46 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/PingType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// Enum that represents the type of SCP-079 ping. 12 | /// 13 | public enum PingType : byte 14 | { 15 | /// 16 | /// Represents a generator ping. 17 | /// 18 | Generator, 19 | 20 | /// 21 | /// Represents a projectile ping. 22 | /// 23 | Projectile, 24 | 25 | /// 26 | /// Represents a Micro-HID ping. 27 | /// 28 | MicroHid, 29 | 30 | /// 31 | /// Represents a human ping. 32 | /// 33 | Human, 34 | 35 | /// 36 | /// Represents an elevator ping. 37 | /// 38 | Elevator, 39 | 40 | /// 41 | /// Represents a door ping. 42 | /// 43 | Door, 44 | 45 | /// 46 | /// Represents a general ping. 47 | /// 48 | Default, 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/RadioRange.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | using Features.Items; 11 | 12 | /// 13 | /// All possible ranges. 14 | /// 15 | /// 16 | public enum RadioRange : byte 17 | { 18 | /// 19 | /// The shortest range with the lowest battery usage. 20 | /// 21 | Short, 22 | 23 | /// 24 | /// The standard, default range. 25 | /// 26 | Medium, 27 | 28 | /// 29 | /// A longer range with increased battery usage. 30 | /// 31 | Long, 32 | 33 | /// 34 | /// The longest range with the most battery usage. 35 | /// 36 | Ultra, 37 | } 38 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/ReservedSlotEventResult.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// Result for ReservedSlots event. 12 | /// 13 | public enum ReservedSlotEventResult 14 | { 15 | /// 16 | /// Don't override the base game decision. 17 | /// 18 | UseBaseGameSystem, 19 | 20 | /// 21 | /// Override: player has a reserved slot. 22 | /// 23 | CanUseReservedSlots, 24 | 25 | /// 26 | /// Override: player doesn't have a reserved slot. 27 | /// 28 | CannotUseReservedSlots, 29 | 30 | /// 31 | /// Bypass the reserved slots system and allow the connection unconditionally. 32 | /// 33 | AllowConnectionUnconditionally, 34 | } 35 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/RespawnEffectType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | using Features; 11 | 12 | using PlayerRoles; 13 | 14 | /// 15 | /// Layers game respawn effects. 16 | /// 17 | public enum RespawnEffectType 18 | { 19 | /// 20 | /// Summons the van. 21 | /// 22 | SummonChaosInsurgencyVan, 23 | 24 | /// 25 | /// Summons the NTF chopper. 26 | /// 27 | SummonNtfChopper, 28 | } 29 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/RevolverChamberState.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | using Exiled.API.Features.Items.FirearmModules.Primary; 11 | 12 | /// 13 | /// States for chamber in revolver cylindric magazine. 14 | /// 15 | /// 16 | public enum RevolverChamberState 17 | { 18 | /// 19 | /// State for empty chamber. 20 | /// 21 | Empty, 22 | 23 | /// 24 | /// State for chamber with a bullet. 25 | /// 26 | Live, 27 | 28 | /// 29 | /// State for discharged chamber. 30 | /// 31 | Discharged, 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/ScenesType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// Unique identifier for the different types of Scenes the client and server can load. 12 | /// 13 | public enum ScenesType 14 | { 15 | /// 16 | /// The facility itself. 17 | /// 18 | Facility, 19 | 20 | /// 21 | /// The current main menu. 22 | /// ! Will cause crash when trying joining servers ! 23 | /// 24 | NewMainMenu, 25 | 26 | /// 27 | /// The old main menu. 28 | /// 29 | MainMenuRemastered, 30 | 31 | /// 32 | /// The old server list. 33 | /// 34 | FastMenu, 35 | 36 | /// 37 | /// The loading Screen. 38 | /// ! Will cause crash when trying joining servers ! 39 | /// 40 | PreLoader, 41 | 42 | /// 43 | /// A black menu before loading the . 44 | /// 45 | Loader, 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/Scp939VisibilityStates.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | using Features.Roles; 11 | 12 | /// 13 | /// Unique identifier for a . 14 | /// 15 | public enum Scp939VisibilityState 16 | { 17 | /// 18 | /// SCP-939 doesnt see an other player, by default FPC role logic. 19 | /// 20 | None, 21 | 22 | /// 23 | /// SCP-939 doesnt see an player, by basic SCP-939 logic. 24 | /// 25 | NotSeen, 26 | 27 | /// 28 | /// SCP-939 sees an other player, who is teammate SCP. 29 | /// 30 | SeenAsScp, 31 | 32 | /// 33 | /// SCP-939 sees an other player due the Alpha Warhead detonation. 34 | /// 35 | SeenByDetonation, 36 | 37 | /// 38 | /// SCP-939 sees an other player, due the base-game vision range logic. 39 | /// 40 | SeenByRange, 41 | 42 | /// 43 | /// SCP-939 sees an other player for a while, after it's out of range. 44 | /// 45 | SeenByLastTime, 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/ShootingTargetButton.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// Possible shooting target buttons. 12 | /// 13 | public enum ShootingTargetButton 14 | { 15 | /// 16 | /// Increase HP button. 17 | /// 18 | IncreaseHp, 19 | 20 | /// 21 | /// Decrease HP button. 22 | /// 23 | DecreaseHp, 24 | 25 | /// 26 | /// Increase reset time button. 27 | /// 28 | IncreaseResetTime, 29 | 30 | /// 31 | /// Decrease reset time button. 32 | /// 33 | DecreaseResetTime, 34 | 35 | /// 36 | /// Reset button. 37 | /// 38 | Reset, 39 | 40 | /// 41 | /// Remove button. 42 | /// 43 | Remove, 44 | 45 | /// 46 | /// Toggle sync mode button. 47 | /// 48 | ToggleSync, 49 | } 50 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/ShootingTargetType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// Shooting target types present in the game. 12 | /// 13 | /// 14 | public enum ShootingTargetType 15 | { 16 | /// 17 | /// Unknown target. 18 | /// 19 | Unknown, 20 | 21 | /// 22 | /// Radial sport target. 23 | /// 24 | Sport, 25 | 26 | /// 27 | /// D-Class target. 28 | /// 29 | ClassD, 30 | 31 | /// 32 | /// Binary target. 33 | /// 34 | Binary, 35 | } 36 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/SpawnableFaction.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// All spawnable factions. 12 | /// 13 | public enum SpawnableFaction 14 | { 15 | /// 16 | /// Represents no wave. 17 | /// 18 | None, 19 | 20 | /// 21 | /// Normal NTF wave. 22 | /// 23 | NtfWave, 24 | 25 | /// 26 | /// Normal Chaos wave. 27 | /// 28 | ChaosWave, 29 | 30 | /// 31 | /// Mini NTF wave. 32 | /// 33 | NtfMiniWave, 34 | 35 | /// 36 | /// Mini Chaos wave. 37 | /// 38 | ChaosMiniWave, 39 | } 40 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/ThrowRequest.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// Possible throwable throw types. 12 | /// 13 | public enum ThrowRequest 14 | { 15 | /// 16 | /// Requesting to begin throwing a throwable item. 17 | /// 18 | BeginThrow, 19 | 20 | /// 21 | /// Requesting to confirm a weak throw. 22 | /// 23 | WeakThrow, 24 | 25 | /// 26 | /// Requesting to confirm a strong throw. 27 | /// 28 | FullForceThrow, 29 | 30 | /// 31 | /// Requesting to cancel a throw. 32 | /// 33 | CancelThrow, 34 | } 35 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/UncuffReason.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// Reasons that player gets uncuffed. 12 | /// 13 | public enum UncuffReason 14 | { 15 | /// 16 | /// Uncuffed by a player. 17 | /// 18 | Player, 19 | 20 | /// 21 | /// Uncuffed due to the distance between cuffer and target. 22 | /// 23 | OutOfRange, 24 | 25 | /// 26 | /// Uncuffed due to the cuffer no longer alive. 27 | /// 28 | CufferDied, 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/UsableRippleType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// All RippleTriggers usable in the game. 12 | /// 13 | /// 14 | public enum UsableRippleType 15 | { 16 | /// 17 | /// The FireArm Ripple. 18 | /// 19 | FireArm, 20 | 21 | /// 22 | /// The Footstep Ripple. 23 | /// 24 | Footstep, 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Enums/WarheadStatus.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Enums 9 | { 10 | /// 11 | /// All the available warhead statuses. 12 | /// 13 | /// 14 | public enum WarheadStatus 15 | { 16 | /// 17 | /// The warhead is not armed. 18 | /// 19 | NotArmed, 20 | 21 | /// 22 | /// The warhead is armed. 23 | /// 24 | Armed, 25 | 26 | /// 27 | /// The warhead detonation is in progress. 28 | /// 29 | InProgress, 30 | 31 | /// 32 | /// The warhead has detonated. 33 | /// 34 | Detonated, 35 | } 36 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Extensions/QueueExtensions.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Extensions 9 | { 10 | using System; 11 | using System.Collections.Generic; 12 | 13 | using Exiled.API.Features.Pools; 14 | 15 | /// 16 | /// extensions. 17 | /// 18 | public static class QueueExtensions 19 | { 20 | /// 21 | /// Removes a specific value from a queue. 22 | /// 23 | /// The to remove from. 24 | /// The item to remove. 25 | /// The of data used. 26 | public static void RemoveFromQueue(this Queue queue, T data) 27 | { 28 | List toKeep = ListPool.Pool.Get(); 29 | for (int i = 0; i < queue.Count; i++) 30 | { 31 | T item = queue.Dequeue(); 32 | if (!item.Equals(data)) 33 | toKeep.Add(item); 34 | } 35 | 36 | foreach (T item2 in toKeep) 37 | queue.Enqueue(item2); 38 | 39 | ListPool.Pool.Return(toKeep); 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Attributes/CustomAbilityAttribute.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Attributes 9 | { 10 | using System; 11 | 12 | /// 13 | /// An attribute to easily manage CustomAbility initialization. 14 | /// 15 | [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] 16 | public sealed class CustomAbilityAttribute : Attribute 17 | { 18 | } 19 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Attributes/CustomItemAttribute.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Attributes 9 | { 10 | using System; 11 | 12 | /// 13 | /// An attribute to easily manage CustomItem initialization. 14 | /// 15 | [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] 16 | public sealed class CustomItemAttribute : Attribute 17 | { 18 | /// 19 | /// Initializes a new instance of the class. 20 | /// 21 | /// The to serialize. 22 | public CustomItemAttribute(ItemType type) 23 | { 24 | ItemType = type; 25 | } 26 | 27 | /// 28 | /// Gets the attribute's . 29 | /// 30 | public ItemType ItemType { get; } 31 | } 32 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Attributes/CustomRoleAttribute.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Attributes 9 | { 10 | using System; 11 | 12 | using PlayerRoles; 13 | 14 | /// 15 | /// An attribute to easily manage CustomRole initialization. 16 | /// 17 | [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] 18 | public sealed class CustomRoleAttribute : Attribute 19 | { 20 | /// 21 | /// Initializes a new instance of the class. 22 | /// 23 | /// The to serialize. 24 | public CustomRoleAttribute(RoleTypeId type) 25 | { 26 | RoleTypeId = type; 27 | } 28 | 29 | /// 30 | /// Gets the attribute's . 31 | /// 32 | public RoleTypeId RoleTypeId { get; } 33 | } 34 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Attributes/DynamicEventDispatcherAttribute.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Attributes 9 | { 10 | using System; 11 | 12 | using Exiled.API.Features.DynamicEvents; 13 | 14 | /// 15 | /// An attribute to easily manage initialization. 16 | /// 17 | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)] 18 | public class DynamicEventDispatcherAttribute : Attribute 19 | { 20 | } 21 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Attributes/PrefabAttribute.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Attributes 9 | { 10 | using System; 11 | 12 | /// 13 | [AttributeUsage(AttributeTargets.Field, AllowMultiple = false)] 14 | public class PrefabAttribute : Attribute 15 | { 16 | /// 17 | /// Initializes a new instance of the class. 18 | /// 19 | /// 20 | /// 21 | public PrefabAttribute(uint assetId, string name) 22 | { 23 | AssetId = assetId; 24 | Name = name; 25 | } 26 | 27 | /// 28 | /// Gets the prefab's asset id. 29 | /// 30 | public uint AssetId { get; } 31 | 32 | /// 33 | /// Gets the prefab's name. 34 | /// 35 | public string Name { get; } 36 | } 37 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Components/FakeConnection.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Components 9 | { 10 | using System; 11 | 12 | using Mirror; 13 | 14 | /// 15 | /// A fake network connection. 16 | /// 17 | public class FakeConnection : NetworkConnectionToClient 18 | { 19 | /// 20 | public FakeConnection(int networkConnectionId) 21 | : base(networkConnectionId) 22 | { 23 | } 24 | 25 | /// 26 | public override string address => "localhost"; 27 | 28 | /// 29 | public override void Send(ArraySegment segment, int channelId = 0) 30 | { 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/ComponentsEqualityComparer.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features 9 | { 10 | using System.Collections.Generic; 11 | 12 | using UnityEngine; 13 | 14 | /// 15 | /// Represents the equality comparer for unity components. 16 | /// 17 | internal class ComponentsEqualityComparer : IEqualityComparer 18 | { 19 | /// 20 | public bool Equals(Component x, Component y) => x == y; 21 | 22 | /// 23 | public int GetHashCode(Component obj) => obj == null ? 0 : obj.GetHashCode(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Core/Attributes/ManagedObjectTypeAttribute.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Core.Attributes 9 | { 10 | using System; 11 | 12 | /// 13 | /// An attribute to mark an type as a managed object type. 14 | /// 15 | [AttributeUsage(AttributeTargets.Class)] 16 | public class ManagedObjectTypeAttribute : Attribute 17 | { 18 | /// 19 | /// Initializes a new instance of the class. 20 | /// 21 | public ManagedObjectTypeAttribute() 22 | { 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Core/Attributes/StateAttribute.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Core.Attributes 9 | { 10 | using System; 11 | 12 | /// 13 | /// An attribute to easily initialize states. 14 | /// 15 | [AttributeUsage(AttributeTargets.Class)] 16 | public class StateAttribute : Attribute 17 | { 18 | } 19 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Core/StateMachine/IState.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Core.StateMachine 9 | { 10 | /// 11 | /// Defines the contract for basic state features. 12 | /// 13 | public interface IState 14 | { 15 | /// 16 | /// Gets the state's id. 17 | /// 18 | public byte Id { get; } 19 | 20 | /// 21 | /// Gets the state's name. 22 | /// 23 | public abstract string Name { get; } 24 | 25 | /// 26 | /// Gets the state's description. 27 | /// 28 | public abstract string Description { get; } 29 | 30 | /// 31 | /// Fired when entering the state. 32 | /// 33 | /// The state controller. 34 | public abstract void OnEnter(StateController stateController); 35 | 36 | /// 37 | /// Fired when exiting the state. 38 | /// 39 | /// The state controller. 40 | public abstract void OnExit(StateController stateController); 41 | } 42 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/CustomHealthStat.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features 9 | { 10 | using PlayerStatsSystem; 11 | 12 | /// 13 | /// A custom version of which allows the player's max amount of health to be changed. 14 | /// TODO: Move to Features.CustomStats. 15 | /// 16 | public class CustomHealthStat : HealthStat 17 | { 18 | /// 19 | public override float MaxValue => CustomMaxValue == default ? base.MaxValue : CustomMaxValue; 20 | 21 | /// 22 | /// Gets or sets the maximum amount of health the player will have. 23 | /// 24 | public float CustomMaxValue { get; set; } 25 | } 26 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/DynamicEvents/IDynamicEventDispatcher.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.DynamicEvents 9 | { 10 | /// 11 | /// Defines a dynamic event dispatcher. 12 | /// 13 | public interface IDynamicEventDispatcher 14 | { 15 | /// 16 | /// Unbinds all the delegates from all the bound delegates. 17 | /// 18 | void UnbindAll(); 19 | } 20 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Hazards/SinkholeHazard.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Hazards 9 | { 10 | using Exiled.API.Enums; 11 | using global::Hazards; 12 | 13 | /// 14 | /// Represents a sinkhole hazard. 15 | /// 16 | public class SinkholeHazard : Hazard 17 | { 18 | /// 19 | /// Initializes a new instance of the class. 20 | /// 21 | /// The instance. 22 | public SinkholeHazard(SinkholeEnvironmentalHazard hazard) 23 | : base(hazard) 24 | { 25 | Base = hazard; 26 | } 27 | 28 | /// 29 | /// Gets the . 30 | /// 31 | public new SinkholeEnvironmentalHazard Base { get; } 32 | 33 | /// 34 | public override HazardType Type => HazardType.Sinkhole; 35 | } 36 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Items/FirearmModules/Barrel/BarrelMagazine.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Items.FirearmModules.Barrel 9 | { 10 | using InventorySystem.Items.Firearms.Modules; 11 | 12 | /// 13 | /// Basic abstraction of whose are logically used to be a barrels magazines. 14 | /// 15 | public abstract class BarrelMagazine : Magazine 16 | { 17 | /// 18 | /// Initializes a new instance of the class. 19 | /// 20 | /// target . 21 | public BarrelMagazine(IAmmoContainerModule module) 22 | : base(module) 23 | { 24 | } 25 | 26 | /// 27 | /// Gets or sets a value indicating whether barrel is cocked. 28 | /// 29 | public abstract bool IsCocked { get; set; } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Pools/IPool.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Pools 9 | { 10 | /// 11 | /// Defines the contract for a class that stores and retrieves commonly used objects. 12 | /// 13 | /// The type that is stored in the pool. 14 | public interface IPool 15 | { 16 | /// 17 | /// Retrieves a stored object of type , or creates it if it does not exist. 18 | /// 19 | /// The stored object, or a new object, of type . 20 | public T Get(); 21 | 22 | /// 23 | /// Returns the object to the pool. 24 | /// 25 | /// The object to return, of type . 26 | public void Return(T obj); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Roles/DestroyedRole.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Roles 9 | { 10 | using System; 11 | using System.Collections.Generic; 12 | using System.Linq; 13 | using System.Text; 14 | using System.Threading.Tasks; 15 | 16 | using PlayerRoles; 17 | using PlayerRoles.Voice; 18 | 19 | /// 20 | /// Defines a role that represents players with destroyed role. 21 | /// 22 | internal class DestroyedRole : Role 23 | { 24 | /// 25 | /// Initializes a new instance of the class. 26 | /// 27 | /// the base . 28 | internal DestroyedRole(PlayerRoleBase baseRole) 29 | : base(baseRole) 30 | { 31 | } 32 | 33 | /// 34 | public override RoleTypeId Type { get; } = RoleTypeId.Destroyed; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Roles/IHumeShieldRole.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Roles 9 | { 10 | using PlayerRoles.PlayableScps.HumeShield; 11 | 12 | /// 13 | /// Represents a role that supports a hume shield. 14 | /// 15 | public interface IHumeShieldRole 16 | { 17 | /// 18 | /// Gets a reference to the role's . 19 | /// 20 | HumeShieldModuleBase HumeShieldModule { get; } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Roles/ISubroutinedScpRole.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Roles 9 | { 10 | using PlayerRoles.Subroutines; 11 | 12 | /// 13 | /// Defines a interface that represents a in player's role. 14 | /// 15 | public interface ISubroutinedScpRole 16 | { 17 | /// 18 | /// Gets the SCP . 19 | /// 20 | SubroutineManagerModule SubroutineModule { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Roles/IVoiceRole.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Roles 9 | { 10 | using PlayerRoles.Voice; 11 | 12 | /// 13 | /// Interface for all roles with . 14 | /// 15 | public interface IVoiceRole 16 | { 17 | /// 18 | /// Gets the of the role. 19 | /// 20 | public VoiceModuleBase VoiceModule { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Roles/NoneRole.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Roles 9 | { 10 | using PlayerRoles; 11 | using PlayerRoles.Voice; 12 | 13 | using NoneGameRole = PlayerRoles.NoneRole; 14 | 15 | /// 16 | /// Defines a role that represents players with no role. 17 | /// 18 | public class NoneRole : Role, IVoiceRole 19 | { 20 | /// 21 | /// Initializes a new instance of the class. 22 | /// 23 | /// the base . 24 | internal NoneRole(PlayerRoleBase baseRole) 25 | : base(baseRole) 26 | { 27 | } 28 | 29 | /// 30 | public override RoleTypeId Type { get; } = RoleTypeId.None; 31 | 32 | /// 33 | public VoiceModuleBase VoiceModule => (Base as NoneGameRole) !.VoiceModule; 34 | } 35 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Spawn/SpawnPoint.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Spawn 9 | { 10 | using Exiled.API.Interfaces; 11 | using UnityEngine; 12 | 13 | /// 14 | /// Defines item spawn properties. 15 | /// 16 | public abstract class SpawnPoint : IPosition 17 | { 18 | /// 19 | /// Gets or sets this spawn point name. 20 | /// 21 | public abstract string Name { get; set; } 22 | 23 | /// 24 | /// Gets or sets the spawn chance. 25 | /// 26 | public abstract float Chance { get; set; } 27 | 28 | /// 29 | /// Gets or sets this spawn point position. 30 | /// 31 | public abstract Vector3 Position { get; set; } 32 | 33 | /// 34 | /// Deconstructs the class into usable variables. 35 | /// 36 | /// 37 | /// 38 | public void Deconstruct(out float chance, out Vector3 position) 39 | { 40 | chance = Chance; 41 | position = Position; 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Features/Spawn/StaticSpawnPoint.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Features.Spawn 9 | { 10 | using UnityEngine; 11 | 12 | /// 13 | /// Handles static spawn locations. 14 | /// 15 | public class StaticSpawnPoint : SpawnPoint 16 | { 17 | /// 18 | public override string Name { get; set; } 19 | 20 | /// 21 | public override float Chance { get; set; } 22 | 23 | /// 24 | public override Vector3 Position { get; set; } 25 | } 26 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Interfaces/IConfig.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Interfaces 9 | { 10 | using System.ComponentModel; 11 | 12 | /// 13 | /// Defines the contract for basic config features. 14 | /// 15 | public interface IConfig 16 | { 17 | /// 18 | /// Gets or sets a value indicating whether the plugin is enabled. 19 | /// 20 | [Description("Whether this plugin is enabled.")] 21 | bool IsEnabled { get; set; } 22 | 23 | /// 24 | /// Gets or sets a value indicating whether debug messages should be displayed in the console. 25 | /// 26 | [Description("Whether debug messages should be shown in the console.")] 27 | bool Debug { get; set; } 28 | } 29 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Interfaces/INonInteractableDoor.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Interfaces 9 | { 10 | /// 11 | /// Represents an interface for all non-interactable doors. 12 | /// 13 | public interface INonInteractableDoor 14 | { 15 | /// 16 | /// Gets or sets a value indicating whether door should ignore lockdowns. 17 | /// 18 | public bool IgnoreLockdowns { get; set; } 19 | 20 | /// 21 | /// Gets or sets a value indicating whether door should ignore RA requests. 22 | /// 23 | public bool IgnoreRemoteAdmin { get; set; } 24 | } 25 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Interfaces/IPosition.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Interfaces 9 | { 10 | using UnityEngine; 11 | 12 | /// 13 | /// Represents an object with a position. 14 | /// 15 | public interface IPosition 16 | { 17 | /// 18 | /// Gets the position of this object. 19 | /// 20 | public Vector3 Position { get; } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Interfaces/IRotation.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Interfaces 9 | { 10 | using UnityEngine; 11 | 12 | /// 13 | /// Represents an object with a rotation. 14 | /// 15 | public interface IRotation 16 | { 17 | /// 18 | /// Gets the rotation of this object. 19 | /// 20 | public Quaternion Rotation { get; } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Interfaces/ITranslation.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Interfaces 9 | { 10 | /// 11 | /// Defines the contract for basic translation features. 12 | /// 13 | public interface ITranslation 14 | { 15 | } 16 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Interfaces/IWorldSpace.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Interfaces 9 | { 10 | using UnityEngine; 11 | 12 | /// 13 | /// Represents an object with a position and a rotation. 14 | /// 15 | public interface IWorldSpace : IPosition, IRotation 16 | { 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /EXILED/Exiled.API/Interfaces/IWrapper.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Interfaces 9 | { 10 | /// 11 | /// Defines the contract for classes that wrap a base-game object. 12 | /// 13 | /// The base-game class that is being wrapped. 14 | public interface IWrapper 15 | { 16 | /// 17 | /// Gets the base that this class is wrapping. 18 | /// 19 | public T Base { get; } 20 | } 21 | } -------------------------------------------------------------------------------- /EXILED/Exiled.API/Structs/RadioRangeSettings.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.API.Structs 9 | { 10 | /// 11 | /// Settings for specific radio ranges. 12 | /// 13 | public struct RadioRangeSettings 14 | { 15 | /// 16 | /// The amount of battery usage per minute while idle. 17 | /// 18 | public float IdleUsage; 19 | 20 | /// 21 | /// The amount of battery usage per minute while talking. 22 | /// 23 | public int TalkingUsage; 24 | 25 | /// 26 | /// The maximum range in which this radio will pickup and send voice messages. 27 | /// 28 | public int MaxRange; 29 | } 30 | } -------------------------------------------------------------------------------- /EXILED/Exiled.CreditTags/Config.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.CreditTags 9 | { 10 | using System.ComponentModel; 11 | 12 | using Exiled.API.Interfaces; 13 | using Exiled.CreditTags.Enums; 14 | 15 | /// 16 | public sealed class Config : IConfig 17 | { 18 | /// 19 | public bool IsEnabled { get; set; } = true; 20 | 21 | /// 22 | public bool Debug { get; set; } 23 | 24 | [Description("Info side - Badge, CustomPlayerInfo, FirstAvailable")] 25 | public InfoSide Mode { get; private set; } = InfoSide.FirstAvailable; 26 | 27 | [Description("Overrides badge if exists")] 28 | public bool BadgeOverride { get; private set; } = false; 29 | 30 | [Description("Overrides Custom Player Info if exists")] 31 | public bool CustomPlayerInfoOverride { get; private set; } = false; 32 | 33 | [Description("Whether the plugin should ignore a player's DNT flag. By default (false), players with DNT flag will not be checked for credit tags.")] 34 | public bool IgnoreDntFlag { get; private set; } = false; 35 | } 36 | } -------------------------------------------------------------------------------- /EXILED/Exiled.CreditTags/Enums/InfoSide.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.CreditTags.Enums 9 | { 10 | /// 11 | /// Represents all the ways a rank can be shown. 12 | /// 13 | public enum InfoSide 14 | { 15 | /// 16 | /// Uses badge. 17 | /// 18 | Badge, 19 | 20 | /// 21 | /// Uses Custom Player Info area 22 | /// 23 | CustomPlayerInfo, 24 | 25 | /// 26 | /// Uses Badge if available, otherwise uses CustomPlayerInfo if available. 27 | /// 28 | FirstAvailable, 29 | 30 | /// 31 | /// Includes both options. 32 | /// 33 | Both = Badge, 34 | } 35 | } -------------------------------------------------------------------------------- /EXILED/Exiled.CreditTags/Enums/RankType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.CreditTags.Enums 9 | { 10 | /// 11 | /// Represents all existing ranks. 12 | /// 13 | public enum RankType 14 | { 15 | /// 16 | /// No EXILED roles. 17 | /// 18 | None, 19 | 20 | /// 21 | /// Exiled Developer. 22 | /// 23 | Dev = 1, 24 | 25 | /// 26 | /// Exiled Contributor. 27 | /// 28 | Contributor = 2, 29 | 30 | /// 31 | /// Exiled Plugin Developer. 32 | /// 33 | PluginDev = 3, 34 | 35 | /// 36 | /// EXILED Tournament Participant. 37 | /// 38 | TournamentParticipant = 4, 39 | 40 | /// 41 | /// EXILED Tournament Champion. 42 | /// 43 | TournamentChampion = 5, 44 | 45 | /// 46 | /// EXILED Donator. 47 | /// 48 | Donator = 6, 49 | } 50 | } -------------------------------------------------------------------------------- /EXILED/Exiled.CreditTags/Events/CreditsHandler.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.CreditTags.Events 9 | { 10 | using Exiled.CreditTags.Features; 11 | using Exiled.Events.EventArgs.Player; 12 | using MEC; 13 | 14 | using static CreditTags; 15 | 16 | /// 17 | /// Event Handlers for the plugin of Exiled. 18 | /// 19 | internal sealed class CreditsHandler 20 | { 21 | /// 22 | /// Handles checking if a player should have a credit tag or not upon joining. 23 | /// 24 | /// 25 | public void OnPlayerVerify(VerifiedEventArgs ev) 26 | { 27 | DatabaseHandler.UpdateData(); 28 | Timing.CallDelayed(0.5f, () => Instance.ShowCreditTag(ev.Player)); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /EXILED/Exiled.CreditTags/Features/TagItem.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.CreditTags.Features 9 | { 10 | using Serialization; 11 | 12 | /// 13 | /// Represents a tag item. 14 | /// 15 | public class TagItem 16 | { 17 | /// 18 | /// Gets or sets the SHA256 hashed user id. 19 | /// 20 | public string Id { get; set; } 21 | 22 | /// 23 | /// Gets or sets the type of rank based on . 24 | /// 25 | public byte Type { get; set; } 26 | 27 | /// 28 | /// Gets all the tag items from a yaml string. 29 | /// 30 | /// The yaml string. 31 | /// Returns an array of . 32 | public static TagItem[] FromYaml(string yaml) => YamlParser.Deserializer.Deserialize(yaml); 33 | } 34 | } -------------------------------------------------------------------------------- /EXILED/Exiled.CustomItems/Events/MapHandler.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.CustomItems.Events 9 | { 10 | using Exiled.API.Features; 11 | using Exiled.CustomItems.API.Features; 12 | using MEC; 13 | 14 | /// 15 | /// Event Handlers for the CustomItem API. 16 | /// 17 | internal sealed class MapHandler 18 | { 19 | /// 20 | public void OnWaitingForPlayers() 21 | { 22 | Timing.CallDelayed(2, () => // The delay is necessary because the generation of the lockers takes time, due to the way they are made in the base game. 23 | { 24 | foreach (CustomItem customItem in CustomItem.Registered) 25 | { 26 | try 27 | { 28 | customItem?.SpawnAll(); 29 | } 30 | catch (System.Exception e) 31 | { 32 | Log.Error($"There was an error while spawning the custom item '{customItem?.Name}' ({customItem?.Id}) | {e.Message}"); 33 | } 34 | } 35 | }); 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /EXILED/Exiled.CustomRoles/API/Features/Enums/CheckType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.CustomRoles.API.Features.Enums 9 | { 10 | /// 11 | /// The possible types of checks to preform on active abilities. 12 | /// 13 | public enum CheckType 14 | { 15 | /// 16 | /// Check if the ability is available to the player. (DOES NOT CHECK COOLDOWNS) 17 | /// 18 | Available, 19 | 20 | /// 21 | /// Check if the ability is selected, but not active. 22 | /// 23 | Selected, 24 | 25 | /// 26 | /// The ability is currently active. 27 | /// 28 | Active, 29 | } 30 | } -------------------------------------------------------------------------------- /EXILED/Exiled.CustomRoles/API/Features/Enums/KeypressActivationType.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.CustomRoles.API.Features.Enums 9 | { 10 | /// 11 | /// The action type that should be triggered from a keypress trigger. 12 | /// 13 | public enum AbilityKeypressTriggerType 14 | { 15 | /// 16 | /// No action. 17 | /// 18 | None, 19 | 20 | /// 21 | /// Activate ability. 22 | /// 23 | Activate, 24 | 25 | /// 26 | /// Switch to next ability. 27 | /// 28 | SwitchForward, 29 | 30 | /// 31 | /// Switch to previous ability. 32 | /// 33 | SwitchBackward, 34 | 35 | /// 36 | /// Display information about the ability to the user. 37 | /// 38 | DisplayInfo, 39 | } 40 | } -------------------------------------------------------------------------------- /EXILED/Exiled.CustomRoles/API/Features/Interfaces/ITypeDiscriminator.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.CustomRoles.API.Features.Interfaces 9 | { 10 | using System; 11 | 12 | using Exiled.CustomRoles.API.Features.Parsers; 13 | 14 | /// 15 | /// A discriminator. 16 | /// 17 | public interface ITypeDiscriminator 18 | { 19 | /// 20 | /// Gets the base . 21 | /// 22 | Type BaseType { get; } 23 | 24 | /// 25 | /// Tries to resolve a mapping into a specific . 26 | /// 27 | /// The parser buffer. 28 | /// The to resolve the mapping key. 29 | /// if resolution is successful; otherwise, . 30 | bool TryResolve(ParsingEventBuffer buffer, out Type? suggestedType); 31 | } 32 | } -------------------------------------------------------------------------------- /EXILED/Exiled.CustomRoles/API/Features/PassiveAbility.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.CustomRoles.API.Features 9 | { 10 | /// 11 | /// The base class for passive (always active) abilities. 12 | /// 13 | public abstract class PassiveAbility : CustomAbility 14 | { 15 | } 16 | } -------------------------------------------------------------------------------- /EXILED/Exiled.CustomRoles/Events/PlayerHandlers.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.CustomRoles.Events 9 | { 10 | using Exiled.Events.EventArgs.Player; 11 | 12 | /// 13 | /// Handles general events for players. 14 | /// 15 | public class PlayerHandlers 16 | { 17 | private readonly CustomRoles plugin; 18 | 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// The plugin instance. 23 | public PlayerHandlers(CustomRoles plugin) 24 | { 25 | this.plugin = plugin; 26 | } 27 | 28 | /// 29 | internal void OnSpawningRagdoll(SpawningRagdollEventArgs ev) 30 | { 31 | if (plugin.StopRagdollPlayers.Contains(ev.Player)) 32 | { 33 | ev.IsAllowed = false; 34 | plugin.StopRagdollPlayers.Remove(ev.Player); 35 | } 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Commands/Config/EConfig.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Commands.Config 9 | { 10 | using System; 11 | 12 | using CommandSystem; 13 | 14 | /// 15 | /// The config command. 16 | /// 17 | [CommandHandler(typeof(GameConsoleCommandHandler))] 18 | public class EConfig : ParentCommand 19 | { 20 | /// 21 | public override string Command { get; } = "econfig"; 22 | 23 | /// 24 | public override string[] Aliases { get; } = new[] { "ecfg" }; 25 | 26 | /// 27 | public override string Description { get; } = "Changes from one config distribution to another one."; 28 | 29 | /// 30 | public override void LoadGeneratedCommands() 31 | { 32 | } 33 | 34 | /// 35 | protected override bool ExecuteParent(ArraySegment arguments, ICommandSender sender, out string response) 36 | { 37 | response = "Please, specify a valid subcommand! Available ones: merge, split"; 38 | return false; 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Commands/Hub/HubApi/Models/HubPlugin.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Commands.Hub.HubApi.Models 9 | { 10 | using System.Runtime.Serialization; 11 | 12 | using Utf8Json; 13 | 14 | /// 15 | /// A struct containing all hub plugin data. 16 | /// 17 | public readonly struct HubPlugin : IJsonSerializable 18 | { 19 | /// 20 | /// The repository id. 21 | /// 22 | [DataMember(Name = "repositoryId")] 23 | public readonly long RepositoryId; 24 | 25 | /// 26 | /// Initializes a new instance of the struct. 27 | /// 28 | /// 29 | [SerializationConstructor] 30 | public HubPlugin(long repositoryId) 31 | { 32 | RepositoryId = repositoryId; 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IAttackerEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using API.Features; 11 | using API.Features.DamageHandlers; 12 | 13 | /// 14 | /// Event args for when a player is taking damage. 15 | /// 16 | public interface IAttackerEvent : IPlayerEvent 17 | { 18 | /// 19 | /// Gets the attacker . 20 | /// 21 | public Player Attacker { get; } 22 | 23 | /// 24 | /// Gets or sets the managing the damage to the target. 25 | /// 26 | public CustomDamageHandler DamageHandler { get; set; } 27 | } 28 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/ICameraEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using API.Features; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface ICameraEvent : IExiledEvent 16 | { 17 | /// 18 | /// Gets or sets the triggering the event. 19 | /// 20 | public Camera Camera { get; set; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IDeniableEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | /// 11 | /// Event args for events that can be allowed or denied. 12 | /// 13 | public interface IDeniableEvent : IExiledEvent 14 | { 15 | /// 16 | /// Gets or sets a value indicating whether the event is allowed to continue. 17 | /// 18 | public bool IsAllowed { get; set; } 19 | } 20 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IDoorEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using Exiled.API.Features.Doors; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IDoorEvent : IExiledEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Door Door { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IExiledEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | /// 11 | /// The base Exiled Event Args interface to be used by all other event arg interfaces/classes. 12 | /// 13 | public interface IExiledEvent 14 | { 15 | } 16 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IFirearmEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using API.Features.Items; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IFirearmEvent : IItemEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Firearm Firearm { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IGeneratorEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using API.Features; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IGeneratorEvent : IExiledEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Generator Generator { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IHazardEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using Exiled.API.Features.Hazards; 11 | 12 | /// 13 | /// Event args for all related events. 14 | /// 15 | public interface IHazardEvent : IExiledEvent 16 | { 17 | /// 18 | /// Gets the environmental hazard that the player is interacting with. 19 | /// 20 | public Hazard Hazard { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IItemEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using API.Features.Items; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IItemEvent : IPlayerEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Item Item { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IPickupEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using Exiled.API.Features.Pickups; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IPickupEvent : IExiledEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Pickup Pickup { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IPlayerEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using API.Features; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IPlayerEvent : IExiledEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Player Player { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IRagdollEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using API.Features; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IRagdollEvent : IExiledEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Ragdoll Ragdoll { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IRoomEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using API.Features; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IRoomEvent : IExiledEvent 16 | { 17 | /// 18 | /// Gets the that is a part of the event. 19 | /// 20 | public Room Room { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IScp0492Event.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using Exiled.API.Features.Roles; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IScp0492Event : IPlayerEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Scp0492Role Scp0492 { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IScp049Event.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using Exiled.API.Features.Roles; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IScp049Event : IPlayerEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Scp049Role Scp049 { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IScp079Event.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using Exiled.API.Features.Roles; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IScp079Event : IPlayerEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Scp079Role Scp079 { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IScp096Event.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using Exiled.API.Features.Roles; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IScp096Event : IPlayerEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Scp096Role Scp096 { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IScp106Event.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using Exiled.API.Features.Roles; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IScp106Event : IPlayerEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Scp106Role Scp106 { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IScp1344Event.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using Exiled.API.Features.Items; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IScp1344Event : IItemEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Scp1344 Scp1344 { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IScp1507Event.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using System; 11 | 12 | using Exiled.API.Features.Roles; 13 | 14 | /// 15 | /// Event args used for all related events. 16 | /// 17 | [Obsolete("Only availaible for Christmas and AprilFools.")] 18 | public interface IScp1507Event : IPlayerEvent 19 | { 20 | /// 21 | /// Gets the triggering the event. 22 | /// 23 | public Scp1507Role Scp1507 { get; } 24 | } 25 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IScp173Event.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using Exiled.API.Features.Roles; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IScp173Event : IPlayerEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Scp173Role Scp173 { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IScp3114Event.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using Exiled.API.Features.Roles; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IScp3114Event : IPlayerEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Scp3114Role Scp3114 { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IScp330Event.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using Exiled.API.Features.Items; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IScp330Event : IItemEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Scp330 Scp330 { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IScp559Event.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using System; 11 | 12 | /// 13 | /// Defines the base contract for all related events. 14 | /// 15 | [Obsolete("Only availaible for Christmas and AprilFools.")] 16 | public interface IScp559Event : IExiledEvent 17 | { 18 | /// 19 | /// Gets the . 20 | /// 21 | public API.Features.Scp559 Scp559 { get; } 22 | } 23 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IScp939Event.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using Exiled.API.Features.Roles; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IScp939Event : IPlayerEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Scp939Role Scp939 { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/ITeslaEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using API.Features; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface ITeslaEvent : IExiledEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public TeslaGate Tesla { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Interfaces/IUsableEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Interfaces 9 | { 10 | using Exiled.API.Features.Items; 11 | 12 | /// 13 | /// Event args used for all related events. 14 | /// 15 | public interface IUsableEvent : IItemEvent 16 | { 17 | /// 18 | /// Gets the triggering the event. 19 | /// 20 | public Usable Usable { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Map/DecontaminatingEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Map 9 | { 10 | using Interfaces; 11 | 12 | /// 13 | /// Contains all information before decontaminating the light containment zone. 14 | /// 15 | public class DecontaminatingEventArgs : IDeniableEvent 16 | { 17 | /// 18 | /// Initializes a new instance of the class. 19 | /// 20 | /// 21 | /// 22 | /// 23 | public DecontaminatingEventArgs(bool isAllowed = true) 24 | { 25 | IsAllowed = isAllowed; 26 | } 27 | 28 | /// 29 | /// Gets or sets a value indicating whether light containment zone decontamination can begin. 30 | /// 31 | public bool IsAllowed { get; set; } 32 | } 33 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Map/PickupAddedEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Map 9 | { 10 | using Exiled.API.Features.Pickups; 11 | using Exiled.Events.EventArgs.Interfaces; 12 | using InventorySystem.Items.Pickups; 13 | 14 | /// 15 | /// Contains all information after the server spawns a pickup. 16 | /// 17 | public class PickupAddedEventArgs : IPickupEvent 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | /// 24 | /// 25 | public PickupAddedEventArgs(ItemPickupBase pickupBase) 26 | { 27 | Pickup = Pickup.Get(pickupBase); 28 | } 29 | 30 | /// 31 | /// Gets a value indicating the pickup being spawned. 32 | /// 33 | public Pickup Pickup { get; } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Map/PickupDestroyedEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Map 9 | { 10 | using Exiled.API.Features.Pickups; 11 | using Exiled.Events.EventArgs.Interfaces; 12 | using InventorySystem.Items.Pickups; 13 | 14 | /// 15 | /// Contains all information after the server destroys a pickup. 16 | /// 17 | public class PickupDestroyedEventArgs : IPickupEvent 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | /// 24 | /// 25 | public PickupDestroyedEventArgs(ItemPickupBase pickupBase) 26 | { 27 | Pickup = Pickup.Get(pickupBase); 28 | } 29 | 30 | /// 31 | /// Gets a value indicating the pickup being destroyed. 32 | /// 33 | public Pickup Pickup { get; } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Player/ChangedEmotionEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Player 9 | { 10 | using Exiled.API.Features; 11 | using Exiled.Events.EventArgs.Interfaces; 12 | using PlayerRoles.FirstPersonControl.Thirdperson.Subcontrollers; 13 | 14 | /// 15 | /// Contains all the information after the player's emotion. 16 | /// 17 | public class ChangedEmotionEventArgs : IPlayerEvent 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | /// 24 | public ChangedEmotionEventArgs(ReferenceHub hub, EmotionPresetType emotionPresetType) 25 | { 26 | Player = Player.Get(hub); 27 | EmotionPresetType = emotionPresetType; 28 | } 29 | 30 | /// 31 | /// Gets the player's emotion. 32 | /// 33 | public EmotionPresetType EmotionPresetType { get; } 34 | 35 | /// 36 | public Player Player { get; } 37 | } 38 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Player/DestroyingEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Player 9 | { 10 | using API.Features; 11 | 12 | using Interfaces; 13 | 14 | /// 15 | /// Contains all information before a player's object is destroyed. 16 | /// 17 | public class DestroyingEventArgs : IPlayerEvent 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | /// 24 | /// 25 | public DestroyingEventArgs(Player player) 26 | { 27 | Player = player; 28 | #if DEBUG 29 | Log.Debug($"Destroying obj for {player.Nickname}"); 30 | #endif 31 | } 32 | 33 | /// 34 | /// Gets the destroying player. 35 | /// 36 | public Player Player { get; } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Player/DroppingNothingEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Player 9 | { 10 | using API.Features; 11 | 12 | using Interfaces; 13 | 14 | /// 15 | /// Contains all information before a player drops a null item. 16 | /// 17 | public class DroppingNothingEventArgs : IPlayerEvent 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | /// 24 | /// 25 | public DroppingNothingEventArgs(Player player) => Player = player; 26 | 27 | /// 28 | /// Gets the player who's dropping the null item. 29 | /// 30 | public Player Player { get; } 31 | } 32 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Player/InteractedEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Player 9 | { 10 | using API.Features; 11 | 12 | using Interfaces; 13 | 14 | /// 15 | /// Contains all information after a player has interacted with an interactable. 16 | /// 17 | public class InteractedEventArgs : IPlayerEvent 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | /// 24 | /// 25 | public InteractedEventArgs(Player player) 26 | { 27 | Player = player; 28 | } 29 | 30 | /// 31 | /// Gets the player who interacted. 32 | /// 33 | public Player Player { get; } 34 | } 35 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Player/JoinedEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Player 9 | { 10 | using API.Features; 11 | 12 | using Interfaces; 13 | 14 | /// 15 | /// Contains all information after a player joins the server. 16 | /// 17 | public class JoinedEventArgs : IPlayerEvent 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | /// 24 | /// 25 | public JoinedEventArgs(Player player) => Player = player; 26 | 27 | /// 28 | /// Gets the joined player. 29 | /// 30 | public Player Player { get; } 31 | } 32 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Player/KickedEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Player 9 | { 10 | using API.Features; 11 | 12 | using Interfaces; 13 | 14 | /// 15 | /// Contains all information after kicking a player from the server. 16 | /// 17 | public class KickedEventArgs : IPlayerEvent 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | /// 24 | /// 25 | /// 26 | /// 27 | /// 28 | public KickedEventArgs(Player target, string reason) 29 | { 30 | Player = target; 31 | Reason = reason; 32 | } 33 | 34 | /// 35 | /// Gets the kick reason. 36 | /// 37 | public string Reason { get; } 38 | 39 | /// 40 | /// Gets the kicked player. 41 | /// 42 | public Player Player { get; } 43 | } 44 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Player/LandingEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Player 9 | { 10 | using API.Features; 11 | 12 | using Interfaces; 13 | 14 | /// 15 | /// Contains all the information after a lands on the ground. 16 | /// 17 | public class LandingEventArgs : IPlayerEvent 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | /// 24 | /// 25 | public LandingEventArgs(Player player) => Player = player; 26 | 27 | /// 28 | /// Gets the who's landing. 29 | /// 30 | public Player Player { get; } 31 | } 32 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Player/LeftEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Player 9 | { 10 | using API.Features; 11 | 12 | /// 13 | /// Contains all information after a disconnects from the server. 14 | /// 15 | public class LeftEventArgs : JoinedEventArgs 16 | { 17 | /// 18 | /// Initializes a new instance of the class. 19 | /// 20 | /// The player who left the server. 21 | public LeftEventArgs(Player player) 22 | : base(player) 23 | { 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Player/RevokingMuteEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Player 9 | { 10 | using API.Features; 11 | 12 | /// 13 | /// Contains all information before unmuting a player. 14 | /// 15 | public class RevokingMuteEventArgs : IssuingMuteEventArgs 16 | { 17 | /// 18 | /// Initializes a new instance of the class. 19 | /// 20 | /// 21 | /// The player who's being unmuted. 22 | /// 23 | /// 24 | /// Indicates whether the player is being intercom unmuted. 25 | /// 26 | /// 27 | /// Indicates whether the player can be unmuted. 28 | /// 29 | public RevokingMuteEventArgs(Player player, bool isIntercom, bool isAllowed = true) 30 | : base(player, isIntercom, isAllowed) 31 | { 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Player/VerifiedEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Player 9 | { 10 | using API.Features; 11 | 12 | using Interfaces; 13 | 14 | /// 15 | /// Contains all information after the server verifies a player. 16 | /// 17 | public class VerifiedEventArgs : IPlayerEvent 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | /// 24 | /// 25 | public VerifiedEventArgs(Player player) => Player = player; 26 | 27 | /// 28 | /// Gets the verified player. 29 | /// 30 | public Player Player { get; } 31 | } 32 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Scp079/LostSignalEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Scp079 9 | { 10 | using Exiled.API.Features; 11 | using Exiled.Events.EventArgs.Interfaces; 12 | 13 | /// 14 | /// Contains all information before SCP-079 loses a signal by SCP-2176. 15 | /// 16 | public class LostSignalEventArgs : IScp079Event 17 | { 18 | /// 19 | /// Initializes a new instance of the class. 20 | /// 21 | /// 22 | /// 23 | /// 24 | public LostSignalEventArgs(ReferenceHub player) 25 | { 26 | Player = Player.Get(player); 27 | Scp079 = Player.Role.As(); 28 | } 29 | 30 | /// 31 | /// Gets the player who's controlling SCP-079. 32 | /// 33 | public Player Player { get; } 34 | 35 | /// 36 | public API.Features.Roles.Scp079Role Scp079 { get; } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Scp079/StartingSpeakerEventArgs.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExMod-Team/EXILED/75b4621067f181ca1f5e3344ca9bc4932ffc4059/EXILED/Exiled.Events/EventArgs/Scp079/StartingSpeakerEventArgs.cs -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Scp079/StoppingSpeakerEventArgs.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExMod-Team/EXILED/75b4621067f181ca1f5e3344ca9bc4932ffc4059/EXILED/Exiled.Events/EventArgs/Scp079/StoppingSpeakerEventArgs.cs -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Scp1344/DeactivatedEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Scp1344 9 | { 10 | using Exiled.API.Features.Items; 11 | using Exiled.Events.EventArgs.Interfaces; 12 | 13 | /// 14 | /// Contains all information after deactivating. 15 | /// 16 | public class DeactivatedEventArgs : IPlayerEvent, IScp1344Event 17 | { 18 | /// 19 | /// Initializes a new instance of the class. 20 | /// 21 | /// 22 | public DeactivatedEventArgs(Item item) 23 | { 24 | Item = item; 25 | Scp1344 = item as Scp1344; 26 | Player = item.Owner; 27 | } 28 | 29 | /// 30 | /// Gets the item. 31 | /// 32 | public Item Item { get; } 33 | 34 | /// 35 | /// Gets the player in owner of the item. 36 | /// 37 | public Exiled.API.Features.Player Player { get; } 38 | 39 | /// 40 | /// Gets Scp1344 item. 41 | /// 42 | public Scp1344 Scp1344 { get; } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Scp2536/OpeningGiftEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Scp2536 9 | { 10 | using Christmas.Scp2536; 11 | using Exiled.API.Features; 12 | using Exiled.Events.EventArgs.Interfaces; 13 | 14 | /// 15 | /// Contains all information before player receives a gift from SCP-2536. 16 | /// 17 | public class OpeningGiftEventArgs : IDeniableEvent, IPlayerEvent 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | /// 24 | public OpeningGiftEventArgs(Player player, bool isAllowed = true) 25 | { 26 | Player = player; 27 | IsAllowed = isAllowed; 28 | } 29 | 30 | /// 31 | public bool IsAllowed { get; set; } 32 | 33 | /// 34 | public Player Player { get; } 35 | } 36 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Scp3114/DisguisedEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Scp3114 9 | { 10 | using API.Features; 11 | using Exiled.API.Features.Roles; 12 | using Interfaces; 13 | 14 | /// 15 | /// Contains all information after SCP-3114 disguised. 16 | /// 17 | public class DisguisedEventArgs : IScp3114Event, IRagdollEvent 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | /// 24 | /// 25 | /// 26 | /// 27 | /// 28 | public DisguisedEventArgs(Player player, Ragdoll ragdoll) 29 | { 30 | Player = player; 31 | Scp3114 = Player.Role.As(); 32 | Ragdoll = ragdoll; 33 | } 34 | 35 | /// 36 | public Player Player { get; } 37 | 38 | /// 39 | public Scp3114Role Scp3114 { get; } 40 | 41 | /// 42 | public Ragdoll Ragdoll { get; } 43 | } 44 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Scp939/ClawedEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Scp939 9 | { 10 | using API.Features; 11 | using Exiled.API.Features.Roles; 12 | using Exiled.Events.EventArgs.Interfaces; 13 | 14 | /// 15 | /// Contains all information after SCP-939 attacks. 16 | /// 17 | public class ClawedEventArgs : IScp939Event 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | public ClawedEventArgs(Player player) 24 | { 25 | Player = player; 26 | Scp939 = Player.Role.As(); 27 | } 28 | 29 | /// 30 | /// Gets the SCP-939. 31 | /// 32 | public Player Player { get; } 33 | 34 | /// 35 | public Scp939Role Scp939 { get; } 36 | } 37 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Scp939/LungingEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Scp939 9 | { 10 | using API.Features; 11 | using Exiled.API.Features.Roles; 12 | using Interfaces; 13 | 14 | /// 15 | /// Contains all information before SCP-939 uses its lunge ability. 16 | /// 17 | public class LungingEventArgs : IScp939Event 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | /// 24 | /// 25 | public LungingEventArgs(Player player) 26 | { 27 | Player = player; 28 | Scp939 = Player.Role.As(); 29 | } 30 | 31 | /// 32 | /// Gets the player who's controlling SCP-939. 33 | /// 34 | public Player Player { get; } 35 | 36 | /// 37 | public Scp939Role Scp939 { get; } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Server/CompletingObjectiveEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Server 9 | { 10 | using Exiled.API.Features.Objectives; 11 | using Exiled.Events.EventArgs.Interfaces; 12 | using Respawning.Objectives; 13 | 14 | /// 15 | /// Contains all information before the completion of an objective. 16 | /// 17 | public class CompletingObjectiveEventArgs : IDeniableEvent 18 | { 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// 23 | /// 24 | public CompletingObjectiveEventArgs(FactionObjectiveBase objective, bool isAllowed = true) 25 | { 26 | Objective = Objective.Get(objective); 27 | IsAllowed = isAllowed; 28 | } 29 | 30 | /// 31 | /// Gets the objective that is being completed. 32 | /// 33 | public Objective Objective { get; } 34 | 35 | /// 36 | public bool IsAllowed { get; set; } 37 | } 38 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Server/UnbannedEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Server 9 | { 10 | using Exiled.Events.EventArgs.Interfaces; 11 | 12 | /// 13 | /// Contains all information after a player gets unbanned. 14 | /// 15 | public class UnbannedEventArgs : IExiledEvent 16 | { 17 | /// 18 | /// Initializes a new instance of the class. 19 | /// 20 | /// 21 | /// 22 | public UnbannedEventArgs(string id, BanHandler.BanType banType) 23 | { 24 | TargetId = id; 25 | BanType = banType; 26 | } 27 | 28 | /// 29 | /// Gets or sets the target player id. 30 | /// 31 | public string TargetId { get; set; } 32 | 33 | /// 34 | /// Gets the ban type. 35 | /// 36 | public BanHandler.BanType BanType { get; } 37 | } 38 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Warhead/DeadmanSwitchInitiatingEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Warhead 9 | { 10 | using Exiled.Events.EventArgs.Interfaces; 11 | 12 | /// 13 | /// Contains all information before detonating the warhead. 14 | /// 15 | public class DeadmanSwitchInitiatingEventArgs : IDeniableEvent 16 | { 17 | /// 18 | public bool IsAllowed { get; set; } = true; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Warhead/DetonatingEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Warhead 9 | { 10 | using Exiled.Events.EventArgs.Interfaces; 11 | 12 | /// 13 | /// Contains all information before detonating the warhead. 14 | /// 15 | public class DetonatingEventArgs : IDeniableEvent 16 | { 17 | /// 18 | public bool IsAllowed { get; set; } = true; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /EXILED/Exiled.Events/EventArgs/Warhead/StartingEventArgs.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.EventArgs.Warhead 9 | { 10 | using Exiled.API.Features; 11 | 12 | /// 13 | /// Contains all information before starting the warhead. 14 | /// 15 | public class StartingEventArgs : StoppingEventArgs 16 | { 17 | /// 18 | /// Initializes a new instance of the class. 19 | /// 20 | /// The player who's going to start the warhead. 21 | /// Indicating whether the nuke was set off automatically. 22 | /// Indicating whether the event can be executed. 23 | public StartingEventArgs(Player player, bool isAuto, bool isAllowed = true) 24 | : base(player, isAllowed) 25 | { 26 | IsAuto = isAuto; 27 | } 28 | 29 | /// 30 | /// Gets or sets a value indicating whether the nuke was set off automatically. 31 | /// 32 | public bool IsAuto { get; set; } 33 | } 34 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Handlers/Cassie.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Handlers 9 | { 10 | using Exiled.Events.EventArgs.Cassie; 11 | using Exiled.Events.Features; 12 | 13 | /// 14 | /// Cassie related events. 15 | /// 16 | public static class Cassie 17 | { 18 | #pragma warning disable SA1623 // Property summary documentation should match accessors 19 | 20 | /// 21 | /// Invoked before sending a cassie message. 22 | /// 23 | public static Event SendingCassieMessage { get; set; } = new(); 24 | 25 | /// 26 | /// Called before sending a cassie message. 27 | /// 28 | /// The instance. 29 | public static void OnSendingCassieMessage(SendingCassieMessageEventArgs ev) => SendingCassieMessage.InvokeSafely(ev); 30 | } 31 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Handlers/Internal/ExplodingGrenade.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Handlers.Internal 9 | { 10 | using Exiled.API.Features.Pickups; 11 | using Exiled.Events.EventArgs.Map; 12 | 13 | /// 14 | /// Handles event. 15 | /// 16 | internal static class ExplodingGrenade 17 | { 18 | /// 19 | public static void OnChangedIntoGrenade(ChangedIntoGrenadeEventArgs ev) 20 | { 21 | ev.Pickup.WriteProjectileInfo(ev.Projectile); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Handlers/Internal/PickupEvent.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Handlers.Internal 9 | { 10 | using Exiled.API.Features.Pickups; 11 | using InventorySystem.Items.Pickups; 12 | 13 | /// 14 | /// Handles adding and removing from . 15 | /// 16 | internal static class PickupEvent 17 | { 18 | /// 19 | /// Called after a pickup is spawned. Hooked to . 20 | /// 21 | /// The spawned Pickup. 22 | public static void OnSpawnedPickup(ItemPickupBase itemPickupBase) 23 | { 24 | Map.OnPickupAdded(new(itemPickupBase)); 25 | } 26 | 27 | /// 28 | /// Called before a pickup is destroyed. Hooked to . 29 | /// 30 | /// The destroyed Pickup. 31 | public static void OnRemovedPickup(ItemPickupBase itemPickupBase) 32 | { 33 | Map.OnPickupDestroyed(new(itemPickupBase)); 34 | Pickup.BaseToPickup.Remove(itemPickupBase); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Handlers/Internal/RagdollList.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Handlers.Internal 9 | { 10 | using Exiled.API.Features; 11 | 12 | using PlayerRoles.Ragdolls; 13 | 14 | /// 15 | /// Handles adding and removing from . 16 | /// 17 | internal static class RagdollList 18 | { 19 | /// 20 | /// Called after a ragdoll is spawned. Hooked to . 21 | /// 22 | /// The spawned ragdoll. 23 | public static void OnSpawnedRagdoll(BasicRagdoll ragdoll) => Ragdoll.Get(ragdoll); 24 | 25 | /// 26 | /// Called before a ragdoll is destroyed. Hooked to . 27 | /// 28 | /// The destroyed ragdoll. 29 | public static void OnRemovedRagdoll(BasicRagdoll ragdoll) => Ragdoll.BasicRagdollToRagdoll.Remove(ragdoll); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Events/Map/ElevatorSequencesUpdated.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Events.Map 9 | { 10 | using Exiled.Events.Attributes; 11 | using Exiled.Events.EventArgs.Map; 12 | using HarmonyLib; 13 | using Interactables.Interobjects; 14 | 15 | /// 16 | /// Patches 's setter. 17 | /// Adds the event. 18 | /// 19 | [EventPatch(typeof(Handlers.Map), nameof(Handlers.Map.ElevatorSequencesUpdated))] 20 | [HarmonyPatch(typeof(ElevatorChamber), nameof(ElevatorChamber.CurSequence), MethodType.Setter)] 21 | internal class ElevatorSequencesUpdated 22 | { 23 | #pragma warning disable SA1313 24 | private static void Postfix(ElevatorChamber __instance) 25 | #pragma warning restore SA1313 26 | { 27 | ElevatorSequencesUpdatedEventArgs ev = new(__instance, __instance.CurSequence); 28 | Handlers.Map.OnElevatorSequencesUpdated(ev); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Events/Server/WaitingForPlayers.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Events.Server 9 | { 10 | #pragma warning disable SA1313 // Parameter names should begin with lower-case letter 11 | 12 | using API.Features; 13 | 14 | using HarmonyLib; 15 | 16 | /// 17 | /// Patches . 18 | /// Adds the event. 19 | /// 20 | [HarmonyPatch(typeof(ReferenceHub), nameof(ReferenceHub.Start))] 21 | internal static class WaitingForPlayers 22 | { 23 | private static void Postfix(ReferenceHub __instance) 24 | { 25 | if (!__instance.isLocalPlayer) 26 | return; 27 | 28 | Server.Host = new Player(__instance); 29 | Handlers.Server.OnWaitingForPlayers(); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Fixes/FixElevatorChamberAwake.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Fixes 9 | { 10 | using Exiled.Events.Attributes; 11 | using HarmonyLib; 12 | using Interactables.Interobjects; 13 | 14 | /// 15 | /// Patches 's setter. 16 | /// Fix for the event having its Lift value being null. 17 | /// 18 | [HarmonyPatch(typeof(ElevatorChamber), nameof(ElevatorChamber.Awake))] 19 | internal class FixElevatorChamberAwake 20 | { 21 | #pragma warning disable SA1313 22 | private static void Postfix(ElevatorChamber __instance) 23 | #pragma warning restore SA1313 24 | { 25 | __instance._floorDoors = ElevatorDoor.GetDoorsForGroup(__instance.AssignedGroup); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Fixes/KillPlayer.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Fixes 9 | { 10 | #pragma warning disable SA1313 // Parameter names should begin with lower-case letter 11 | 12 | using API.Features.DamageHandlers; 13 | 14 | using HarmonyLib; 15 | 16 | using Mirror; 17 | 18 | using PlayerStatsSystem; 19 | 20 | using DamageHandlerBase = PlayerStatsSystem.DamageHandlerBase; 21 | 22 | /// 23 | /// Prefix of KillPlayer action. 24 | /// 25 | [HarmonyPatch(typeof(PlayerStats), nameof(PlayerStats.KillPlayer))] 26 | internal class KillPlayer 27 | { 28 | private static void Prefix(PlayerStats __instance, ref DamageHandlerBase handler) 29 | { 30 | if (!DamageHandlers.IdsByTypeHash.ContainsKey(handler.GetType().FullName.GetStableHashCode()) && handler is GenericDamageHandler exiledHandler) 31 | handler = exiledHandler.Base; 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Fixes/NWFixDetonationTimer.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Fixes 9 | { 10 | using System; 11 | using System.Linq; 12 | 13 | using GameCore; 14 | using HarmonyLib; 15 | 16 | /// 17 | /// Fixes the issue where the game was not selecting the scenario with the nearest value. 18 | /// Bug Report 19 | /// 20 | [HarmonyPatch(typeof(AlphaWarheadController), nameof(AlphaWarheadController.Start))] 21 | internal class NWFixDetonationTimer 22 | { 23 | private static void Postfix() 24 | { 25 | AlphaWarheadSyncInfo networkInfo = default; 26 | networkInfo.ScenarioId = (byte)Array.IndexOf(AlphaWarheadController.Singleton._startScenarios, AlphaWarheadController.Singleton._startScenarios.OrderBy(d => Math.Abs(d.TimeToDetonate - ConfigFile.ServerConfig.GetByte("warhead_tminus_start_duration", 90))).First()); 27 | 28 | AlphaWarheadController.Singleton.NetworkInfo = networkInfo; 29 | return; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Fixes/RoleChangedPatch.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Fixes 9 | { 10 | using System.Collections.Generic; 11 | using System.Reflection.Emit; 12 | 13 | using API.Features.Items; 14 | 15 | using EventArgs.Player; 16 | 17 | using HarmonyLib; 18 | 19 | using InventorySystem; 20 | 21 | /// 22 | /// Patches to help override in and . 23 | /// 24 | [HarmonyPatch(typeof(InventoryItemProvider), nameof(InventoryItemProvider.RoleChanged))] 25 | internal static class RoleChangedPatch 26 | { 27 | private static IEnumerable Transpiler(IEnumerable instructions) 28 | { 29 | yield return new CodeInstruction(OpCodes.Ret); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Fixes/ServerHubMicroHidFix.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Fixes 9 | { 10 | #pragma warning disable SA1313 11 | using API.Features.Items; 12 | using Exiled.API.Features; 13 | 14 | using HarmonyLib; 15 | 16 | using InventorySystem.Items.Autosync; 17 | using InventorySystem.Items.MicroHID.Modules; 18 | using InventorySystem.Items.Pickups; 19 | using InventorySystem.Items.Usables.Scp330; 20 | 21 | /// 22 | /// Patches to fix phantom for . 23 | /// 24 | [HarmonyPatch(typeof(CycleSyncModule), nameof(CycleSyncModule.Update))] 25 | internal static class ServerHubMicroHidFix 26 | { 27 | private static bool Prefix(CycleSyncModule __instance) 28 | { 29 | return __instance.MicroHid.InstantiationStatus == AutosyncInstantiationStatus.InventoryInstance; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Generic/AirlockListAdd.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Generic 9 | { 10 | #pragma warning disable SA1313 11 | #pragma warning disable SA1402 12 | 13 | using HarmonyLib; 14 | using Interactables.Interobjects; 15 | 16 | /// 17 | /// Patch for adding to list. 18 | /// 19 | [HarmonyPatch(typeof(AirlockController), nameof(AirlockController.Start))] 20 | internal class AirlockListAdd 21 | { 22 | private static void Postfix(AirlockController __instance) 23 | { 24 | _ = new API.Features.Doors.AirlockController(__instance); 25 | } 26 | } 27 | 28 | /// 29 | /// Patch for removing to list. 30 | /// 31 | [HarmonyPatch(typeof(AirlockController), nameof(AirlockController.OnDestroy))] 32 | internal class AirlockListRemove 33 | { 34 | private static void Postfix(AirlockController __instance) 35 | { 36 | API.Features.Doors.AirlockController.BaseToExiledControllers.Remove(__instance); 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Generic/CoffeeListAdd.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Generic 9 | { 10 | using Exiled.API.Features; 11 | using HarmonyLib; 12 | #pragma warning disable SA1313 13 | #pragma warning disable CS0618 14 | /// 15 | /// Patches to control coffee list. 16 | /// 17 | [HarmonyPatch(typeof(global::Coffee), nameof(global::Coffee.Start))] 18 | internal class CoffeeListAdd 19 | { 20 | private static void Postfix(global::Coffee __instance) 21 | { 22 | _ = new Coffee(__instance); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Generic/HazardList.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Generic 9 | { 10 | #pragma warning disable SA1313 11 | 12 | using Exiled.API.Features.Hazards; 13 | using HarmonyLib; 14 | using Hazards; 15 | 16 | /// 17 | /// Patch for controlling hazard list. 18 | /// 19 | [HarmonyPatch] 20 | internal class HazardList 21 | { 22 | [HarmonyPatch(typeof(EnvironmentalHazard), nameof(EnvironmentalHazard.Start))] 23 | [HarmonyPostfix] 24 | private static void Adding(EnvironmentalHazard __instance) => _ = Hazard.Get(__instance); 25 | 26 | [HarmonyPatch(typeof(EnvironmentalHazard), nameof(EnvironmentalHazard.OnDestroy))] 27 | [HarmonyPostfix] 28 | private static void Removing(EnvironmentalHazard __instance) => Hazard.EnvironmentalHazardToHazard.Remove(__instance); 29 | } 30 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Generic/LiftList.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Generic 9 | { 10 | #pragma warning disable SA1313 // Parameter names should begin with lower-case letter 11 | using API.Features; 12 | 13 | using HarmonyLib; 14 | using Interactables.Interobjects; 15 | 16 | /// 17 | /// Patches to control . 18 | /// 19 | [HarmonyPatch] 20 | internal class LiftList 21 | { 22 | [HarmonyPatch(typeof(ElevatorChamber), nameof(ElevatorChamber.Start))] 23 | [HarmonyPostfix] 24 | private static void Adding(ElevatorChamber __instance) => _ = new Lift(__instance); 25 | 26 | [HarmonyPatch(typeof(ElevatorChamber), nameof(ElevatorChamber.OnDestroy))] 27 | [HarmonyPostfix] 28 | private static void Removing(ElevatorChamber __instance) => Lift.ElevatorChamberToLift.Remove(__instance); 29 | } 30 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Generic/PocketDimensionTeleportList.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Generic 9 | { 10 | #pragma warning disable SA1313 11 | using API.Features; 12 | 13 | using HarmonyLib; 14 | 15 | /// 16 | /// Patches . 17 | /// 18 | [HarmonyPatch] 19 | internal class PocketDimensionTeleportList 20 | { 21 | [HarmonyPatch(typeof(PocketDimensionTeleport), nameof(PocketDimensionTeleport.Awake))] 22 | [HarmonyPostfix] 23 | private static void Adding(PocketDimensionTeleport __instance) => Map.TeleportsValue.Add(__instance); 24 | 25 | [HarmonyPatch(typeof(PocketDimensionTeleport), nameof(PocketDimensionTeleport.OnDestroy))] 26 | [HarmonyPostfix] 27 | private static void Removing(PocketDimensionTeleport __instance) => Map.TeleportsValue.Remove(__instance); 28 | } 29 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Generic/RoomLightControllersList.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Generic 9 | { 10 | using Exiled.API.Features; 11 | #pragma warning disable SA1313 12 | 13 | using HarmonyLib; 14 | 15 | /// 16 | /// Patch for adding to list. 17 | /// 18 | [HarmonyPatch(typeof(RoomLightController), nameof(RoomLightController.Start))] 19 | internal class RoomLightControllersList 20 | { 21 | private static void Postfix(RoomLightController __instance) 22 | { 23 | Room.Get(__instance.Room).RoomLightControllersValue.Add(__instance); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Generic/Scp559List.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Generic 9 | { 10 | #pragma warning disable SA1313 11 | #pragma warning disable CS0618 12 | 13 | using Exiled.API.Features; 14 | using HarmonyLib; 15 | 16 | /// 17 | /// Patches 18 | /// to control . 19 | /// 20 | [HarmonyPatch(typeof(Scp559Cake), nameof(Scp559Cake.Start))] 21 | internal class Scp559List 22 | { 23 | private static void Postfix(Scp559Cake __instance) 24 | { 25 | _ = new Scp559(__instance); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Generic/Scp956Capybara.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Generic 9 | { 10 | using Exiled.API.Features; 11 | using HarmonyLib; 12 | 13 | #pragma warning disable SA1313 14 | 15 | /// 16 | /// Patches 17 | /// to implement better pinata capybara. 18 | /// 19 | [HarmonyPatch(typeof(Scp956Pinata), nameof(Scp956Pinata.UpdateAi))] 20 | internal class Scp956Capybara 21 | { 22 | private static void Postfix(Scp956Pinata __instance) 23 | { 24 | if (Scp956.IsCapybara) 25 | __instance.Network_carpincho = 69; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Generic/ServerNamePatch.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Generic 9 | { 10 | using HarmonyLib; 11 | 12 | using static Exiled.Events.Events; 13 | 14 | /// 15 | /// Patch the . 16 | /// 17 | [HarmonyPatch(typeof(ServerConsole), nameof(ServerConsole.ReloadServerName))] 18 | internal static class ServerNamePatch 19 | { 20 | private static void Postfix() 21 | { 22 | if (!Instance.Config.IsNameTrackingEnabled) 23 | return; 24 | 25 | ServerConsole._serverName += $"Exiled {Instance.Version.ToString(3)}"; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Generic/SpeakerInRoom.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Generic 9 | { 10 | #pragma warning disable SA1313 11 | using API.Features; 12 | 13 | using HarmonyLib; 14 | 15 | using PlayerRoles.PlayableScps.Scp079; 16 | 17 | /// 18 | /// Patches . 19 | /// 20 | [HarmonyPatch(typeof(Scp079Speaker), nameof(Scp079Speaker.OnRegistered))] 21 | internal class SpeakerInRoom 22 | { 23 | private static void Postfix(Scp079Speaker __instance) 24 | { 25 | Room.RoomIdentifierToRoom[__instance.Room].SpeakersValue.Add(__instance); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Generic/StaminaRegen.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Generic 9 | { 10 | #pragma warning disable SA1313 11 | 12 | using Exiled.API.Features; 13 | using Exiled.API.Features.Roles; 14 | using HarmonyLib; 15 | using InventorySystem; 16 | 17 | /// 18 | /// Patches . 19 | /// Implements . 20 | /// 21 | [HarmonyPatch(typeof(Inventory), nameof(Inventory.StaminaRegenMultiplier), MethodType.Getter)] 22 | internal class StaminaRegen 23 | { 24 | private static void Postfix(Inventory __instance, ref float __result) 25 | { 26 | if (Player.TryGet(__instance._hub, out Player player) && player.Role.Is(out FpcRole fpc)) 27 | __result *= fpc.StaminaRegenMultiplier; 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Generic/StaminaRegenArmor.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Generic 9 | { 10 | using Exiled.API.Features; 11 | using Exiled.API.Features.Items; 12 | #pragma warning disable SA1313 13 | 14 | using HarmonyLib; 15 | using InventorySystem.Items.Armor; 16 | 17 | /// 18 | /// Patches . 19 | /// Implements . 20 | /// 21 | [HarmonyPatch(typeof(BodyArmor), nameof(BodyArmor.StaminaRegenMultiplier), MethodType.Getter)] 22 | internal class StaminaRegenArmor 23 | { 24 | private static void Postfix(BodyArmor __instance, ref float __result) 25 | { 26 | if(Item.Get(__instance) is Armor armor) 27 | __result *= armor.StaminaRegenMultiplier; 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Generic/StaminaUsage.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Generic 9 | { 10 | #pragma warning disable SA1313 11 | 12 | using Exiled.API.Features; 13 | using Exiled.API.Features.Roles; 14 | using HarmonyLib; 15 | using InventorySystem; 16 | 17 | /// 18 | /// Patches . 19 | /// Implements , and . 20 | /// 21 | [HarmonyPatch(typeof(Inventory), nameof(Inventory.StaminaUsageMultiplier), MethodType.Getter)] 22 | internal class StaminaUsage 23 | { 24 | private static void Postfix(Inventory __instance, ref float __result) 25 | { 26 | if (Player.TryGet(__instance._hub, out Player player)) 27 | { 28 | if (player.Role.Is(out FpcRole fpc)) 29 | __result *= fpc.IsUsingStamina ? fpc.StaminaUsageMultiplier : 0; 30 | __result *= player.IsUsingStamina ? 1 : 0; 31 | } 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Events/Patches/Generic/TeslaList.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Events.Patches.Generic 9 | { 10 | using API.Features; 11 | 12 | using HarmonyLib; 13 | 14 | /// 15 | /// Patches . 16 | /// 17 | [HarmonyPatch(typeof(TeslaGateController), nameof(TeslaGateController.Start))] 18 | internal class TeslaList 19 | { 20 | private static void Postfix() 21 | { 22 | TeslaGate.BaseTeslaGateToTeslaGate.Clear(); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Example/Events/MapHandler.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Example.Events 9 | { 10 | using System.Linq; 11 | 12 | using Exiled.API.Features; 13 | using Exiled.Events.EventArgs.Map; 14 | 15 | /// 16 | /// Handles Map events. 17 | /// 18 | internal sealed class MapHandler 19 | { 20 | /// 21 | public void OnExplodingGrenade(ExplodingGrenadeEventArgs ev) 22 | { 23 | Log.Info($"A grenade thrown by {ev.Player.Nickname} is exploding: {ev.Projectile.Type}\n[Targets]\n\n{string.Join("\n", ev.TargetsToAffect.Select(player => $"[{player.Nickname}]"))}"); 24 | } 25 | 26 | /// 27 | public void OnGeneratorActivated(GeneratorActivatingEventArgs ev) 28 | { 29 | Log.Info($"A generator has been activated in {ev.Generator.Room.Type}!"); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Example/Events/Scp096Handler.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Example.Events 9 | { 10 | using Exiled.API.Features; 11 | using Exiled.Events.EventArgs.Scp096; 12 | 13 | /// 14 | /// Handles SCP-096 events. 15 | /// 16 | internal sealed class Scp096Handler 17 | { 18 | /// 19 | public void OnAddingTarget(AddingTargetEventArgs ev) 20 | { 21 | Log.Info($"{ev.Target.Nickname} is being added to {ev.Player.Nickname} targets!"); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Example/Events/Scp914Handler.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Example.Events 9 | { 10 | using Exiled.API.Features; 11 | using Exiled.Events.EventArgs.Scp914; 12 | 13 | /// 14 | /// Handles SCP-914 events. 15 | /// 16 | internal sealed class Scp914Handler 17 | { 18 | /// 19 | public void OnUpgradingItem(UpgradingPickupEventArgs ev) 20 | { 21 | Log.Info($"Item being upgraded\n[Type]: {ev.Pickup.Type}\n[Weight]: {ev.Pickup.Weight}\n[Output Position]: {ev.OutputPosition}\n[Knob Setting]: {ev.KnobSetting}"); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Example/Events/ServerHandler.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Example.Events 9 | { 10 | using Exiled.API.Features; 11 | 12 | /// 13 | /// Handles server-related events. 14 | /// 15 | internal sealed class ServerHandler 16 | { 17 | /// 18 | public void OnWaitingForPlayers() 19 | { 20 | Log.Info("I'm waiting for players!"); // This is an example of information messages sent to your console! 21 | } 22 | 23 | /// 24 | public void OnRoundStarted() 25 | { 26 | Log.Info($"A round has started with {Player.Dictionary.Count} players!"); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Example/Events/WarheadHandler.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Example.Events 9 | { 10 | using Exiled.API.Features; 11 | using Exiled.Events.EventArgs.Warhead; 12 | 13 | /// 14 | /// Handles warhead events. 15 | /// 16 | internal sealed class WarheadHandler 17 | { 18 | /// 19 | public void OnStopping(StoppingEventArgs ev) 20 | { 21 | Log.Info($"{ev.Player.Nickname} stopped the warhead!"); 22 | } 23 | 24 | /// 25 | public void OnStarting(StartingEventArgs ev) 26 | { 27 | Log.Info($"{ev.Player.Nickname} started the warhead!"); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Installer/Resources/Markup.txt: -------------------------------------------------------------------------------- 1 | EXILED\:EXILED 2 | SCP Secret Laboratory\:ABSOLUTE 3 | -------------------------------------------------------------------------------- /EXILED/Exiled.Loader/AutoUpdateFiles.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Loader 9 | { 10 | using System; 11 | 12 | /// 13 | /// Automatically updates with Reference used to generate Exiled. 14 | /// 15 | public static class AutoUpdateFiles 16 | { 17 | /// 18 | /// Gets which SCP: SL version generated Exiled. 19 | /// 20 | public static readonly Version RequiredSCPSLVersion = new(14, 0, 0, 2); 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Loader/AutoUpdateFiles.tt: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | <#@ assembly name="$(EXILED_REFERENCES)\Assembly-CSharp-Publicized.dll" #> 8 | namespace Exiled.Loader 9 | { 10 | using System; 11 | 12 | /// 13 | /// Automatically updates with Reference used to generate Exiled. 14 | /// 15 | public static class AutoUpdateFiles 16 | { 17 | /// 18 | /// Gets which SCP: SL version generated Exiled. 19 | /// 20 | public static readonly Version RequiredSCPSLVersion = new(<#=GameCore.Version.Major#>, <#=GameCore.Version.Minor#>, 0, <#=GameCore.Version.Revision#>); 21 | } 22 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Loader/Features/Configs/UnderscoredNamingConvention.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Loader.Features.Configs 9 | { 10 | using System.Collections.Generic; 11 | 12 | using Exiled.API.Extensions; 13 | using YamlDotNet.Serialization; 14 | 15 | /// 16 | public class UnderscoredNamingConvention : INamingConvention 17 | { 18 | /// 19 | public static UnderscoredNamingConvention Instance { get; } = new(); 20 | 21 | /// 22 | /// Gets the list. 23 | /// 24 | public List Properties { get; } = new(); 25 | 26 | /// 27 | public string Apply(string value) 28 | { 29 | string newValue = value.ToSnakeCase(); 30 | Properties.Add(newValue); 31 | return newValue; 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Loader/Features/PluginPriorityComparer.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Loader.Features 9 | { 10 | using System.Collections.Generic; 11 | 12 | using API.Interfaces; 13 | 14 | /// 15 | /// Comparator implementation according to plugin priorities. 16 | /// 17 | public sealed class PluginPriorityComparer : IComparer> 18 | { 19 | /// 20 | /// Public instance. 21 | /// 22 | public static readonly PluginPriorityComparer Instance = new(); 23 | 24 | /// 25 | public int Compare(IPlugin x, IPlugin y) 26 | { 27 | // Reverse to make int.MaxValue first than int.MinValue 28 | int value = y.Priority.CompareTo(x.Priority); 29 | if (value == 0) 30 | value = x.GetHashCode().CompareTo(y.GetHashCode()); 31 | 32 | // Allow duplicate 33 | return value == 0 ? 1 : value; 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Loader/GHApi/HttpClientExtensions.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Loader.GHApi 9 | { 10 | using System.Net.Http; 11 | using System.Threading.Tasks; 12 | 13 | using Exiled.Loader.GHApi.Models; 14 | using Exiled.Loader.GHApi.Settings; 15 | 16 | /// 17 | /// A set of extensions to be used along with https clients. 18 | /// 19 | public static class HttpClientExtensions 20 | { 21 | /// 22 | /// Gets all releases from a git repository. 23 | /// 24 | /// The . 25 | /// The repository from which get the releases. 26 | /// The settings. 27 | /// A [] containing all requested releases. 28 | public static async Task GetReleases(this HttpClient client, long repoId, GetReleasesSettings settings) 29 | => await ApiProvider.GetReleases(repoId, settings, client).ConfigureAwait(false); 30 | } 31 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Loader/LinuxPermission.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Loader 9 | { 10 | using Mono.Unix; 11 | 12 | /// 13 | /// A set of extensions to easily interact with Linux/Unix environment. 14 | /// 15 | public static class LinuxPermission 16 | { 17 | /// 18 | /// Sets rw and execution permissions given a file, for the current user and group. 19 | /// 20 | /// The path of the file. 21 | public static void SetFileUserAndGroupReadWriteExecutePermissions(string path) 22 | { 23 | UnixFileSystemInfo.GetFileSystemEntry(path).FileAccessPermissions |= FileAccessPermissions.UserReadWriteExecute | FileAccessPermissions.GroupReadWriteExecute; 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Loader/Models/NewVersion.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Loader.Models 9 | { 10 | using Exiled.Loader.GHApi.Models; 11 | 12 | /// 13 | /// An asset containing all data about a new version. 14 | /// 15 | public readonly struct NewVersion 16 | { 17 | /// 18 | /// The release. 19 | /// 20 | public readonly Release Release; 21 | 22 | /// 23 | /// The asset of the release. 24 | /// 25 | public readonly ReleaseAsset Asset; 26 | 27 | /// 28 | /// Initializes a new instance of the struct. 29 | /// 30 | /// 31 | /// 32 | public NewVersion(Release release, ReleaseAsset asset) 33 | { 34 | Release = release; 35 | Asset = asset; 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Loader/Models/TaggedRelease.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Loader.Models 9 | { 10 | using Exiled.Loader.GHApi.Models; 11 | 12 | using SemanticVersioning; 13 | 14 | /// 15 | /// An asset containing all information about a tagged release. 16 | /// 17 | public readonly struct TaggedRelease 18 | { 19 | /// 20 | /// The release. 21 | /// 22 | public readonly Release Release; 23 | 24 | /// 25 | /// The asset of the release. 26 | /// 27 | public readonly Version Version; 28 | 29 | /// 30 | /// Initializes a new instance of the struct. 31 | /// 32 | /// 33 | public TaggedRelease(Release release) 34 | { 35 | Release = release; 36 | Version = Version.Parse(release.TagName); 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Permissions/Commands/Permissions/Reload.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Permissions.Commands.Permissions 9 | { 10 | using System; 11 | 12 | using CommandSystem; 13 | 14 | using Extensions; 15 | 16 | /// 17 | /// Reloads all permissions. 18 | /// 19 | public class Reload : ICommand 20 | { 21 | /// 22 | public string Command { get; } = "reload"; 23 | 24 | /// 25 | public string[] Aliases { get; } = new[] { "rld" }; 26 | 27 | /// 28 | public string Description { get; } = "Reloads all permissions"; 29 | 30 | /// 31 | public bool Execute(ArraySegment arguments, ICommandSender sender, out string response) 32 | { 33 | if (!sender.CheckPermission("ep.reload")) 34 | { 35 | response = "You can't reload permissions, you don't have \"ep.reload\" permission."; 36 | return false; 37 | } 38 | 39 | Extensions.Permissions.Reload(); 40 | 41 | response = "Permissions have been successfully reloaded!"; 42 | return true; 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Permissions/Features/Group.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Permissions.Features 9 | { 10 | using System.Collections.Generic; 11 | 12 | using YamlDotNet.Serialization; 13 | 14 | /// 15 | /// Represents a player's group. 16 | /// 17 | public class Group 18 | { 19 | /// 20 | /// Gets or sets a value indicating whether group is the default. 21 | /// 22 | [YamlMember(Alias = "default")] 23 | public bool IsDefault { get; set; } 24 | 25 | /// 26 | /// Gets or sets the group inheritance. 27 | /// 28 | public List Inheritance { get; set; } = new(); 29 | 30 | /// 31 | /// Gets or sets the group permissions. 32 | /// 33 | public List Permissions { get; set; } = new(); 34 | 35 | /// 36 | /// Gets the combined permissions of the group plus all inherited groups. 37 | /// 38 | [YamlIgnore] 39 | public List CombinedPermissions { get; internal set; } = new(); 40 | } 41 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Permissions/Permissions.cs: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------- 2 | // 3 | // Copyright (c) ExMod Team. All rights reserved. 4 | // Licensed under the CC BY-SA 3.0 license. 5 | // 6 | // ----------------------------------------------------------------------- 7 | 8 | namespace Exiled.Permissions 9 | { 10 | using Exiled.API.Features; 11 | 12 | using MEC; 13 | 14 | /// 15 | /// Handles all plugin-related permissions, for executing commands, doing actions and so on. 16 | /// 17 | public sealed class Permissions : Plugin 18 | { 19 | private static Permissions instance; 20 | 21 | /// 22 | /// Gets the permissions instance. 23 | /// 24 | public static Permissions Instance => instance; 25 | 26 | /// 27 | public override void OnEnabled() 28 | { 29 | instance = this; 30 | 31 | base.OnEnabled(); 32 | 33 | Timing.CallDelayed( 34 | 5f, 35 | () => 36 | { 37 | Extensions.Permissions.Create(); 38 | Extensions.Permissions.Reload(); 39 | }); 40 | } 41 | 42 | /// 43 | public override void OnDisabled() 44 | { 45 | base.OnDisabled(); 46 | 47 | Extensions.Permissions.Groups.Clear(); 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /EXILED/Exiled.Permissions/permissions.yml: -------------------------------------------------------------------------------- 1 | user: 2 | default: true 3 | inheritance: [ ] 4 | permissions: 5 | - testplugin.user 6 | 7 | owner: 8 | inheritance: [ ] 9 | permissions: 10 | - .* 11 | 12 | admin: 13 | inheritance: 14 | - moderator 15 | permissions: 16 | - testplugin.admin 17 | - testplugin.* 18 | 19 | moderator: 20 | inheritance: [ ] 21 | permissions: 22 | - testplugin.moderator 23 | -------------------------------------------------------------------------------- /EXILED/Exiled.ruleset: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /EXILED/assets/Exiled_Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExMod-Team/EXILED/75b4621067f181ca1f5e3344ca9bc4932ffc4059/EXILED/assets/Exiled_Icon.ico -------------------------------------------------------------------------------- /EXILED/assets/Exiled_Icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExMod-Team/EXILED/75b4621067f181ca1f5e3344ca9bc4932ffc4059/EXILED/assets/Exiled_Icon.jpg -------------------------------------------------------------------------------- /EXILED/assets/Exiled_Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExMod-Team/EXILED/75b4621067f181ca1f5e3344ca9bc4932ffc4059/EXILED/assets/Exiled_Icon.png -------------------------------------------------------------------------------- /EXILED/assets/Exiled_Icon_50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExMod-Team/EXILED/75b4621067f181ca1f5e3344ca9bc4932ffc4059/EXILED/assets/Exiled_Icon_50x50.png -------------------------------------------------------------------------------- /EXILED/build.ps1: -------------------------------------------------------------------------------- 1 | #! pwsh 2 | 3 | param ( 4 | [Switch]$BuildNuGet 5 | ) 6 | 7 | $Projects = @( 8 | 'Exiled.Loader', 9 | 'Exiled.API', 10 | 'Exiled.Permissions', 11 | 'Exiled.Events', 12 | 'Exiled.CreditTags', 13 | 'Exiled.Example', 14 | 'Exiled.CustomItems', 15 | 'Exiled.CustomRoles' 16 | ) 17 | 18 | function Execute { 19 | param ( 20 | [string]$Cmd 21 | ) 22 | 23 | foreach ($Project in $Projects) { 24 | Invoke-Expression ([string]::Join(' ', $Cmd, $Project, $args)) 25 | CheckLastOperationStatus 26 | } 27 | } 28 | 29 | function CheckLastOperationStatus { 30 | if ($? -eq $false) { 31 | Exit 1 32 | } 33 | } 34 | 35 | function GetSolutionVersion { 36 | [XML]$PropsFile = Get-Content Exiled.props 37 | $Version = $PropsFile.Project.PropertyGroup[2].Version 38 | $Version = $Version.'#text'.Trim() 39 | return $Version 40 | } 41 | 42 | # Restore projects 43 | Execute 'dotnet restore' 44 | # Build projects 45 | Execute 'dotnet build' '-c release' 46 | # Build a NuGet package if needed 47 | if ($BuildNuGet) { 48 | $Version = GetSolutionVersion 49 | $Year = [System.DateTime]::Now.ToString('yyyy') 50 | 51 | Write-Host "Generating NuGet package for version $Version" 52 | 53 | nuget pack Exiled/Exiled.nuspec -Version $Version -Properties Year=$Year 54 | } 55 | -------------------------------------------------------------------------------- /EXILED/docs/articles/installation/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Installing EXILED 3 | --- 4 | 5 | # Installing EXILED 6 | 7 | ## Automatic Installation 8 | 9 | Exiled has a tool that allows you to install **automatically** the framework for you. 10 | 11 | ## Guides 12 | 13 | - [Window Automatic Installation](/articles/installation/automatic/windows.html). 14 | - [Linux Automatic Installation](/articles/installation/automatic/linux.html). 15 | - [Manual Installation](/articles/installation/manual.html). -------------------------------------------------------------------------------- /EXILED/docs/articles/installation/manual.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Manual Installation 3 | --- 4 | 5 | # Manual Installation 6 | 7 | You can download exiled manually following this steps: 8 | 9 | ### Pick a release 10 | 11 | You can select a release inside [our official GitHub repo](https://github.com/ExMod-Team/EXILED/releases/). 12 | 13 | ### Download the release 14 | 15 | Download the `Exiled.tar.gz` file and extract it with your favourite tool, we recommend [7Zip](https://www.7-zip.org/) or [WinRar](https://www.win-rar.com/download.html?&L=6). 16 | 17 | ### Installation 18 | 19 | 1. Move the file **``Assembly-CSharp.dll``** to: **`(Your Server Folder)/SCPSL_Data/Managed`** and replace the file. 20 | 2. Move the **``EXILED``** folder to **`%appdata%`** 21 | 22 | #### Note: 23 | - Windows: This **`%appdata%`** folder is the one located inside **`AppData/Roaming`**, not just `AppData`. 24 | - Linux: This **`%appdata%`** folder is the one called **`~/.config`**. -------------------------------------------------------------------------------- /EXILED/docs/articles/toc.yml: -------------------------------------------------------------------------------- 1 | - name: Introduction 2 | href: index.md 3 | - name: Installation 4 | href: installation/index.md 5 | items: 6 | - name: Automatic (Linux) 7 | href: installation/automatic/linux.md 8 | - name: Automatic (Windows) 9 | href: installation/automatic/windows.md 10 | - name: Manual 11 | href: installation/manual.md 12 | - name: Plugin Development 13 | items: 14 | - name: Plugin Structure 15 | href: plugins/structure.md 16 | - name: More Effective Coroutines 17 | href: plugins/mec.md 18 | - name: Events 19 | href: plugins/events.md 20 | - name: Contributing 21 | href: contributing/index.md 22 | -------------------------------------------------------------------------------- /EXILED/docs/assets/exiled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExMod-Team/EXILED/75b4621067f181ca1f5e3344ca9bc4932ffc4059/EXILED/docs/assets/exiled.png -------------------------------------------------------------------------------- /EXILED/docs/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExMod-Team/EXILED/75b4621067f181ca1f5e3344ca9bc4932ffc4059/EXILED/docs/assets/favicon.ico -------------------------------------------------------------------------------- /EXILED/docs/docfx.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": [ 3 | { 4 | "src": [ 5 | { 6 | "files": [ 7 | "**/*.csproj" 8 | ], 9 | "exclude": [ 10 | "**/bin/**", 11 | "**/obj/**" 12 | ], 13 | "src": "../" 14 | } 15 | ], 16 | "dest": "api", 17 | "filter": "filterConfig.yml", 18 | "namespaceLayout": "nested", 19 | "enumSortOrder": "declaringOrder", 20 | } 21 | ], 22 | "build": { 23 | "globalMetadata": { 24 | "_appTitle": "EXILED", 25 | "_appLogoPath": "assets/exiled.png", 26 | "_appFaviconPath": "assets/favicon.ico", 27 | "_enableSearch": true, 28 | "_lang": "en", 29 | "_gitContribute": { 30 | "repo": "https://github.com/ExMod-Team/EXILED", 31 | "branch": "dev" 32 | } 33 | }, 34 | "template": ["default", "modern"], 35 | "content": [ 36 | { 37 | "files": [ 38 | "api/**.yml", 39 | "api/index.md", 40 | "toc.yml", 41 | "*.md" 42 | ] 43 | }, 44 | { 45 | "files": [ 46 | "articles/toc.yml", 47 | "articles/**.md" 48 | ] 49 | } 50 | ], 51 | "resource": [ 52 | { 53 | "files": [ 54 | "assets/**" 55 | ] 56 | } 57 | ], 58 | "dest": "_site", 59 | "docfx": "SGVsbG8sIHRoaXMgd2FzIG1hZGUgYnkgamVzdXNxYywgaG9wZSB5b3UgYXJlIG5vdCBjb3B5aW5nIHRoaXMgYmVjYXVzZSBpdCB3b3VsZCBiZSBoaWxhcmlvdXMg8J+YrfCfmK3wn5it8J+YrQ==" 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /EXILED/docs/filterConfig.yml: -------------------------------------------------------------------------------- 1 | apiRules: 2 | - exclude: 3 | uidRegex: Exiled.Updater 4 | type: Namespace 5 | - exclude: 6 | uidRegex: Exiled.Example 7 | type: Namespace 8 | - exclude: 9 | uidRegex: Exiled.CreditTags 10 | type: Namespace 11 | -------------------------------------------------------------------------------- /EXILED/docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Home 3 | --- 4 | # Exiled 5 | Join our [Discord](https://discord.gg/PyUkWTg) for support. 6 | 7 | EXILED is a plugin framework for SCP: Secret Laboratory servers. It offers an event system for developers to hook into in order to manipulate or change game code or implement their own functions. 8 | 9 | ## Support 10 | We consistently deliver updates and releases to address bugs and introduce new features or contributions swiftly. 11 | 12 | ## Community 13 | We encourage developers to contribute actively rather than solely relying on Exiled, thereby boosting project activity. 14 | 15 | ## Features 16 | We offer diverse features, providing users with flexibility. These features are optional, catering to various needs. 17 | -------------------------------------------------------------------------------- /EXILED/docs/toc.yml: -------------------------------------------------------------------------------- 1 | - name: Articles 2 | href: articles/ 3 | - name: API Documentation 4 | href: api/Exiled.html 5 | - name: NW Documentation 6 | href: articles/SCPSLRessources/NW_Documentation.html 7 | - name: Repository 8 | href: https://github.com/ExMod-Team/EXILED 9 | - name: Plugins 10 | href: https://hub.exiled-team.net/ 11 | -------------------------------------------------------------------------------- /EXILED/packaging.ps1: -------------------------------------------------------------------------------- 1 | function Move-File { 2 | param ( 3 | [Parameter(Mandatory=$true)] 4 | [string]$sourcePath, 5 | 6 | [Parameter(Mandatory=$true)] 7 | [string]$destinationPath 8 | ) 9 | 10 | # Check if the source file exists 11 | if (-not (Test-Path -Path $sourcePath -PathType Leaf)) { 12 | Write-Output "Source file does not exist." 13 | return 14 | } 15 | 16 | # Check if the destination directory exists 17 | $destinationDirectory = Split-Path -Path $destinationPath 18 | if (-not (Test-Path -Path $destinationDirectory -PathType Container)) { 19 | Write-Output "Destination directory does not exist." 20 | return 21 | } 22 | 23 | # Move the file to the destination 24 | try { 25 | Move-Item -Path $sourcePath -Destination $destinationPath -Force 26 | Write-Output "File moved successfully." 27 | } 28 | catch { 29 | Write-Output "Failed to move the file: $_" 30 | } 31 | } 32 | 33 | Move-File -sourcePath ".\EXILED-DLL-Archiver.exe" -destinationPath ".\bin\Release\EXILED-DLL-Archiver.exe" 34 | Move-File -sourcePath ".\References\Mono.Posix.dll" -destinationPath ".\bin\Release\Mono.Posix.dll" 35 | Move-File -sourcePath ".\References\System.ComponentModel.DataAnnotations.dll" -destinationPath ".\bin\Release\System.ComponentModel.DataAnnotations.dll" 36 | CD .\bin\Release 37 | .\EXILED-DLL-Archiver.exe 38 | -------------------------------------------------------------------------------- /EXILED/stylecop.json: -------------------------------------------------------------------------------- 1 | { 2 | // ACTION REQUIRED: This file was automatically added to your project, but it 3 | // will not take effect until additional steps are taken to enable it. See the 4 | // following page for additional information: 5 | // 6 | // https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/EnableConfiguration.md 7 | 8 | "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json", 9 | "settings": { 10 | "documentationRules": { 11 | "companyName": "ExMod Team", 12 | "copyrightText": "Copyright (c) {companyName}. All rights reserved.\nLicensed under the {licenseName} license.", 13 | "headerDecoration": "-----------------------------------------------------------------------", 14 | "variables": { 15 | "licenseFile": "LICENSE", 16 | "licenseName": "CC BY-SA 3.0" 17 | } 18 | }, 19 | "orderingRules": { 20 | "blankLinesBetweenUsingGroups": "require" 21 | } 22 | } 23 | } 24 | --------------------------------------------------------------------------------