Releases: ServerMod/Smod2
ServerMod 3.3.0
Target Game Version: 8.0.1 (Revision III)
Reminder that a new MultiAdmin has also come out recently, if you haven't noticed. https://github.com/Grover-c13/MultiAdmin/releases/tag/3.0.0
Game
-
Plugin dependencies folder will now be automatically be created within
sm_plugins -
Removed loading translation audio files to lower RAM consumption by a large amount.
-
Readd
reduce_ammo_on_reload(was removed in update to 8.0.1). -
Added ServerMod config validator, which will save all requested config variables to config file.
sm_write_defaultsis config for that, being false by default. In case you actually want to write exact default values, usesm_write_exact_defaults, which is false by default. -
Added a flashbang command
FLASH -
Added config Rint
random_scp_chances, defaults to empty string. This dictates the odds of each SCP. Don't use this for 049_2 or 079, as 049_2 is always banned (I think) and 079 uses a different spawning system. Example is{4%0|2%3|2%5|1%9|1%16|1%17}. -
Added config int
random_scp_attempts, defaults to 0. This dictates how many times it attempts to find a random option according to random_scp_chances that isn't banned or full. If you go past the attempt count, it'll use the default type instead. (By default this disables random_scp_chances). -
Added config boolean
scp173_blackout_light_check, defaults to true. When true, SCP-173 will be unable to move when a flashlight is being shined at it during blackout -
Added config float
generator_duration, defaults to 120. The number specified is the time (in seconds) that a generator will start at. -
Added config list
generator_keycard_perm, defaults to ARMORY_LVL_3. Determines what keycard permissions are allowed to unlock generator doors. -
Added config int list
generator_insert_teams, defaults to all team IDs. Team IDs specified will be allowed to insert a tablet into a generator. -
Added config int list
generator_eject_teams, defaults to all team IDs. Team IDs specified will be allowed to eject a tablet from a generator. -
Added config int list
generator_unlock_teams, defaults to all team IDs. Team IDs specified will be allowed to unlock a generator (given that they have the proper keycard for it). -
Added config string
scp096_rage_increase_mode. This allows you to set 4 new ways of handling 096's rage increase.watchermultipliedwill increase the rage by amount of players watching 096, instead of all players currently on the server.notmultipliedwill not multiply the rage increase at all.optimizedshould be a more performant version of default (exits the loop as soon as a watcher is found).optimizednotmultipliedshould be a more performant version of notmultiplied. Setting any other value should default to the current main game system. If no flaws are found with optimized or optimizednotmultiplied, these will replace the default & notmultiplied versions. (they're simply here for safety) -
Fixed
scp096_ignored_role,scp173_ignored_roleandspawn_protect_team. They were previously using the pseudoYAML list entry (similar to port queue). -
Fixed issue added in 079 update where an SCP's count would increase even if that SCP was then changed to 079. This would have outcomes where not all your SCPs could spawn.
API
- Renamed
UserGroup.NametoUserGroup.BadgeText(the text of the tag to display) - Added
Player AttackertoPlayerPocketDimensionEnterEvent - Added
UserGroup.Name(name of the group, not tag to display) - Added
UserGroup.Cover - Added
UserGroup.HiddenByDefault - Added API for controlling the warhead:
Map.DetonateWarhead(),Map.StartWarhead(), andMap.StopWarhead(). - Added two new variations of
GetPlayerswithRole&Role[]as overloads. - Added many methods to
Vectorincluding:float Distance(Vector a, Vector b)Vector Lerp(Vector a, Vector b, float t)Vector UnclampedLerp(Vector a, Vector b, float t)Vector Min(Vector a, Vector b)Vector Max(Vector a, Vector b)string ToString()override (prints out (X, Y, Z))string ToString(string format)(prints out normal string ToString() but uses the format on the individual numbers)
- Added the following getter-only properties to
Vectorfloat SqrMagnitudefloat MagnitudeVector Normalize
- Added operator (
+ - / *) support toVectorandfloat, as wellVectorandVector. - Added
GeneratorAPI object for the new 079 generators. All Generator objects can be retrieved by using Map.GetGenerators(). - Added enums
ZoneType,RoomType,Scp079InteractionType, andExperienceType - Added
Scp079Dataobject which can be accessed from aPlayerobject. This allows plugins to perform SCP-079 actions as if the player did them (basically an Scp079PlayerScript wrapper). Calling something that can be done via an interaction in game (e.g. locking a door as a player) will not grant or show XP, but thefloat Expproperty can be added to and thevoid ShowGainExp(ExperienceType expType)method can be used to simulate a player gaining XP. - Added
Roomobject which are found in theGeneratorobject,List<Room> Map.Get079InteractionRooms(Scp079InteractionType type)(with supported interactions in the enum), and new speaker and lockdown events. The object stores the type of room, butint GenericIDallows you to identify generic (curved/straight corridors, 4 ways, etc) rooms as well. - Added
object GetComponent()toDoorandTeslaGate. - Added parameter
bool instant(default false) to voidTeslaGate.Trigger(). - Changed equality operator of
Vector. Now==will compare the value ofx,y, andz. If you'd like to do reference equality, useVector.Equals(object obj)instead - Changed
Player.GetRankName()to now return null if the player has no group set - Fixed
Player.GetRankName()not returning anything when player group is not set through Remote Admin config - Fixed
Player.SetRank()not properly handling empty strings
Events
- Added
LateDisconnectEvent, this event fires afterDisconnectEvent, after the player has been fully disconnected and removed. - Added
GeneratorUnlockEvent: fired when a player attempts to unlock a generator. - Added
GeneratorAccessEvent: fired when a player attempts to open/close a generator. - Added
GeneratorInsertTabletEvent: fired when a tablet is inserted into a generator. - Added
GeneratorEjectTabletEvent: fired when a tablet is ejected from a generator. - Added
GeneratorFinishEvent: fired when a generator is finished powering up and has become engaged. - Added
079DoorEvent: fired when SCP-079 opens or closes a door. - Added
079LockEvent: fired when SCP-079 locks a door. - Added
079ElevatorEvent: fired when SCP-079 uses an elevator. - Added
079TeslaGateEvent: fired when SCP-079 uses a tesla gate. - Added
079AddExpEvent: fired when an SCP-079 gains XP. - Added
079LevelUpEvent: fired when an SCP-079 levels up. - Added
079UnlockDoorsEvent: fired when an SCP-079 unlocks doors. - Added
079CameraTeleportEvent: fired when an SCP-079 teleports to a new camera. - Added
079StartSpeakerEvent: fired when an SCP-079 starts speaking through a speaker. - Added
079StopSpeakerEvent: fired when an SCP-079 stops speaking through a speaker. - Added
079LockdownEvent: fired when an SCP-079 causes a lockdown in the room (the hazard sign that causes lights go off and doors close and lock). - Added
079ElevatorTeleportEvent: fired when an SCP-079 teleports to a different level via an elevator. - Fixed
914ActivateEventgetting anSmodPlayerobject of the 914 machine (which basically doesn't work) instead of the player that activated 914. - Fixed SCP-106 event positions crashing the game if set to null, now it simply ignores the position in the event if it's null
- Fixed
BanEventnot having a player object in case the ban was done through RA Panel (the only time there is a player object).
ServerMod 3.2.2
Target Game Version: 8.0.1 (Revision III)
Plugins using SCP914ActivateEvent will need to be rebuilt.
reuploaded to fix escape counts being reversed
Game
- Updated to 8.0.1 (Revision III)
- Added Broadcast (and broadcast clearing) commands to the server console. (see BC and BCCLEAR)
- Added Personal Broadcast (and personal broadcast clearing) commands to server console. (see PBC and PBCCLEAR)
- Added a new way to print config entries when you have
sm_debugenabled. This will package all the config entries into one message, rather than one message per entry. This will likely make the server seem a bit more responsive when booting as compared to the old system, as it won't have to catch up to all the printed messages. To enable this, use the below config entry. - Added config bool
package_config_debug, defaults to false. When you enable this, it will activate the above new method of printing the debug messages. - Added config bool
sort_config_debug, defaults to false. When you enable this, it will print the config entries alphabetically sorted by the config key. - Added config bool
reduce_ammo_on_reload, defaults to true. When this is disabled, players won't lose ammo when reloading their weapons. This essentially gives every player infinite ammo. - Added config bool
disable_dropping_empty_boxes, defaults to false. When this is enabled, players will no longer be able to drop ammo boxes with 0 ammo in them. Unless this nukes your server, you should probably enable this 🤷♂️ - Changed the way escapes were counted so that detained Class-D now count as scientist escapes and vice versa when
escapee_restrained_checkis enabled. - Changed 914's class changing config logic. If you set the value of the class it should change to to -1, it'll not trigger on that class. This is opposed to the situation where if you used 0:0 for example, it would trigger a new spawn event, as it would effectively spawn that player as a new SCP173.
- Fixed an issue that happened when a plugin tried to register a command that was already registered (either by main game or a different plugin.)
API
- Added
Map.Broadcastfunction. Takes a uint for the duration, a string for the message that should be displayed and a bool for whether or not it should be monospaced. This allows you to display a message for all your players, similar to the BC command. - Added
Map.ClearBroadcastsfunction. This allows you to empty the queue of messages to broadcast, similar to the BCCLEAR command. - Added
GrenadeExplosionEvent. This event will fire once per frag grenade and pass the player that threw the grenade. This event is supposed to be used in conjunction withPlayerHurtorPlayerDieevents as the information in those events was sometimes lacking when the thrower died themselves. Be careful as the Thrower can be null. - Added
GrenadeHitPlayerEvent. This event will fire once per player hit by a frag grenade and pass the player that threw the grenade and the player that was hit. This event is supposed to be used in conjunction withPlayerHurtorPlayerDieevents as the information in those events was sometimes lacking when the thrower died themselves. Be careful as the Thrower can be null. - Changed
914ActivateEventto also have the player object that activated 914. Also renamed some of the variables.
ServerMod 3.2.1
Target Game Version: 8.0.0 (Christmas Event)
3.2.21 B
Game
- Fixed default item not being able to give USP.
- Added christmas achievement & fast escape achievement
API
Nothing
3.2.21 A
Game
-
Updated to 8.0.0 (Christmas Event) 🎄
-
Added
.{Command}&/{Command}options. These are used in game to contact the server. The period prefix will be able to be used by any player, and as such will mainly be used by plugins. The slash prefix will be used by people who have RA panel access to effectively send a command as if it was sent in the server console. This is effectively the same functionality asserver_command_whitelist. -
Fixed an issue that caused some configs to not work correctly when they were set to a value of
default.
API
- Added
PlayerCallCommandEvent, which passes the player, the command they called & allows you to read & set the return message the player will get back in their console. Please use a prefix similar to your configs when you wish to make use of this functionality, so different plugins don't listen to the same command. As a precaution, you should also check if the the return message isCommand not found.If it isn't, another plugin likely already used it
ServerMod 3.2.0
Target Game Version: 8.0.0 (Revision III)
REREREREREREUPLOAD TO FIX BELOW BECAUSE IDANGER DIDN'T TEST IT 😠
Reuploaded to add cs/central/csrv command which allows you to switch the central server
Plugins will likely need to be rebuilt.
Game
-
Updated to 8.0.0
-
Actually kill 079 when nuke goes off 👀
-
Added config integer
tutorial_hp, defaults to 100. -
Added config bool
always_spawn_079, defaults to false.
This will make 079 always spawn within the first two SCPs (unless 079 can't spawn at all due to ban or count) -
Re-added config bool
no_scp079_first, defaults to true.
When this is disabled, 079 will have a 40% chance to spawn as first SCP. -
Fixed
scp079_disable&scp079_amount -
Fixed
disable_commander_mtf_disarm(main game changed how it calculates if players can handcuff eachother) -
Disabled player position interpolation for the server
API
- Added
RoundStats.ScientistsEscaped&RoundStats.ClassDEscapedsetters. Plugins should now be able to set their values. (this should allow you to manipulate the end conditions) - Added
Player.DoNotTrackproperty. When this is set to true, your plugin cannot log any information about that specific data. You can still log nonidentifiable data using that player (such as total amount of kills on your server accross all players). - Added DamageType.USP and ItemType.USP
Role.SCIENTISTSchanged toRole.SCIENTISTandRole.CHAOS_INSUGENCYchanged toRole.CHAOS_INSURGENCY
Do be aware that this release could still have some issues. Some examples of reported issues were plugins not being able to use RoundStart event, 049 not being able to res players and ghostmode causing all players to be invisible (disable this with config for now)
ServerMod 3.1.22
Target Game Version: 7.4.3 (Revision II-b)
3.1.22 C
Game
- More anticheat improvements that'll be in main game next update. (reason for update)
API
Nothing
3.1.22 B
Game
- Added new anticheat improvement that'll be in main game next update. (reason for update)
- Changed AFK kicker to give "You were AFK for too long." message to kicked player, rather than the default kick message.
API
- Fixed Player.GetCurrentItem function to not shit the bed if player doesn't have items. (hopefully)
3.1.22 A
Game
- Whole lot of nothing
API
- Added safeguard around plugins returning Role.UNASSIGNED in OnSetRole event
- Fixed exception related to character role being Role.UNASSIGNED in HurtPlayer function
- Changed SmodPlayer.GetPlayers() function to now also work with SteamIDs
- Changed SmodPlayer.GetPlayers() function to match only exact IPs
ServerMod 3.1.21
Target Game Version: The spooky one
3.1.21
Game
- Added config float
allowed_speed_multiplier, defaults to 1.3f.
This is used to determine whether a certain player's movement is allowed or not. Lowering this value will mean it is less likely players will use speedhacks on your server, however it will mean people with a high latency will have more rubberbanding. (I highly recommend not lowering this under 1.15) - Added config list
scp096_ignored_role option, defaults to an empty list.
All roles added to this list will be ignored from 096's detection, and as such will not be able to trigger his rage state. - Fixed CONFIG commands (config reload etc.)
- Trying to fix random invisible players
API
- Added event OnSetConfig
- Added event OnSummonVehicle
ServerMod 3.1.20
Target Game Version: 7.4.3 (Revision II-a)
3.1.20-B
- Fixed MicroHID
- Fixed LCZ Decontamination & Tesla Gate
- Re-added antifly config
- Re-added start_round_minimum_players
3.1.20-A
Game
- Added config list
cleanup_ignored_items, defaults to an empty list. Items that have an ItemID in this list won't get added to the automatic cleanup queue. - Added config floats
939_damage_multiplierandzombie_damage_multiplier, defaults to 1.
This will allow you to easily change the amount of damage 049_2 & 939 deal with attacks. The flat amount is 60 for 049_2 and between 50 & 80 for 939. - Added config bool
sm_enable_ghostmode, defaults to false.
API
- Added
Player.GetGhostMode()&Player.SetGhostMode(bool ghostMode, bool visibleToSpec = true, bool visibleWhenTalking = true)This will make the player invisible.
Note:visibleWhenTalkingonly works when the player is using radio. - Added event
OnMakeNoise
Servermod 3.1.19
Target Game Version: 7.4.2 (Revision IV)
3.1.19B
Game
- Added config bool
prevent_false_173_moves, defaults to false.
This disables the new anticheat which is supposed to prevent players from moving as 173 when they shouldn't be able to. (This type of anticheat was having issues) - Changed griefing global bans to exploiting global bans (should be in game next version). This means config bool
global_bans_griefingwas changed toglobal_bans_exploiting.
3.1.19A
Plugins using Player.ChangeRole(...) will need to be rebuilt.
Game
-
Added config bool
unlimited_radio_battery. defaults to false -
Added config bools
antifly_code_<Code Number>_log, defaults to true for all -
Added config bool
disable_antifly_logging, defaults to false (disables all anti-fly logging) -
Added config bool
disable_commander_mtf_disarm, defaults to false (aka still allowing Commander to disarm teammates).
This will prevent Commander from disarming fellow MTF members -
Added config floats
min_blink_timeandmax_blink_time, defaults to 2.5 & 3.5.
A random value is taken between these two, which determines how long players have to look at 173 before a blink is triggered. -
Added config int
seconds_until_force_restart, defaults to -1 which won't cause automatic restarts.
This will force the round to end after the round has been active for X seconds. -
Added ability to have a reason when kicking/banning. Format is
BAN [player name/IP] [duration (minutes)] [reason].
Reason is optional & can consist of multiple words. This works in both Remote Admin Panel and from the server console. (Reason will be shown in your ban logs, in the server console & for the disconnected player) -
Changed
cleancommand to support removing items more efficiently (Check thehelpcommand for more info) -
Changed
antifly_kill_playertoantifly_code_<Code Number>_kill_player, defaults to true for all -
Changed anti-fly logging to prevent spam (Prints one per player per code every 30 seconds)
-
Change Reserved Slots' default file from
Reserved Slots.txttoReservedSlots.txt
API
-
Added
Player.OverwatchModeproperty -
Added
Player.HandcuffPlayer(Player playerToHandcuff)function.
This will attempt to make the player it's called on handcuff the player passed as an argument. If they are more than 200 units apart this will likely immediately unhandcuff the second player. Strange things might happen if you try to make player handcuff himself or make a spectator handcuff someone. (This is untested) -
Added
Player.RemoveHandcuffs()function.
This will attempt to remove handcuffs from the player it's called upon. -
Changed
Player.ChangeRole(...)function to have additional optional parameter boolspawnProtect, defaults to true.
Check spawn protect config options for more detail. -
Changed
Player.Changerole(...)function to have additional optional parameter boolremoveHandcuffs, defaults to false. This will attempt to remove handcuffs from the player when changing his role. -
Changed
Door.Lockedproperty's set handling to work the same way as the Remote Admin Lock functionality works -
Changed
Door.Openproperty's set handling to resolve an issue and work the same way as Remote Admin Close functionality
ServerMod 3.1.18
Target Game Version: 7.4.2 (Revision IV)
Game
- Added config
antifly_enable, defaults to true - Added config
antifly_kill_player, defaults to false - Integrated SpawnProtect. Added config
spawn_protect_disable, defaults to true - Added command
SetSpeaker <Player>
API
- Fixed API
PlayerListTitle - Added API
Map.SetIntercomSpeaker&Map.GetIntercomSpeaker - Added API
Player.RadioStatus - Added API
Player.SetRadioBattery - Added event
OnPlayerRadioSwitch - Added event
OnPlayerPickupItemLate
ServerMod 3.1.17
Target Game Version: 7.4.1 (Revision I)
Game
- Game now recovers from missing SCP spawnpoints by spawning such SCPs in LCZ.
- Added config
teleport_unstuck_protection
(This will prevent players from getting stuck in the ground when teleporting. Default to true.) - Added config
player_list_title - Fixed Default Item
API
- Added functionality for plugins to kick/ban users with custom messages.
(When the player is disconnected, it will show the message on his screen instead of default "You have been kicked/banned") - Added API
Map.AnnounceNtfEntrance&Map.AnnounceScpKill - Added API
Server.BanIpAddress&Server.BanSteamId - Added API
Server.PlayerListTitle - Fixed API
SetIntercomContent - Fixed
Player.GiveAmmoforOnSetRole