Reset medical spectator state on heal

- Factor spectator cleanup into a reusable handler
- Delay the healed server event until spectator init finishes
- Restore camera, HUD, and user input when leaving medical spectator
This commit is contained in:
Jacob Schmidt 2026-05-02 23:55:09 -05:00
parent 53a2bb4280
commit d2811a3c43

View File

@ -25,6 +25,24 @@ player addEventHandler ["Respawn", {
if (isNil QGVAR(ActorRepository)) then { call FUNC(initRepository); };
GVAR(resetMedicalSpectator) = {
player switchMove "";
player playMoveNow "";
["Terminate"] call BFUNC(EGSpectator);
private _spectatorDisplay = findDisplay 60492;
if !(isNull _spectatorDisplay) then { _spectatorDisplay closeDisplay 1; };
if !(isNull player) then {
player switchCamera "INTERNAL";
player enableSimulation true;
};
cameraEffectEnableHUD true;
showCinemaBorder false;
disableUserInput false;
};
[QGVAR(initActor), {
GVAR(ActorRepository) call ["init", []];
}] call CFUNC(addEventHandler);
@ -40,14 +58,15 @@ if (isNil QGVAR(ActorRepository)) then { call FUNC(initRepository); };
player setDir _medSpawnDir;
player switchMove "Acts_LyingWounded_loop";
["Initialize", [player, [], false, true, true, true, true, true, false, false]] call BFUNC(EGSpectator);
[SRPC(economy,onHealed), [player]] call CFUNC(serverEvent);
[] spawn {
["Initialize", [player, [], false, true, true, true, true, true, false, false]] call BFUNC(EGSpectator);
uiSleep 5;
[SRPC(economy,onHealed), [player]] call CFUNC(serverEvent);
};
}] call CFUNC(addEventHandler);
[QGVAR(onActorHealed), {
player switchMove "";
["Terminate"] call BFUNC(EGSpectator);
call GVAR(resetMedicalSpectator);
}] call CFUNC(addEventHandler);
[QGVAR(responseInitActor), {