├── .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