#labapi-logs
1 messages · Page 1 of 1 (latest)
e79a828 Adds throw propertly to Item EventsArgs (#246) - brayden-dowson
0bbdeee Added more properties to PlayerDeath event arg ... - brayden-dowson
c554b39 Adds attacker player to placed blood event (#239) - brayden-dowson
35b8b80 Playerscale + events (#244) - davidsebesta1
3206e28 1.1.0 Version Bump - SebasCapo
e79a828 Adds throw propertly to Item EventsArgs (#246) - brayden-dowson
0bbdeee Added more properties to PlayerDeath event arg ... - brayden-dowson
c554b39 Adds attacker player to placed blood event (#239) - brayden-dowson
35b8b80 Playerscale + events (#244) - davidsebesta1
3206e28 1.1.0 Version Bump - SebasCapo
c1820fa Obselete Lock(DoorLockReason reason, bool enabled) - brayden-dowson
08a2991 Added open and close methods to door - brayden-dowson
f6f24f5 Used wrapper type for Door.Rooms - brayden-dowson
355f11b Moved Door.Lock method - brayden-dowson
d9a068a Added Door Lock Unlock and HasLock methods - brayden-dowson
c1820fa Obselete Lock(DoorLockReason reason, bool enabled) - brayden-dowson
08a2991 Added open and close methods to door - brayden-dowson
f6f24f5 Used wrapper type for Door.Rooms - brayden-dowson
355f11b Moved Door.Lock method - brayden-dowson
d9a068a Added Door Lock Unlock and HasLock methods - brayden-dowson
d250b1a IsAbstract plugin check + separate embedded dep... - Axwabo
8541cab Make Player.GameObject nullable and null check ... - xCynDev
Goal Description
Pages
Allow the ability to send settings as pages to client, this will handle everything on the client side rather than server side - This means settings dont need to be handled janky with keybinds since client will know the page exists
Permission Handling
Ability to only send a setting to players when they meet a specific condition
More Controlled Settings Sync
Rather than always sending all settings at once, add ability to send one at a time, or a page at a...
Goal Description
1. Custom Role API
Currently, roles are hardcoded (Class-D, Scientist, SCPs, MTF, Chaos). A CustomRole system would allow developers to add new roles with unique behaviors.
Proposal:
*Add a CustomRole base class with properties like name, team, spawn location, abilities.
Allow plugins to register and assign these roles dynamically.
Code Example:*
{
public override string Name => "Ninja";
public override Team Te...
Goal Description
Make custom keycard server side and updatable in real time as of right now its complicated and hard enough to be not an easy system not a total rework but just make them more server side to allow atleast to see the content of that keycard and their details
Notes
Providing SyncVars or any other type of way to sync this keycards in a way that makes them easy to edit from the server or atleast their content be visible or being able to edit those variable and then resync
Prior to submitting a suggestion to the repository, please ensure you have reviewed all previously closed suggestions.
Our current procedure entails transferring valid suggestions to an internal tracking system and subsequently closing the corresponding issue. This helps us to manage and implement suggestions efficiently.
In the event that your suggestion is closed, kindly consult the provided close reason.
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.3
Description
In mentioned method, Priority is squared, thus the sign of Priority is irrelevant
To Reproduce
Try to create a waypoint that your client doesn't want to use by setting high negative priority, then still get caught by the waypoint.
Expected Behavior
sign of priority should make wayp...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.2
Description
When you use the event "OnPlayerCuffed" is not called. That means that no plugin that uses "OnPlayerCuffed" will work.
To Reproduce
For example, in EventHandler you put the event and you want when the person is arrested to receive a hint, it doesn't work.
Expected Behavior
When the...
Goal Description
Goal Description
The addition of 8 total new events for the events of entering, entered, leaving and left waypoints for both Players and Pickup objects:
PlayerEvents.EnteringWaypoint (Player, WaypointToy, IsAllowed)
PlayerEvents.EnteredWaypoint (Player, WaypointToy)
PlayerEvents.LeavingWaypoint (Player, WaypointToy, IsAllowed)
PlayerEvents.LeftWaypoint (Player, WaypointToy)
ServerEvents.PickupEnteringWaypoint (Pickup, WaypointToy, IsAllowed)
ServerEvents.PickupEntere...
Goal Description
Currently, there's not really a good, intuitive way to change the items that come out of SCP-914 item process
Like if I wanted to change the output of a COM-15 on very fine to always be a COM-45, I'd have to ev.IsAllowed=false; the event and then spawn the COM-45 at ev.NewPosition
The problem with this method is that it won't run the Processed events afterwards
The second method I was able to find (which I haven't tested yet) is changing the Scp914ItemProcessor com...
Goal Description
I did think a while… Yeah, people can use plugins to port maps or create their own. But what if — the game itself, or LabAPI itself, had these capabilities natively? Wouldn’t that be much better?
I mean, instead of relying on third-party plugins or external editors, imagine if the game had a built-in map manipulation and customization system — fully integrated into its logic and generation structure.
Not just a simple map editor, but a dynamic world generator that could...
Goal Description
This already exists for like half the SCP abilities and it pmo that as plugin devs we have no ability to do something like fully allowing friendly fire between SCPs
In the context of patching HitboxIdentity.IsEnemy:
939's claw attack works perfectly, lunge doesn't
106 can't even do attacks
3114's slap works, but the strangle doesn't
049's attack works but targeting doesn't
096 fully works
173's observing works, but the blink doesn't kill
It's so odd that half the shit is...
Goal description
Controller works to some degree ik that yk.
Imagine having better controller support and being able to play with controller that would be absulutely fire.
Notes
None
Goal Description
In current state WaypointToys allows us to implement custom elevators, and if desired, very complex ones - and not only elevators, this is just the first idea that comes to people's minds.
However, both existing and new elevators have the problem of properly parenting PrimitiveToy and, consequently, schematics to elevators.
When they are SetParent'ed, most often PrimitiveToy (depending on the SyncValue set) simply fly up when the elevator goes down, and only return to...
Goal Description
Once update were released I saw this objective and thought - OH YEAH, I COULD MAKE CUSTOM OBJECTIVES.
But, when I tried it on server, it crushed, when i checked logs the answer was really simple - client has certain checks for objectives, so, because of different type, client just couldn't process it.
I found this a little silly, because the only thing where client checks are needed is message completing text, that appears on the top side of the screen, and i wasn't c...
Goal Description
Add the ability to customize the Fade effect. More specifically, customize how and with what intensity other people see the effect owner.
For one player effect owner could be fully faded, but for other one - only half-faded.
Notes
No response
Goal Description
- This way in it would be possible to set which players will spawn or not.
Notes
No response
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.2
Description
If you spawn a grenade using the LabAPI wrapper TimedGrenadeProjectile and use the SpawnActive function to do so, it'll instantly explode.
To Reproduce
Spawn a grenade without specifying a timeOverride
Expected Behavior
The grenade should not be instantly exploding, it should h...
Goal Description
Hello.
Please add Player.PreviousRole.
Currently, this has to be done through workarounds in plugins. If it were available directly in LabAPI, that would be great.
Notes
No response
Goal Description
Add an event under player called OnBadgeReceived OR OnBadgeUpdated that gets called whenever a person has a badge applied.
ideally it will contain
Player player
String badge name
String badge color (In hex or as type 'Color' )
Notes
Will need to work properly so that Northwood staff remain unaffected to avoid any trouble.
If the tag is hidden it may need extra consideration but unsure how you would handle it
Goal Description
No comment
Notes
No response
Goal Description
I think this is a good idea and could make things easier for all developers.
Notes
No response
Description
That would permit for plugin to still be able to access 096 Room without having to changed anything
mostly this will only required a move in Unity to make the Colliders to be children of Scp096Door GameObject
Notes
No response
Checklist
No response
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.3
Description
If a player's ReferenceHub is created, assigned a role, and destroyed within the same frame, a stale FirstPersonMovementModule remains active. This module continues running UpdateMovement, throwing NREs every frame and blocking movement updates for all players on the server.
To Repr...
Goal Description
Certain servers like to have pets as a patreon reward and right now with the addition of horror stingers and themes the pets get really annoying when they stack up.
The idea is that you are able to mute any sound from an SCP so that you can have them as a display. This also may help in certain gamemodes or custom events where you want silent SCP’s.
Notes
No response
Goal Description
Since equipping a FlashlightItem automatically turns on the light, it should trigger the TogglingFlashlightEvent/ToggledFlashlightEvent events so its not necessary to also have to check every time an item is equipped
Notes
This might also apply to the ToggledWeaponFlashlightEvent and the NewState field would be set to whether the weapon's flashlight was enabled or not when it was unequipped.
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.4
Description
Trying to use SetParent() with a LightSourceToy causes it to be permamently stuck at zero coordinates. Can confirm that this bug works if you try to set light's parent to either a player or a pickup
To Reproduce
This lines of code will trigger the bug:
var newLight = LightSourceToy.Crea...
Goal Description
Perhaps we can add a string field to store data.
It's very troublesome to ask Footprint to save other states, such as asking FlashbangGrenade to determine the player's health when thrown.
Notes
However, it may affect performance
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.4
Description
Video as a better description.
Currently I saw multiple times when RippleTriggers appearing even if Player staying still or moving on C.
Second video 0:35 and after.
To Reproduce
Bug appeas not often, so the best method to rep...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.4
Description
Game doesn't respect arguments variable in RemoteAdmin.CommandProcessor::ProcessQuery and GameCore.Console::TypeCommand when executing the command.
To Reproduce
In CommandExecuting event try to modify Arguments property, the code will only work with RA commands executed through...
Goal Description
We need a triangle prefab because it's the fundamental building block of 3D games. Every mesh in the engine is already triangles under the hood. Quads? Triangulated. N-gons? Triangulated. The GPU literally won't draw anything else. Pretending triangles don't matter is pretending the renderer doesn't exist.
Why it matters as a prefab:
Debugging tool: lets us visualize core geometry and collision at the lowest level.
Prototyping: great for testing shading, UVs, normals,...
Hi !
So I was rapidly checking the repo when I saw this README.md file
It contains a thing that, I believe, shouldn't be here.
Have a nice day !
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.4
Description
After you cancel the PlayerDying event, players killed by SCP1509 will not die, and a new player will be generated immediately
To Reproduce
- Set
IsAllowedforPlayerDyingevent tofalse - Use SCP1509 that allows Resurrection to kill a player
- Particle effects will appear a...
Goal Description
Add SCP1509Item Wrapper
Notes
No response
- Fixed player events not inheriting from IPlayerEvent.
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.4
Description
The LabAPI Wrapper for SetDestination() has the parameter force which is documented as choosing whether the destination should be changed even if the elevator is not ready. However, the base ElevatorChamber method has the parameter allowQueuing which is the opposite of forcing the elev...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.4
Description
In this method the player is not being set the OwnerHub of the ragdoll so it causes unwated issues like not being usable by 3114 or 049 ressurection.
Ragdoll.SpawnRagdoll(Player, DamageHandler)
To Reproduce
public override void OnPlayerSpawningRagdoll(PlayerSpawningRagdollEv...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.4
Description
Despite SubDoors' arrays not being empty, none of them contains any existing door from Door.List.
To Reproduce
public void OnMapGenerated(MapGeneratedEventArgs _)
{
var subdoors = Door.List.Where(d => CheckpointDoor.List.SelectMany(c => c.SubDoors).Contains(d));
Log.Debug($"s...
Goal Description
Please 🙏
Notes
I asked nicely :)
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.4
Description
First opened as a support question in the discord: Forum Post
Sometimes the LabApi.Events.Handlers.ServerEvents.PickupCreated event doesn't invoke.
Some things I have tested, and their results will be down in the Addit...
Goal Description
Have an option for changing roles to not display the role title, or the spawn sound effect.
Notes
No response
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.4
Description
Player.Host is null when the Plugin is enabled
When enabled, creating examples requires the use of host.
To Reproduce
Detect the value of Player.Host when enabled
Expected Behavior
No response
Additional Information
I'm not sure if this counts as a bug.
Perhaps there ...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.0.2
Description
Calling Room.Get(RoomName.HczCheckpointToEntranceZone) will include the two long straight hallways after the HCZ -> EZ Checkpoint gate as separate rooms. If these hallways are separate rooms, they should not use the same enum name as the actual checkpoints.
To Reproduce
Call `Room.Get(...
Add support for loading plugins from subdirectories for better plugin organization
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
game version 14.2.3
Description
Spawning an active grenade through TimedGrenadeProjectile.SpawnActive and setting timeOverride to -1 makes the grenade use default fuse time.
To Reproduce
TimedGrenadeProjectile.SpawnActive(player.position, ItemType.GrenadeHE, timeOverride: -1);
Expected Behavior
Th...
Goal Description
Allow server to change SubtitleCategory._speakerName (C.A.S.S.I.E : -> playername or string)
i dont wan to use
Notes
No response
Goal Description
Add support for 3D models, not primitives.
We all want to add our own SCP objects, but primitives look very ugly
Notes
No response
Before You Report
- [ ] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.4
Description
If you set IsAllowed to False in the event, the item will still spawn
To Reproduce
IsAllowed set to false
Expected Behavior
No response
Additional Information
None
Goal Description
The current PlayerRolesUtils.IsFlamingo() method only checks if the player is on the Flamingo team or is a zombie flamingo. It doesn't return whether its a NTF or CI 1507 Flamingo.
Notes
No response
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
Current Website Version as of 8. January 2026
Description
When accessing a plugin's page on the website directly through a link like for example: https://plugins.scpslgame.com/plugin/louis1706/EXILED
you will not be allowed to upvote, even if you're logged in.
To Reproduce...
Goal Description
Currently, we require an API that can dynamically change player badges within the game, rather than specifying them in config_remoteadmin.
Notes
No response
Goal Description
I need to spawn an item/pickup with a specific ushort serial and convert it then to a LabApi item/pickup for easier use. Right now I'm just copy-pasting code from the LabApi implementation for creating pickups which seems like it has a good chance of breaking in the future.
I would just appreciate an overload to the Player::AddItem, Pickup::Create methods which would allow the specification of a ushort serial.
Notes
No response
bae22a8 Rename Cassie to Announcer - SlejmUr
920af70 Merge branch 'slejm/announcer' into 'dev' - davidsebesta1
1a0f2e3 TimedGrenadeProjectile timeOverride behavior docs - Axwabo
c602255 Merge branch 'axwabo/docs/grenade-time-override... - davidsebesta1
359270c Fix CheckpointDoor SubDoors return null. - SlejmUr
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.4
Description
Due to the complete rewrite of the Cassie system. Event calling has not been reimplemented.
To Reproduce
- Just subscribe a random log method to an Cassie event
Expected Behavior
No response
Additional Information
Changelogs:
- Added support to .nupkg files which can be stored inside plugins/dependencies folder.
When .nupkg file is loaded it will check if it has installed dependencies for example you can make plugin and just have it as .nupkg file if you set there dependencies like Newtonsoft.Json it will download it automatically if its missing on server.
Same as here, just for dependencies #327
[northwood-studios/LabAPI] Issue opened: #340 [BUG]: DealDamage is not used at it's best possibility
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
14.2.5-deploy-366a5e86
Description
Above the image show than DealDamage returning false do not cancel the count of a new victime
Goal Description
SpeakerToys currently always fall under the "Sound Effects" setting for clients when handling volume.
This can cause discrepancies when using SpeakerToys for player communications, as many players separately adjust their voice chat and effects settings (see below).
Notes
Personally, some months ago (when 106 was causing players to disconnect with conventional SCP prox chat plugins), I completely revamped my server's SCP prox chat system to use SpeakerToys. Since t...
Goal Description
Add to the Player::IsPlayer check that the player's Hub is not null, the player is not a Host, not a dummy, and he is verified on the server
Notes
No response
Goal Description
we have Scp079SimpleNotification,Scp079NotificationManager but all in client why we cant just make it on network so we can send Notification to player
Notes
No response
Goal Description
we have PlayerRoles.PlayableScps.Scp079.Overcons but in client,make it on network and allow server to create,change name/image and more
Notes
No response
Goal Description
we can change the DecontaminationController.ElevatorsLockedText so why we cant change the ElevatorScreen.NetworkText
btw make Decontamination sound broadcast server side pls
Notes
No response
Prior to submitting a suggestion to the repository, please ensure you have checked all previously closed suggestions, as they were closed and added into the internal backlog before.
Our current way of handling suggestions is to mark them as imported, and keep them open on the public repo while we handle things internally on our GitLab. We do not guarantee providing any information on how the suggestion is being processed. However, we will inform you when it's confirmed to be in the nex...
4a420a7 Load dependencies from subdirectories recursively - Xname7
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
14.2.5-deploy-366a5e86
Description
Scp939 and Scp106 have unespected behaviours
To Reproduce
set multiple time Scp939 or Scp106
Expected Behavior
no bug actually Scp939 being set multiple time make it Camera when crouching go under ground
Scp106 can't go through door if it's has been set 2 time
...
Goal Description
For DeathTranslations.Unknown there two possible Disconect or kill by kill command on Admin i thinks using Unknown shouldn't be used for that as it's unknown
and for DeathTranslations.Crushed
- BulkDoor
- PitDeath (that can Used Player Position to know how they died exactly
- ChaosVan (the Car)
- Hcz106
- Hcz939
- HczWaterRoom
- HczIncinerator
- LczGateA
- ElevatorCrushed in HczServerRoom or HczNukeRoom
i thinks we should know what PitDeath exactly killed them...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.4.2
Description
RoleExtensions.TryGetRandomSpawnPoint may throw a NullReferenceException for certain roles that implement IFpcRole.
The method assumes that all IFpcRole implementations have a non-null SpawnpointHandler, but in practice this is not always true (e.g. Scp0492).
To Reproduce
`RoleTypeId....
Goal Description
Add the Attacker interface to events or change Player to Target.
Since there's no interface, I can't subscribe to multiple events with the same method.
Example:
//PlayerEvents.DeathEventArgs and Scp106Events.TeleportedEventArgs
private void HealScpOnAttck(T ev) where T : IAttackerEvent
{
if (ev.Attacker != null && Plugin.ScpHeal.TryGetValue(ev.Attacker.Role, out ushort heal))
ev.Attacker.Heal(heal);
}
Notes...
Goal Description
The way this would work is when you set a role you could also set their color, any color you don't specify with revert back to its normal color the code would look like
Player.setrole(roletype.NTFPrivate.color.suit = blue)
The colors you could change would be different for different classes
Class-d: jump suit, skin
Scientist: coat, pants, skin
Facility Guard: shirt, pants, skin
CI: trenchcoat, helmet/gas mask, backpack
MTF: suit, helmet
A way that this could actually b...
Goal Description
SilentWalk.VolumePerStack is 0.1f right now only letting to people the choice to reduce from Intensity 1 to 10
I would suggest to change it to this new value (it is likely 1/255) also that would benefit to remove the Mathf.Max(x, 0) since the Maximum intensity is 255 it's would always return 0
the new value: 0.00392156863f
Notes
No response
Goal Description
i want to make a particle in map for the visual effect(should be easy)
Notes
No response
Goal Description
I would like the DrawableLineMessage next update to be serialized using a Vector3[][] instead of a Vector3[] that way many different segments can be sent in a single line message rather than multiple (you can technically accomplish this by inserting a bad vector (new Vector3(float.NaN, float.NaN, float.NaN)) into the array but it's a crude solution)
This change makes more sense as it would reduce network overhead for complex line objects at a minimal cost (even if you l...
Goal Description
Having a reliable effect to lock the camera of the player where they are looking so to make sure that you can do stuff like menus etc...
Notes
Just locking the camera where the player was looking so we can do for example
SendFpcRotationOverrideMessage to 0,0 and then apply the effect
or maybe having a field on MouseLook
Goal Description
add a ImageToy to show image in 3d(position rotation scale) and send image to the client by base64 or what
Notes
No response
Goal Description
Some time ago, it was suggested that plugins be given access to client-sided mutes.
That idea was tossed out the window in favor of giving SpeakerToys an additional player variable to block communications.
This means every other communication plugin implementing any form of text-based communication has no way to respect local mutes. Please add something so we can fix our communication plugins.
Notes
Are we just going to be cooked forever because of the whims of so...
Before You Report
- [ ] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.5
Description
When items gets removed with the method Player::RemoveItem(ItemType, int); the inventory bugs itself
To Reproduce
int n = 2;
player.RemoveItem(ItemType.Coin, n);
ItemType randomShopItem = ItemType.GunAK;
if (!player.IsInventoryFull)
...
This PR adds IsReloading, IsUnloading and IsReloadingOrUnloading getters to the LabApi FirearmItem wrapper.
It also adds a second change ensuring that CanReload will only return true if the firearm isn't in use (reload/unload) since base game would deny this reload.
If this change is not wanted, I think CanReload should have it's description (or also the name) changed since it doesn't reflect what it does as it only checks if the Owner of the firearm has enough ammo t...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.5
Description
So when you cause a very niche situation of causing a player to be parented to a rotating waypoint, whilst faking the bounds of that waypoint to 0 to all other clients, the person being rotated by the waypoint will see anyone else as rotating slightly before snapping back to their normal rotat...
Right now setter IsUsing setter does nothing.
This pull request changes that so it makes the usable start / cancel use if in players hands
Goal Description
So I was hoping to make a custom cafeteria by replacing when I found out only test room and 330 room can be destroyed, I think it would be cool if any room could be destroyed and replaced, this could open so many possibilities for custom maps
Notes
No response
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
game:14.2.5 labapi:1.1.4.2
Description
When applying certain effects via code or the RA panel (such as Scp1344, Poisoned, or Invisibility), once the effect expires, the player is unable to receive the same effect again through the corresponding in-game item.
Observed behavior:
- After the effect duratio...
Notice to Plugin Developers
Not a breaking change, but developers that have not explicitly set canBePrinted to true in their Logger.Debug calls will not see [DEBUG] message in the Console until debug is set true in configs/{PORT}/{Plugin}/properties.yml. Existing custom Debug configs will still work if prefered.
Changes
- Adds bool
debugto plugins' properties.yml to control default Debug log behaviour.Logger.Debug(object)will check for this Debug value bef...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.15
Description
after dropping the weapon it loses its worldmodel
To Reproduce
public override void OnPlayerShotWeapon(PlayerShotWeaponEventArgs ev)
{
base.OnPlayerShotWeapon(ev);
Logger.Info($"{ev.FirearmItem.Serial} {ev.FirearmItem.Type}");
if (!FirearmWorldmodel....
Goal Description
I don't know how possible this would be but I think it would be nice of things that are parented to a player would not lag behind for everyone.
Notes
No response
Description
CullingSubcontroller.LateUpdate
RoleTranslations.ReloadNames
RoleHelpMenu.Update
Scp079Camera.Update
This methods run on the server but pretty much useless except for probably Translation because sometimes they are used by developers.
Notes
This are actually client side only but never stripped from the server so because they are attached to the Player prefab they will load and call methods that pratically are useless for the server, with more than 1 player this ...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.5
Description
When trying to get item.Base.ThirdpersonModel._tr its null
To Reproduce
public bool Execute(ArraySegment arguments, ICommandSender sender, [UnscopedRef] out string response)
{
Player player = Player.Get(sender)!;
Item item = player.CurrentItem!;
...
Description
So it's be possible to make than the GameObject "All" get Parent to everything inside each Room Object :3
so that would make us possible to move RoomArround and that a great things for Plugin customisation
Notes
this will not affect any performance because the NetworkIdentity is already there
Checklist
No response
Small change for consideration.
Usually a plugin is made for the LabAPI version it's built with. This can be found in the LabAPI plugin example as well https://github.com/northwood-studios/LabAPI/wiki/Writing-Your-First-Plugin.
Proposed change is to set the Plugin#RequiredApiVersion using LabApiProperties.CompiledVersion in the base class and change the member from abstract to virtual. This will still allow developers to change the version if they prefer, but will not be a requi...
Goal Description
The idea is to allow developera to change the ThirdpersonItemBase scale so we could make custom items easier.
the only way the scale is changed rn is using FadeEffect
Notes
No response
Goal Description
This would permit to just not spawning an ExplosiveGrenade when doing the explosion and being able to modify some ExplosionSetting on specific Item also
Please do not call SelfDestroy before an Event
Notes
No response
Goal Description
It would be useful to introduce a PlayerEvents.Leaving event that triggers before a player fully disconnects from the server.
Currently, PlayerEvents.Left is fired after the player has already left, which limits access to important player data at the time of disconnection. This makes it difficult or impossible to reliably retrieve or process certain information (inventory, role state, custom data).
This would avoid the usage of OnDestroy or any alternative.
Notes
...
small change to the DoorName enum correcting a typo.
Hcz106Primiary --> Hcz106Primary
Goal Description
Add
DoorName.Hcz049Gate
DoorName.LczClassDContainer
DoorName.LczAirLock
Notes
No response
Goal Description
Right now Teams and Factions are enums, which makes them pretty limiting to work with - especially for plugins.
It would be really nice if these were class-based instead, so they can be extended dynamically. That way plugin devs could create their own teams/factions and have them properly handled by the base game instead of hacking around the existing ones.
At the moment, if you want custom roles or groups, you’re basically forced to reuse existing Teams/Factions or do...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6, this is specifically a base game bug for the 14.2.6 beta
Description
When you use an event like PlayerLeft and then construct a footprint from that event, your code will now throw an error despite it still working last update. This happens due to (see title)
To Reproduce
subscribe to PlayerLeft eve...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6
Description
I know some devs already know about this bug, and Exiled even patches it out right now, but the issue still exists on the client. If you do some weird shenanigans sometimes, you can make players straight up disconnect to the main menu without a kick message
To Reproduce
make primitive th...
Goal Description
During plugin deployment, users may find compatibility issues between plugins that developer needs to adress. But when should the incompatibility be resolved?
MapGeneratedorWatitingForPlayers? - What if changes need to be made before these events are fired?- Relay on plugin's
LoadPriority? - Not reliable, can be changed anytime - Coroutine on plugin's
Enablemethod? - Not reliable, will lead to unexpected bugs - Some other basegame event? - Not everyone has...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
14.2.6
Description
To be honest, I don't understand where this chain of bugs came from. I used the latest version of AutoEvents by MedveMarci and recompiled the plugin using the latest library versions, but the problem persists. When launching certain mini-games, there’s a chance you’ll get kicked from the serv...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6
Description
Players standing at any coordinates without a RoomIdentifier (ProjectMER schematics outside the facility grid) get their client completely frozen inventory dead, ESC doesn't work, can't switch/drop/equip items, camera pipeline breaks. The moment you teleport them back to a valid room everyth...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
14.2.6
Description
After CreateAhpProcess grants an AHP to a player, if the player has the Anti207 effect, the player's AHP will not be consumed, but will still reduce damage
To Reproduce
- Give the player a CreateAhpProcess with amount/limit = 75
- Apply the AntiScp207 effect to the player
- Wait unt...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6
Description
Painkillers can be used while not waiting through the whole animation by equipping another item as the animation is about to finish.
This has the effect of still consuming the painkiller (the item disappears and you get the HP regen) while UsedItem does not fire.
To Reproduce
- Use a plu...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6
Description
QueryProcessor::OnDestroy()method throws an NRE, which causes the normal destroying of other component likeReferenceHub,ReferenceHub::OnDestroy()won't run because of other component's NRE.ReferenceHub.OnPlayerRemoveevent won't trigger.- LabAPI won't remove the Reference...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6.1
Description
When you want to get a Scp018's PhysicsModule it will call himself
public PickupStandardPhysics PhysicsModule => this.PhysicsModule;
To Reproduce
Spawn an Scp018Projectile and get it's PhysicsModule
Expected Behavior
No response
Additional Information
System....
Goal Description
It would be very useful to control with a property if a human should be considered as a SCP target or not.
- boolean player.IsTarget
It would also permit to not count the human for the round ending.
Notes
No response
Goal Description
Allows developers to easily decompile with documentation without ingeration of using nuget which can be updated later or smth give us docs
Notes
No response
Goal Description
The current API forces unnecessary allocations for single permission checks, which can introduce avoidable GC pressure ;)
Notes
No response
Goal Description
Pretty self-explanatory add events for SCP3114Events.Slapping & Slapped and SCP0492Events.Attacking and Attacked. Id also go through and make sure all the SCPs have an event for their base attack ability so that plugins can subscribe to it.
Notes
No response
Goal Description
Introduce a new item with no visible appearance (similar to the hand, but with a serial id), intended strictly for development purposes. This item would act as an interaction layer rather than a visual element ;)
Features
- Detect multiple input interactions
- Left mouse click (hold / release)
- Right mouse click (hold / release)
- Mouse wheel scroll (up / down)
- Customizable name and description in inventory (similar to CustomKeycard)
Why ?
From a develop...
Goal Description
I finally tried to use TextToys for something more than displaying a simple label and I hit a wall.
At the moment TextToys (through the use of TMP tags) allow us to align text in 5 ways.. but that's not enough for a sane developer. I'm talking about missing Vertical Alignment options (Top, Bottom) and also Overflow Modes (Truncate).
Notes
Of course with the addition of VerticalAlignment syncvar, there would also be a need for HorizontalAlignment s...
Goal Description
The main idea is that with a plugin it would be possible just to use Player.Team = Team; to change the player's team and faction.
This would be really useful for CustomRole plugins. This way it would be possible to make HumanRoles as SCPs or NTF as a CI, etc.
Notes
No response
For anyone wondering - we are just syncing what we have open internally and on GitHub, since they were simply closed and imported previously 👍
Goal Description
Have a way to make dropdown have multiple selection, good idea for example, for cosmetics or a wardrobe system and so on
Notes
Maybe having on the side a checkmark to show the user which one they have selected and update it whenever the use select or deselects it maybe a flag / bool for it to be allowed or not, or how many objects you can select a max or a min amount
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6
Description
When calling Player::Kill() or it's overloads, the player doesn't die if they have SpawnProtection with the default config.
To Reproduce
- Give the SpawnProtected effect to the player.
- Run player.Kill() from plugin (or just deal damage using an universal damage handler)
- Player in ...
Goal Description
Add events that are fired when player dies while holding an active grenade. These events should allow cancellation of the "throw" or modification of the resulting projectile’s properties.
The relevant logic resides in InventorySystem.Items.ThrowableProjectiles.ThrowableItem::OnRemoved() method.
Cancellation of -ing event should prevent both creation of the ThrownProjectile and destruction of the Pickup.
Notes
PlayerDroppingLiveGrenadeEventArgs should imp...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6
Description
If you remove the base map (therefore default camera) then try to spawn SCP-079, it'll disconnect the player with a invalid data client error.
To Reproduce
Disable base game map spawning in configs
Spawn the player as SCP-079
Expected Behavior
It should either :
- Spawn SCP-079 wit...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6
Description
When an exception occurs inside an event handler, EventManager.InvokeEvent catches it and logs an error using FormatErrorMessage(eventHandler, e). However, because eventHandler is a MulticastDelegate, accessing its .Method and .Target properties returns the information of the **las...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6
Description
In LabApi\Events\EventManager.cs, the methods InvokeEvent and InvokeEvent iterate over subscribers using foreach (Delegate sub in eventHandler.GetInvocationList()).
In C#, MulticastDelegate.GetInvocationList() allocates and returns a **new array on the heap every single time it is ...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6
Description
In LabApi\Features\Wrappers\Facility\Map.cs, multiple methods responsible for getting random objects (e.g., GetRandomRoom, GetRandomDoor, GetRandomLight, GetRandomCamera, GetRandomRagdoll) suffer from a severe double-iteration performance issue and unnecessary GC allocations due to...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6
Description
In the ThrowableItem wrapper, the FullThrowRelativePosition property incorrectly gets and sets the StartTorque value of the FullThrowSettings instead of the RelativePosition. This breaks the physics and spawn position logic for full throws of grenades and other throwable items.
...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6
Description
The ParticleDisruptorItem class overrides the ChamberMax, ChamberedAmmo, and Cocked properties but only provides a get accessor for them. Because the base class (FirearmItem) has both get and set for these properties, attempting to set any of them on a ParticleDisruptorItem f...
Goal Description
Developers might want to keep track of these events, such as creating special cases of keycards where possibly having a "power throw" where you have anime protagonist powers of throwing the keycard hard enough to open silo warhead with a janitor card.
In my usecase I want to keep track of these events in a more granual way of knowing if it was a direct, held in hand interraction or a thrown keycard verison.
Notes
Ideally would be a carbon-copy of the DoorInteracted...
Goal Description
This is some "dupliacte" of #390. The custom weapon would have settable colour like primitive admin toy and would have custom ammo count / firerate / name / etc.
Notes
Look smth like this
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6.1
Description
When attacking a player as 106, if they're the last alive they'll instantly die but the OnScp106TeleportedPlayer will still run anyway, even if they aren't teleported.
To Reproduce
Make yourself SCP-106 and spawn in a dummy as a human class, kill the dummy and the event will run even t...
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
1.1.6
Description
Despite setting 0 in Badge flag in PlayerInfoArea enum on player, badge is still visible in game.
To Reproduce
- Grant user a UserGroup
- Set flag Badge to 0 on InfoArea
Expected Behavior
User's bagde should be hidden in game
Additional Information
Even after setting info...
Goal Description
Add a ParticlesToy prefab that allows reuse of existing in-game particle systems of any type
Properties (If possible)
- Speed
- Hue Shift
- Loop
Examples
- Fire particles from the Spicy effect
- Ice breath
- SCP-2176 explosion
- Fire effects from SCP-914 (Halloween)
- And all other existing particles
Notes
No response
Before You Report
- [x] I have searched for existing reports of this bug, and this bug report is unique.
Version
14.2.6
Description
PlayerSpawningEventArgs.UseSpawnPoint is currently initialized using:
fpcRole.SpawnpointHandler.TryGetSpawnpoint(out spawnLocation, out horizontalRotation)
However, the returned bool only indicates whether the role has a spawnpoint available, not whether this spawn should actual...
Goal Description
Change PrimitiveObjectToy:Color from UnityEngine.Color to Color32, beacuse its cheaper and also easier to work with (more rgb like)
Notes
No response
Goal Description
Custom mesh primitive toy would allow the map makers to make more optimized / better looking maps. Right now they are limited strictly to unity's quads cubs etc.
How could they be sent through the network?
The meshes would only need an Vector3[] Verticies and int[] triangles which could be made in a struct
Wouldn't just triangles be better / lighter?
No and here is proof https://www.desmos.com/calculator/5alqon...
Goal Description
I recall that room.LightIntensity existed before, and it is different from room.color. Adjusting the light strength via room.color looks very uncomfortable. room.LightIntensity is different because it modifies the actual light intensity of the room. Keeping it allows plugin authors to fully realize their creativity.
Notes
No response
Goal Description
If the color of the clothes in Tutorials S can be changed, it will be easy to distinguish the plugin characters using Tutorials
Notes
No response