Skip to content
This repository has been archived by the owner on Feb 21, 2023. It is now read-only.

Releases: ServerMod/Smod2

ServerMod 3.9.0

15 Sep 00:16
e8d2620
Compare
Choose a tag to compare
ServerMod 3.9.0 Pre-release
Pre-release

Target Game Version: 10.0.3

Changes since last update.

  • Updated to the latest version of the base game.
  • Fixed thrownade by moving it to the system that main game uses. (It was completely rewritten by main game devs)
    You can use this by doing ThrowGrenade(GrenadeType grenadeType, Vector direction = null, float throwForce = 1f, bool slowThrow = false);
  • Adds AHP and HP property and deprecated old ways of doing them.
  • Migrated SmodPlayer to using the ref hub system.
  • Added status effect support.
  • New enum of all status effects called StatusEffect
  • New class PlayerEffect which contains
  1. StatusEffect which returns the above enum value of which status effect it is.
  2. Duration aka how long in seconds is going to last
  3. Intensity returns 0 if disabled or 1 if enabled (unless its the cola which will return how many stacks are active so if you drink 3 colas this will return 3)
  4. Disable the effect or enable the effect with duration and the ability to stack duration
  • Two methods on SmodPlayer
  1. GetAllPlayerEffects() List of PlayerEffect
  2. GetPlayerEffect(StatusEffect effectToReturn) returns status effect from enum value
    -Added 3 status effect events.
  3. IEventHandlerDisableStatusEffect - Called whenever a status effect is disabled. Has person, the status effect and allow property.
  4. IEventHandlerEarlyStatusEffectChange - Called right before the duration is changed when a status effect is changed. Has person, the status effect and allow property.
  5. IEventHandlerLateStatusEffectChange - Called right AFTER the duration is changed. Has person and the status effect.
  • Added stamina to SmodPlayer with a get/set have fun ;)
  • Added IEventHandlerPlayerSCP207Use and IEventHandlerPlayerSCP268Use
  • Both have player using the SCP, the item in the inventory and Allow.
  • 268 event has Cooldown in seconds (get/set)
  • All of the grenade events (throwing, explosion and hit player) now are properly called and now support SCP-018.
  • Fixes small bug where SCP-106 grabbing people damaged twice.
  • Fixes 106 create portal event triggering twice
  • Adds ShowHint(string Text, float durationInSeconds = 1f) to SmodPlayer

Known issues

  • Class picker modifications have not been ported. Expect base game behavior.
  • Intercom text customization has not been ported. Expect base game behavior.

ServerMod 3.8.4

13 Aug 23:26
5bdd301
Compare
Choose a tag to compare

Target Game Version: 10.0.2

Changes since last update.

  • Updated to the latest version of the base game.
  • Fixed window_health
  • Fixed an issue with reserved slots.
  • Readded unlimited_radio_battery

Known issues

  • None at this time.

ServerMod 3.8.3

03 Aug 19:47
5bdd301
Compare
Choose a tag to compare

Target Game Version: 10.0.1

Re-released to fix missing item pickup event.

Changes since last update.

  • Fix not being able to change SCP-173's blink time.
  • RoundStartEvent is no longer triggered multiple times.
  • Updated API to support changes in newest version.

Known issues

  • None at this time.

ServerMod 3.8.2

26 Jul 12:02
3779add
Compare
Choose a tag to compare

Target Game Version: 10.0.0

Re-released to fix version string.

Changes since last update.

  • Fixed scp096_ignored_role config
  • Adds Allow property to PlayerPocketDimensionEnterEvent so authors can prevent people from being grabbed.
  • When your HP is above maxHP and you heal it now does nothing instead of resetting your HP to maxHP.
  • Fixes DamageType have out of date values.

Known issues

  • None at this time.

ServerMod 3.8.1

24 Jul 16:51
74e6b67
Compare
Choose a tag to compare

Target Game Version: 10.0.0

Changes since last update.

  • Updated to the latest base game.
  • SCP914ActivateEvent rework, instead of object list of inputs that could be either a player or an item it returns list of items called ItemInputs and list of players called PlayerInputs
  • Added LobbyLock to Round
  • Added Player queue to DecideRespawnQueueEvent
  • Added AnnounceCustomMessage
  • Added OverchargeLights
  • Added SCP018 to GrenadeType enum
  • Added OnScp096AddTarget.
  • Added MicroHID damage type.
  • Changed the ammo type enum to the new ammo names
  • Change Role to RoleType in ScpDeathAnnouncementEvent.

Known issues

  • None at this time.

ServerMod 3.7.0

25 May 10:16
f6b63e1
Compare
Choose a tag to compare

The forever release.

Target Game Version: 9.1.3

2020-07-14: Re-released to fix double round restarts and a potential problem with badges.

This is a clean re-implementation of ServerMod onto the latest game version. Plugins will need to be updated to match changes made in the base game and ServerMod as a result.

API changes

  • admin variable from AdminQueryEvent can be null due to a main game change, allowing someone to issue a command with the dedicated server console.
  • Reworked PlayerMedkitUseEvent into PlayerMedicalUseEvent
  • Added GetArtificialHealth() and SetArtificialHealth(float amount) methods to SmodPlayer.
  • Reworked the way the API deals with steamid since now a player can join with steam, discord or as northwood staff.
  • SteamId variable of SmodPlayer has been obsoleted in favor of UserId (returns full ID), GetParsedUserId()(returns ID without ID Type) and UserIdType (Returns STEAM, DISCORD or NORTHWOOD)

ServerMod 3.6.0

08 Nov 12:39
555eb00
Compare
Choose a tag to compare

It's a big one bois

Rerereleased to update how random configs work, update assembly versions and update default value for noclip_door_open_time_percentage to 0.2

Target Game Version: 8.0.1 (Revision III)

A LOT OF PLUGINS will no longer work and will need to be rebuilt and or changed. Before notifying the plugin dev, please make sure if they weren't already told about it.

Game

Added Configs

  • Added config bool priority_mtf_respawn_shuffle, defaults to false. This determines whether or not to shuffle the respawn list of prioritized respawns. With shuffling disabled, those who have been dead longer will have higher ranks.
  • Added config float noclip_door_open_time_percentage, defaults to 0.667 and ranges from 0 to 1. This is the amount of time that the anti-noclip ignores player movement through doors as a percentage of the door movement animation where it's open. For the closing animation it's the first part of the animation, and for opening animation, it's the last part of the animation.
  • Added config bool nuke_operational_during_decon, defaults to false. Allows players to interact with the nuke during LightZone decontamination
  • Added config bool mtf_respawn_nukecountdown, defaults to false. Allows MTF/CI to respawn during nuke countdown
  • Added config bool mtf_respawn_decontamination, defaults to false. Allows MTF/CI to respawn during LightZone decontamination
  • Added config bool ci_allow_post_nuke_respawn, defaults to false. If set to true, CI can still spawn after nuke goes off.
  • Added config bool ignore_tutorial_anticheat, defaults to false. Decides if anticheat checks tutorial class. (Can be used to allow moderators to be ignored for example)
  • Added config bool 096_destroy_locked_doors, defaults to true. Sets whether lankster can destroy locked doors.

Automatron changes

  • Added config bool automatron_enabled, defaults to true. If this is set to false, all automatron functionality will be disabled. (bans can be disabled separately but people were too tinybrain to find the config for that)
  • Added check around possible false positive related to teleportation.
  • Added workaround for SCP-173 players getting banned by Automatron on servers where SCP-173 max health is set below default.
  • Changed sample count defaults to 6 to hopefully prevent deaths by door pushing. (This prevented any false positives on SecondFry's server. Worse servers might need to raise the sample counts even higher)
  • Forced Automatron allowed observed speed multiplier to at least 1.01f

Changes

  • Fixed ConfigFile populating entries like # something: something by enforcing pattern matching. This enforces config keys to be alphanumeric with ground symbol (i.e. pepegas_have_rights_too: maybe).
  • Added additional checks for SteamId to be present in anticheat
  • Fixed team respawns, they were previously spawning people who were dead for shorter amounts of time than others
  • Prevent ghost processes by closing the game if provided with an invalid PID, but has the -id argument
  • Block empty or null strings from CmdChangeModPreferences
  • Always allow players to pass through destroyed doors
  • Anti-noclip now allows players to pass through broken windows and checks every collision rather than just the first collision
  • Removed disable_handcuff_event config because the event works fine now.
  • Tesla gate is no longer getting config int list every fixed update.
  • No longer getting bool config every time it sends debug message.
  • window_health config works now.
  • Players should no longer trigger antispeedhack while going through destroyed doors.
  • scp049-2_hp changed to scp049_2_hp.

API

Additions

  • Added weapons to the API. (See next section for more information)
  • Added PlayerDropAllItemsEvent. Called when all of a player's items are going to be dropped.
  • Added CassieCustomAnnouncementEvent. Called when a custom CASSIE message gets added. (through the API for example.)
  • Added CassieTeamAnnouncementEvent. Called when the CASSIE message for the MTF respawns gets added.
  • Added OnSetSeed. Called when the seed is chosen and allows plugins to modify or log it.
  • Added PlayerLeaveEvent which has SteamID, IP, Nickname and PlayerID and is fired as QueryProcessor is being destroyed.
  • Added property SmodPlayer.Muted which allows you to get and set the muted state.
  • Added property SmodPlayer.IntercomMuted which allows you to get and set the intercom muted state.
  • Added new enum LeadingTeam which has all possible end screen win scenarios.
  • Added GetPlayers(Predicate<Player> predicate).
  • Added SmodPlayer.BypassMode property to replace SmodPlayer.GetBypassMode()
  • Added method SmodItem.ToWeapon() which returns the accompanying SmodWeapon (or null if it's not a weapon)
  • Added property SmodItem.IsWeapon which allows you to get whether or not the item is a weapon.
  • Added 2 new overloads to SpawnItem
    • Allows you to spawn weapon with ammo and set it's attachments.
    • Allows you to spawn ammoboxes with ammo.

New weapon class

  • This is done by converting SmodItem to SmodWeapon
    • AmmoInClip
    • AmmoType
    • Sight
    • Barrel
    • Other
    • MaxClipSize
    • DamageType
    • ToItem() Converts SmodWeapon to SmodItem for events that return SmodWeapon.
  • Added new enums
    • WeaponSight All possible weapon sights.
    • WeaponBarrel All possible weapon barrels.
    • WeaponOther All possible weapon others.
    • WeaponType All weapons supported (COM15, Micro, E11, P90, MP4, Logicer and USP.)
    • WeaponSound All weapons that have sounds that be can be heard by a player. (Used in the ShootEvent and is equal in index to Weapon array in WeaponManager)

Changes

  • Changed SmodMap.GetSpawnPoints to use the main game's stupid spawn point names for 939 and 096 so they should work now
  • Moved CreatePortalEvent to CmdMakePortal to alleviate some issues.
  • PlayerShootEvent changed to return SmodWeapon and WeaponSound instead of DamageType and WeaponType (Other variables are still there)
  • PlayerReloadEvent now returns SmodWeapon instead of Itemtype.
  • PlayerGrenadeExplosion now has GrenadeType, Position and Allow and moved the event to right before the grenade explodes and sends that explosion info to clients.
  • PlayerPickupItemEvent changed to when item is still on ground and now setting Allow to false leaves it on the ground.
  • RoundEndEvent New variable called LeadingTeam which can be modified to set the end screen winner.
  • Fixed PlayerHandcuffedEvent event.
  • MP4 in ItemType renamed to MP7.
  • Round duration now returns 0 during waiting for players.

Removals and deprecations

  • Removed SmodConnection from DisconnectEvent & LateDisconnectEvent. These are API breaking changes (Neither had access to the information anyways)
  • Deprecated LateDisconnectEvent in favor of PlayerLeaveEvent
  • Deprecated SmodPlayer.GetBypassMode() in favor of SmodPlayer.BypassMode property (get & set).

ServerMod 3.5.0

02 Jul 21:04
39e4ffe
Compare
Choose a tag to compare

Target Game Version: 8.0.1 (Revision III)

Rerereleased to make it not ban and instead just disallow it.

Rereleased to add anticheat_waiting_for_players

Plugins using Server.GetPlayers using a playerid will have to be change to Server.GetPlayer.

Game

Added Configs

  • Added config float 096_trigger_range_always, defaults to 1.5. This is the range that a player will always contribute to SCP-096's rage, if they are in it. Setting it to 0 or lower will disable the range check (only the angle check will be performed).
  • Added 096_trigger_angle, defaults to 70. This is the angle that a player must be looking relative to SCP-096 to contribute to his rage.
  • Added config bool ci_respawn_music, defaults to true. Determines if the CI music should be played on a CI team respawn.
  • Added config float lift_move_duration, defaults to the base game value (which is 5 as of now). Raising or lowering this value will change the amount of time it takes between the doors closing and opening when using an elevator. Reducing this below 2 should either do nothing or do weird things, so don't bother.
  • Added config float noclip_radius_multiplier, defaults to 0.667. This defines what number to multiply the player radius by to get the sphere radius for the "Physics.Spherecast()"
  • Added config bool anticheat_waiting_for_players, defaults to true. If you use plugins that make players open doors during the waiting for players period, disable this. Alternatively, if it shits the bed also disable this.

Automatron (new antispeedhack system)

Added AUTOMATRON which watches over nasty players (currently has improved speedhack detection and "fellow hacker" ban system).

New config variables:

  • int automatron_sample_count, defaults to 5, amount of ticks gathered data stay.
  • int automatron_allowed_observed_ticks, defaults to 5, amount of ticks of speedhacking until ban. Most of the time should stay equal to automatron_sample_count.
  • float automatron_allowed_observed_speed_multiplier, defaults to 1.04f, how much speedhack do you want to allow
  • bool automatron_ban_observed_speed, default to true, boolean to check if AUTOMATRON should ban for speedhacking or not.
  • int automatron_bantime, defaults to 1440, ban time to use for other ban time variables which are to -1
  • int automatron_bantime_observed_speed, defaults to 5, amount of minutes to ban for speedhacking.
  • int automatron_bantime_nickname, defaults to 5, amount of minutes to ban for players using a cheat client's modified names used to identify fellow cheaters.

Fixes

  • Fixed SmartCP including people who stayed spectator or not in a valid role (Overwatch mode)
  • Fixed and cleaned up anti-noclip, using "Physics.Spherecast()" rather than "MoreCast.BeamCast()"
  • Fixed the ability of clients to rotate the head past normal limits. (This doesn't really matter, but in case something weird starts happening to heads, this is probably why and you should let us know)
  • Added new anticheat that prevents players from accessing doors or other things during the Waiting for Players period. This can be disabled with anticheat_waiting_for_players if you want to be able to do that or if it shits the bed.

API

  • Added a new possible filter for Server.GetPlayers function which takes a Team value and returns all players of this team.
  • Added Server.GetPlayer(), this takes an int of the playerid of the player you want to get. Previously this was handled by Server.GetPlayers(string) but it was rather unreliable since it would also check ips & player names there. In case no player is found, this will return null, so check for that.
  • Added Player.GetCurrentRoom() and Map.GetCurrentRoom(Vector3 position). These functions return the transform of the room the player or position is in. If no room is found, it will return null so check for this.

ServerMod 3.4.1

24 May 20:48
f76bea9
Compare
Choose a tag to compare

Target Game Version: 8.0.1 (Revision III)

Plugins using PlayerThrowGrenadeEvent will have to be rebuilt!

Game

Added configs

  • Added config float 096_trigger_range, defaults to 20. This determines how far away a player can be from 096 while still charging up his rage meter.
  • Added config float scp173_max_looking_distance, defaults to 250. This determines from how far away you can be considered to be looking at 173.
  • Added config int list always_spawn_079_after, defaults to an empty list. The game will check all entries in this list to see if there's currently that many SCPs spawned, and if so it will force the current SCP spawn to be 079. This is meant to be a replacement for always_spawn_079 as it serves the same purpose but is more versatile.
  • Added config bool always_spawn_after_exclude_079, defaults to false. Based on this, the current 079 count will be subtracted from the current SCP count when used for always_spawn_079_after checks. (For example, if you force 079 after 1 and 2 scps, without this setting off, you'll get a random scp, then 079 then another 079. With it enabled, you'll get a random SCP, then 079, then a random SCP (could be 079), then another 079 (if the previous wasn't a random 079)
  • Added config bool enable_broadcast_logging, defaults to true. Disabling this will prevent the [BROADCAST FROM SERVER] messages from being logged in the server console. Personal Broadcasts will still be logged. This changes nothing for the messages in client consoles.

Added damage multiplier float configs

  • scp106_damage_multiplier, defaults to 0.1. This multiplies the damage of a shot anywhere on SCP-106.
  • player_headshot_damage_multiplier, defaults to 4. This multiplies the amount of damage done by a headshot on a human player.
  • player_legshot_damage_multiplier, defaults to 0.5. This multiplies the amount of damage done by a leg shot on a human player.
    All these values are the default values used by the vanilla game.

Added CASSIE configs

  • Added a bunch of bool configs to give the option to not play C.A.S.S.I.E. announcements from the game. All of these default to true. They are the following:
    cassie_generator_announcements
    cassie_respawn_announcements
    cassie_scp_death_announcements
    cassie_scp_tesla_announcements
    cassie_scp_warhead_announcements
    cassie_scp_decont_announcements
    cassie_079_overcharge_announcements
    cassie_079_containment_announcements

General changes

  • Fixed scp173_blackout_light_check

API

Changed API Elements

  • Added two warhead properties to SmodMap:
    bool WarheadLeverEnabled { get; set; } - Returns true if the lever in the HCZ warhead room is enabled
    bool WarheadKeycardEntered { get; set; } - Returns true if the keycard has been entered in the surface nuke room to allow nuke detonation

New Events

Added ScpDeathAnnouncementEvent (EnvironmentEvent)

This is a rather simple event which has a ShouldPlay bool which determines if it'll play (uses the cassie_scp_death_announcements config), a Player object (which could be null, so check for it) and the player's class. The purpose is to turn off/on ShouldPlay and potentially play a different SCP's containment announcement or even a custom announcement.

Added Scp096PanicEvent (PlayerEvent)

Fired when SCP-096 goes into panic mode (this is the animation that plays when his rage mode is about to start)

Added Scp096Enrage (PlayerEvent)

Fired when SCP-096 goes into rage mode

Added Scp096CooldownStart (PlayerEvent)

Fired when SCP-096 begins his cooldown after rage mode

Added Scp096CooldownEnd (PlayerEvent)

Fired when SCP-096 ends his cooldown

Changed Events

  • Changed PlayerThrowGrenadeEvent to use GrenadeType rather than ItemType.

General changes

  • Changed GetConfigList function to trim by default. This should mean no further issues if players added spaces after a comma in lists.
  • Fixed Warhead API not working

ServerMod 3.4.0

04 Apr 21:10
bd9461e
Compare
Choose a tag to compare

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.1.2

Game

Added configs

  • Added config float 096_deduct_multiplier, defaults to 0.08. This is a multiplier used to detract from 096's rage value. Changing this will change how long 096 rages.
  • Added config float 096_looking_multiplier, defaults to Not Sure TBH. This is a multiplier used for increasing 096's rage value when someone looks at him. Changing this will change how long it takes until 096 rages.
  • Added config float 096_rage_cooldown, defaults to 20. This is the time after raging until 096 can start charging his rage again.
  • Added config float 096_watcherbased_rage_gain_multiplier, defaults to 1. This is exclusively for the watchermultiplied 096 rage type. This is an additional multiplier for how fast 096's rage value increases when players look at him. This is added because by default, this is significantly faster (default uses all players on server rather than of all players looking at 096)

General changes

  • Changed tag fail messages so it is more clear what the issue is and how to resolve them.
  • Fixed NullReferenceException in Scp079PlayerScript.CmdInteract
  • Properly set the "CustomNetworkManager#Modded" variable
  • Fixed command pm. Previously disabled plugins were impossible to re-enable because the command would search for enabled (should've been disabled) plugins to re-enable.

API

Changed Plugins

  • Changed the method of logging exceptions during plugin initialization/register from debug to error.
  • Moved Register() invocation to after the plugin has been registered to core managers (config, lang, pipe). Previously Register() was run the line right before OnEnable() was run.
  • Fixed config values not being populated in Plugin.Register() and Plugin.OnEnable(). Now config file read first on startup.

Changed Events

Added WarheadChangeLeverEvent (PlayerEvent)

Fires when the lever in the nuke silo is flipped. Can be denied using the bool Allow property.

Added WarheadKeycardAccessEvent (PlayerEvent)

Fires when a player attempts to lift the cover off of the nuke surface terminal using a CONT_LVL_3 keycard (there is a clientside check). Can be denied using the bool Allow property.

Changed PlayerHurtEvent

  • Changed the float Damage property - If is less than 1, the target will not receive blood on their screen.

Changed PlayerShootEvent

  • Added get/set bool ShouldSpawnHitmarker - Whether or not to spawn the hitmarker.
  • Added get-only bool ShouldSpawnBloodDecal - Whether or not to spawn the blood decal.
  • Added get-only Vector SourcePosition - The client-reported position that they shot from (use ev.Player.GetPosition() for accurate position).
  • Added get-only Vector TargetPosition - The client-reported position of the target or location that they shot (use ev.Target.GetPosition() for accurate target player position).
  • Added get-only string Hitbox - The client-reported hitbox that the player hit.
  • Added get/set Weapon? WeaponSound - Null will not play a sound or the shoot animation. If it is not null, a client must be in the game when the shooter holds set weapon in order to hear the different sound.
  • Added get/set Vector Direction - The direction that the player shot in. This affects the decal that is placed (e.g. bullet sparks or blood).

Changed Configs

  • Added attribute ConfigOption - configPrefix must be set in your plugin’s PluginDetails attribute to use them.
  • Added LiveConfig<T> to be used in conjunction with ConfigOption.
  • Cleaned/optimized Plugin.GetConfig…() methods.
  • Obsoleted constructors containing SettingsType. Use ConfigSetting.Default.GetType() to get the type of the setting instead.

Changed Translations (Langs)

  • Added attribute LangOption - langFile must be set in your plugin’s PluginDetails attribute to use them.
  • Added support for comments using #.
  • Changed the separator to a colon (:) instead of an equals sign with spaces on both sides (=).
  • Keys
    • Changed newly appended to be lower_snake_case.
    • Added whitespace trimming to both ends.
  • Values
    • Added support for the separator (:) to be in the value.

Added Pipes

  • Attributes
    • PipeField
    • PipeProperty
    • PipeMethod
    • PipeEvent
    • PipeLink
  • Other types
    • FieldPipe (and type specific generic FieldPipe<T>)
    • PropertyPipe (and type specific generic PropertyPipe<T>)
    • MethodPipe (and type specific generic MethodPipe<T>)
  • Properties/fields
    • PluginPipes Pipes in Plugin (instance property)
  • Methods
    • void InvokeEvent(string eventNames) and InvokeExternalEvent(string fullName) (both have overloads supporting passing parameters)

Added Permissions

For permission plugins:

  • Added PluginManager.PermissionsManager - Contains all permission handlers and handles negotiation between them.
  • Added IPermissionsHandler - Is implemented by permission plugins to handle HasPermission calls. Plugins implement a single abstract method which is called whenever other plugins check a permission on a player. This function should return a 1 if the player has the permission and a 0 if they do not. It also supports permission plugins with negative permissions (a.k.a. negating permissions allowed by other handlers such as permissions given by default). Your plugin should return -1 to completely prevent other handlers from allowing the permission check.
  • Added DefaultPermissionsHandler - This is an internal permissions handler in Smod, it returns 1 if a permission is given by default, 0 if it is not. Thus other permission handlers can override it if they return -1.
  • Added Plugin.RegisterPermissionsHandler(IPermissionsHandler) - Function used to register a new permissions handler.
  • Added Plugin.UnregisterPermissionsHandler(IPermissionsHandler) - Function used to unregister a permissions handler.

For normal plugins:

  • Added Player.HasPermission(string) - Returns true if the player has the permission, returns false if they do not. Use the following pattern for permission names: Ex: admintoolbox.heal.self. This is used both to guarantee compatibility with permission plugins and to make sure no plugins have conflicting permission names.
  • Added Plugin.AddDefaultPermission(string) - Gives this permission to all players by default.
  • Added Plugin.RemoveDefaultPermission(string) - Removes this permission from being given by default.

General changes

  • Obsoleted PluginManager’s methods: FindPlugins, FindEnabledPlugins, and FindDisabledPlugins. Use GetEnabledPlugins, GetDisabledPlugins, and GetMatchingPlugins instead.
  • Obsoleted Server.Verified and Server.Visible. These were already not working, however there was no indication they were obsoleted.
  • Added Server.GetAppFolder(...) (instance method)
  • Added GetComponent(), GetGameObject(), or GetClass() (TeamRole specific) to more API objects to make it easier to go deeper than the API.
  • Updated the example plugin.