@@ -33,24 +33,4 @@ public sealed class RingerSystem : SharedRingerSystem
|
|||||||
bui.Update();
|
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,16 +145,18 @@ public abstract class SharedRingerSystem : EntitySystem
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Attempts to unlock or lock the uplink by checking the provided ringtone against the uplink code.
|
/// 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 client side, it does nothing since the client cannot know the code in advance.
|
||||||
/// On the server side, the code is always verified.
|
/// On the server side, the code is verified.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uid">The entity with the RingerUplinkComponent.</param>
|
/// <param name="uid">The entity with the RingerUplinkComponent.</param>
|
||||||
/// <param name="ringtone">The ringtone to check against the uplink code.</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,
|
/// <param name="user">The entity attempting to toggle the uplink.</param>
|
||||||
/// the ringtone code check will be skipped on the client to allow prediction.</param>
|
|
||||||
/// <returns>True if the uplink state was toggled, false otherwise.</returns>
|
/// <returns>True if the uplink state was toggled, false otherwise.</returns>
|
||||||
[PublicAPI]
|
[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
|
#endregion
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user