bui.Update();
}
}
-
- /// <inheritdoc/>
- public override bool TryToggleUplink(EntityUid uid, Note[] ringtone, EntityUid? user = null)
- {
- if (!TryComp<RingerUplinkComponent>(uid, out var uplink))
- return false;
-
- if (!HasComp<StoreComponent>(uid))
- return false;
-
- // Special case for client-side prediction:
- // Since we can't expose the uplink code to clients for security reasons,
- // we assume if an antagonist is trying to set a ringtone, it's to unlock the uplink.
- // The server will properly verify the code and correct if needed.
- if (IsAntagonist(user))
- return ToggleUplinkInternal((uid, uplink));
-
- // Non-antagonists never get to toggle the uplink on the client
- return false;
- }
}
/// <summary>
/// Attempts to unlock or lock the uplink by checking the provided ringtone against the uplink code.
- /// On the client side, for antagonists, the code check is skipped to support prediction.
- /// On the server side, the code is always verified.
+ /// On the client side, it does nothing since the client cannot know the code in advance.
+ /// On the server side, the code is verified.
/// </summary>
/// <param name="uid">The entity with the RingerUplinkComponent.</param>
/// <param name="ringtone">The ringtone to check against the uplink code.</param>
- /// <param name="user">The entity attempting to toggle the uplink. If the user is an antagonist,
- /// the ringtone code check will be skipped on the client to allow prediction.</param>
+ /// <param name="user">The entity attempting to toggle the uplink.</param>
/// <returns>True if the uplink state was toggled, false otherwise.</returns>
[PublicAPI]
- public abstract bool TryToggleUplink(EntityUid uid, Note[] ringtone, EntityUid? user = null);
+ public virtual bool TryToggleUplink(EntityUid uid, Note[] ringtone, EntityUid? user = null)
+ {
+ return false;
+ }
#endregion