mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-27 06:07:09 +01:00
Server: lock ollies for a player
A lock tool like noclip and boosts. The player's game enforces it: the roster carries guest_ollies (protocol 53), and the jump hook gives a locked ollie no upward speed. Plugins get player.permissions.ollies. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c02b4001a7
commit
67e8e439f7
18 files changed
+53
-33
No files matched your search
@@ -814,10 +814,10 @@ void Host::send_roster() {
|
||||
// locked tools is told those are off for them. Everyone else gets the same roster; players
|
||||
// whose roster differs in the same way share one.
|
||||
struct Variant {
|
||||
bool noclip{}, no_bail{}, boosts{}, enforce_tuning{}, announcement{};
|
||||
bool noclip{}, no_bail{}, boosts{}, ollies{}, enforce_tuning{}, announcement{};
|
||||
auto operator<=>(const Variant &) const = default;
|
||||
};
|
||||
const Variant common{config_.noclip, config_.no_bail, config_.boosts, config_.enforce_tuning, !announcement_for_};
|
||||
const Variant common{config_.noclip, config_.no_bail, config_.boosts, true, config_.enforce_tuning, !announcement_for_};
|
||||
std::map<Variant, std::set<std::uint64_t>> variants;
|
||||
std::set<std::uint64_t> others;
|
||||
for (const auto &[id, guest] : guests_) {
|
||||
@@ -831,6 +831,7 @@ void Host::send_roster() {
|
||||
variant.noclip = !(locks & lock_noclip) && (config_.noclip || movement);
|
||||
variant.no_bail = !(locks & lock_nobail) && (config_.no_bail || movement);
|
||||
variant.boosts = !(locks & lock_boosts) && (config_.boosts || movement);
|
||||
variant.ollies = !(locks & lock_ollies); // no setting turns ollies off: only a lock
|
||||
}
|
||||
variant.enforce_tuning = config_.enforce_tuning || (locks & lock_tuning);
|
||||
}
|
||||
@@ -845,6 +846,7 @@ void Host::send_roster() {
|
||||
p.guest_noclip = variant.noclip;
|
||||
p.guest_no_bail = variant.no_bail;
|
||||
p.guest_boosts = variant.boosts;
|
||||
p.guest_ollies = variant.ollies;
|
||||
p.enforce_tuning = variant.enforce_tuning;
|
||||
p.announcement = variant.announcement ? shown : multiplayer::ServerAnnouncement{};
|
||||
broadcast(p, true, false, 0, &players);
|
||||
|
||||
Reference in new issue
Block a user