diff --git a/src/c_cvars.cpp b/src/c_cvars.cpp index 17abd77b0..07821fbb5 100644 --- a/src/c_cvars.cpp +++ b/src/c_cvars.cpp @@ -232,7 +232,7 @@ DEFINE_ACTION_FUNCTION(_CVar, SetInt) // Only menus are allowed to change non-mod CVARs. if (DMenu::InMenu == 0) { - I_FatalError("Attempt to change CVAR '%s' outside of menu code", self->GetName()); + ThrowAbortException(X_OTHER, "Attempt to change CVAR '%s' outside of menu code", self->GetName()); } } PARAM_INT(val); @@ -250,7 +250,7 @@ DEFINE_ACTION_FUNCTION(_CVar, SetFloat) // Only menus are allowed to change non-mod CVARs. if (DMenu::InMenu == 0) { - I_FatalError("Attempt to change CVAR '%s' outside of menu code", self->GetName()); + ThrowAbortException(X_OTHER, "Attempt to change CVAR '%s' outside of menu code", self->GetName()); } } PARAM_FLOAT(val); @@ -269,7 +269,7 @@ DEFINE_ACTION_FUNCTION(_CVar, SetString) // Only menus are allowed to change non-mod CVARs. if (DMenu::InMenu == 0) { - I_FatalError("Attempt to change CVAR '%s' outside of menu code", self->GetName()); + ThrowAbortException(X_OTHER, "Attempt to change CVAR '%s' outside of menu code", self->GetName()); } } PARAM_STRING(val); @@ -1168,6 +1168,15 @@ void FBaseCVar::ResetToDefault () DEFINE_ACTION_FUNCTION(_CVar, ResetToDefault) { PARAM_SELF_STRUCT_PROLOGUE(FBaseCVar); + if (!(self->GetFlags() & CVAR_MOD)) + { + // Only menus are allowed to change non-mod CVARs. + if (DMenu::InMenu == 0) + { + ThrowAbortException(X_OTHER, "Attempt to change CVAR '%s' outside of menu code", self->GetName()); + } + } + self->ResetToDefault(); return 0; }