Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't Require Running in Release to Test Mood #1257

Merged
merged 2 commits into from
Nov 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 23 additions & 37 deletions Content.Server/Mood/MoodSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,6 @@ public sealed class MoodSystem : EntitySystem
[Dependency] private readonly PopupSystem _popup = default!;
[Dependency] private readonly IConfigurationManager _config = default!;

#if RELEASE
// Disable Mood for tests, because of a stupid race condition where if it spawns an Urist McHarpy,
// the Harpy will choke during the test, creating a mood alert.
// And then cause a debug assert.
private bool _debugMode;
#else
private bool _debugMode = true;
#endif


public override void Initialize()
{
Expand All @@ -55,14 +46,12 @@ public override void Initialize()
SubscribeLocalEvent<MoodComponent, MoodRemoveEffectEvent>(OnRemoveEffect);
}

private void OnShutdown(EntityUid uid, MoodComponent component, ComponentShutdown args)
{
private void OnShutdown(EntityUid uid, MoodComponent component, ComponentShutdown args) =>
_alerts.ClearAlertCategory(uid, component.MoodCategory);
}

private void OnRemoveEffect(EntityUid uid, MoodComponent component, MoodRemoveEffectEvent args)
{
if (_debugMode)
if (!_config.GetCVar(CCVars.MoodEnabled))
return;

if (component.UncategorisedEffects.TryGetValue(args.EffectId, out _))
Expand All @@ -78,7 +67,7 @@ private void OnRemoveEffect(EntityUid uid, MoodComponent component, MoodRemoveEf

private void OnRefreshMoveSpeed(EntityUid uid, MoodComponent component, RefreshMovementSpeedModifiersEvent args)
{
if (_debugMode
if (!_config.GetCVar(CCVars.MoodEnabled)
|| component.CurrentMoodThreshold is > MoodThreshold.Meh and < MoodThreshold.Good or MoodThreshold.Dead
|| _jetpack.IsUserFlying(uid))
return;
Expand All @@ -101,7 +90,7 @@ private void OnRefreshMoveSpeed(EntityUid uid, MoodComponent component, RefreshM

private void OnMoodEffect(EntityUid uid, MoodComponent component, MoodEffectEvent args)
{
if (_debugMode
if (!_config.GetCVar(CCVars.MoodEnabled)
|| !_config.GetCVar(CCVars.MoodEnabled)
|| !_prototypeManager.TryIndex<MoodEffectPrototype>(args.EffectId, out var prototype) )
return;
Expand Down Expand Up @@ -210,7 +199,7 @@ private void ReplaceMood(EntityUid uid, string prototypeId)

private void OnMobStateChanged(EntityUid uid, MoodComponent component, MobStateChangedEvent args)
{
if (_debugMode)
if (!_config.GetCVar(CCVars.MoodEnabled))
return;

if (args.NewMobState == MobState.Dead && args.OldMobState != MobState.Dead)
Expand Down Expand Up @@ -249,7 +238,7 @@ private void RefreshMood(EntityUid uid, MoodComponent component)

private void OnInit(EntityUid uid, MoodComponent component, ComponentStartup args)
{
if (_debugMode)
if (!_config.GetCVar(CCVars.MoodEnabled))
return;

if (_config.GetCVar(CCVars.MoodModifiesThresholds)
Expand All @@ -274,15 +263,14 @@ private void SetMood(EntityUid uid, float amount, MoodComponent? component = nul

if (ev.Cancelled)
return;
else
{
uid = ev.Receiver;
amount = ev.MoodChangedAmount;
}

uid = ev.Receiver;
amount = ev.MoodChangedAmount;

var newMoodLevel = amount + neutral;
if (!force)
newMoodLevel = Math.Clamp(amount + neutral,
newMoodLevel = Math.Clamp(
amount + neutral,
component.MoodThresholds[MoodThreshold.Dead],
component.MoodThresholds[MoodThreshold.Perfect]);

Expand Down Expand Up @@ -355,7 +343,7 @@ private void SetCritThreshold(EntityUid uid, MoodComponent component, int modifi
{
1 => FixedPoint2.New(key.Value.Float() * component.IncreaseCritThreshold),
-1 => FixedPoint2.New(key.Value.Float() * component.DecreaseCritThreshold),
_ => component.CritThresholdBeforeModify
_ => component.CritThresholdBeforeModify,
};

component.CritThresholdBeforeModify = key.Value;
Expand All @@ -378,15 +366,13 @@ private MoodThreshold GetMoodThreshold(MoodComponent component, float? moodLevel
return result;
}

private int GetMovementThreshold(MoodThreshold threshold)
{
return threshold switch
private int GetMovementThreshold(MoodThreshold threshold) =>
threshold switch
{
>= MoodThreshold.Good => 1,
<= MoodThreshold.Meh => -1,
_ => 0
_ => 0,
};
}

private void OnDamageChange(EntityUid uid, MoodComponent component, DamageChangedEvent args)
{
Expand All @@ -408,8 +394,7 @@ private void OnDamageChange(EntityUid uid, MoodComponent component, DamageChange
}
}

[UsedImplicitly]
[DataDefinition]
[UsedImplicitly, DataDefinition]
public sealed partial class ShowMoodEffects : IAlertClick
{
public void AlertClicked(EntityUid uid)
Expand All @@ -421,8 +406,7 @@ public void AlertClicked(EntityUid uid)

if (!entityManager.TryGetComponent<MoodComponent>(uid, out var comp)
|| comp.CurrentMoodThreshold == MoodThreshold.Dead
|| !playerManager.TryGetSessionByEntity(uid, out var session)
|| session == null)
|| !playerManager.TryGetSessionByEntity(uid, out var session))
return;

var msgStart = Loc.GetString("mood-show-effects-start");
Expand Down Expand Up @@ -450,15 +434,17 @@ public void AlertClicked(EntityUid uid)

private void SendDescToChat(MoodEffectPrototype proto, ICommonSession session)
{
if (session == null)
return;

var chatManager = IoCManager.Resolve<IChatManager>();

var color = (proto.MoodChange > 0) ? "#008000" : "#BA0000";
var msg = $"[font size=10][color={color}]{proto.Description}[/color][/font]";

chatManager.ChatMessageToOne(ChatChannel.Emotes, msg, msg, EntityUid.Invalid, false,
chatManager.ChatMessageToOne(
ChatChannel.Emotes,
msg,
msg,
EntityUid.Invalid,
false,
session.Channel);
}
}
8 changes: 6 additions & 2 deletions Content.Shared/CCVar/CCVars.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2567,7 +2567,11 @@ public static readonly CVarDef<float>
#region Mood System

public static readonly CVarDef<bool> MoodEnabled =
#if RELEASE
CVarDef.Create("mood.enabled", true, CVar.SERVER);
#else
CVarDef.Create("mood.enabled", false, CVar.SERVER);
#endif
Comment on lines +2570 to +2574
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And now Mood doesn't work in Release configuration.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

whar

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In all instances of (!_config.GetCVar(CCVars.MoodEnabled)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why?


public static readonly CVarDef<bool> MoodIncreasesSpeed =
CVarDef.Create("mood.increases_speed", true, CVar.SERVER);
Expand Down Expand Up @@ -2656,12 +2660,12 @@ public static readonly CVarDef<float>
CVarDef.Create("vote.autovote_enabled", false, CVar.SERVERONLY);

/// Automatically starts a map vote when returning to the lobby.
/// Requires auto voting to be enabled.
/// Requires auto voting to be enabled.
public static readonly CVarDef<bool> MapAutoVoteEnabled =
CVarDef.Create("vote.map_autovote_enabled", true, CVar.SERVERONLY);

/// Automatically starts a gamemode vote when returning to the lobby.
/// Requires auto voting to be enabled.
/// Requires auto voting to be enabled.
public static readonly CVarDef<bool> PresetAutoVoteEnabled =
CVarDef.Create("vote.preset_autovote_enabled", true, CVar.SERVERONLY);
}
Expand Down
Loading