From: bones_was_here Date: Fri, 9 May 2025 09:33:15 +0000 (+1000) Subject: spec: minor internal API refactor X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=662cc36816d6e8bf60f506b05d7c4d236b2b1528;p=xonotic%2Fxonotic-data.pk3dir.git spec: minor internal API refactor Moves the TRANSMUTE into the Spectate* funcs such that if they succeed IS_OBSERVER is false and IS_SPEC is true. --- diff --git a/qcsrc/common/mutators/mutator/superspec/sv_superspec.qc b/qcsrc/common/mutators/mutator/superspec/sv_superspec.qc index fe57eaa44c..184b4e7496 100644 --- a/qcsrc/common/mutators/mutator/superspec/sv_superspec.qc +++ b/qcsrc/common/mutators/mutator/superspec/sv_superspec.qc @@ -27,9 +27,7 @@ const int SSF_ITEMMSG = BIT(2); bool superspec_Spectate(entity this, entity targ) { - if(Spectate(this, targ) == 1) - TRANSMUTE(Spectator, this); - + Spectate(this, targ); return true; } diff --git a/qcsrc/server/client.qc b/qcsrc/server/client.qc index 8e2408736f..de16a38e23 100644 --- a/qcsrc/server/client.qc +++ b/qcsrc/server/client.qc @@ -1858,6 +1858,8 @@ bool SpectateUpdate(entity this) } SpectateCopy(this, this.enemy); + if (IS_OBSERVER(this)) + TRANSMUTE(Spectator, this); return true; } @@ -2496,7 +2498,7 @@ void ObserverOrSpectatorThink(entity this) if (autocvar_sv_spectate == 2 && !warmup_stage && !this.vote_master) Send_Notification(NOTIF_ONE_ONLY, this, MSG_CENTER, CENTER_SPECTATE_SPEC_NOTALLOWED); else if(SpectateNext(this)) - TRANSMUTE(Spectator, this); + { } else if (is_spec) { TRANSMUTE(Observer, this); @@ -2513,9 +2515,7 @@ void ObserverOrSpectatorThink(entity this) if(CS(this).impulse == 12 || CS(this).impulse == 16 || CS(this).impulse == 19 || (CS(this).impulse >= 220 && CS(this).impulse <= 229)) { this.flags &= ~FL_JUMPRELEASED; - if(SpectatePrev(this)) - TRANSMUTE(Spectator, this); - else + if (!SpectatePrev(this)) { TRANSMUTE(Observer, this); PutClientInServer(this); diff --git a/qcsrc/server/command/cmd.qc b/qcsrc/server/command/cmd.qc index d2f8c40557..7d8d5b63c8 100644 --- a/qcsrc/server/command/cmd.qc +++ b/qcsrc/server/command/cmd.qc @@ -770,10 +770,7 @@ void ClientCommand_spectate(entity caller, int request) if (IS_PLAYER(client) && VerifyClientEntity(client, false, false) && Spectate(caller, client)) // mutator hook might say no - { - if (IS_OBSERVER(caller)) - TRANSMUTE(Spectator, caller); - } + { } else sprint(caller, "Can't spectate ", argv(1), "^7\n"); }