Skip to content

Commit

Permalink
Фигсы барков (#864)
Browse files Browse the repository at this point in the history
## Описание PR
<!-- Что вы изменили в этом пулл реквесте? -->
Багфиксы барков

## Почему / Баланс
<!-- Почему оно было изменено? Ссылайтесь на любые обсуждения или
вопросы здесь. Пожалуйста, обсудите, как это повлияет на игровой баланс.
-->
ПОТОМУШТА
**Ссылка на публикацию в Discord**
<!-- Укажите ссылки на соответствующие обсуждения, проблемы, баги,
заказы в разработку или предложения
- [Технические проблемы](ссылка)
- [Баги](ссылка)
- [Заказы-разработка](ссылка)
- [Предложения](ссылка)
- [Перенос контента](ссылка)-->

## Техническая информация
<!-- Если речь идет об изменении кода, кратко изложите на высоком уровне
принцип работы нового кода. Это облегчает рецензирование.- -->

## Медиа
<!--
Пулл реквесты, которые вносят внутриигровые изменения (добавление
одежды, предметов, новых возможностей и т.д.), должны содержать медиа,
демонстрирующие изменения.
Небольшие исправления/рефакторы не требуют медиа.

Если Вы не уверены в том, что Ваш пулл реквест требует медиа, спросите
мейнтейнера.
-->

## Требования
<!--
В связи с наплывом ПР'ов нам необходимо убедиться, что ПР'ы следуют
правильным рекомендациям.

Пожалуйста, уделите время прочтению, если делаете пулл реквест (ПР)
впервые.

Отметьте поля ниже, чтобы подтвердить, что Вы действительно видели их
(поставьте X в скобках, например [X]):
-->
- [ ] Я прочитал(а) и следую [Руководство по созданию пулл
реквестов](https://docs.spacestation14.com/en/general-development/codebase-info/pull-request-guidelines.html).
Я понимаю, что в противном случае мой ПР может быть закрыт по усмотрению
мейнтейнера.
- [ ] Я добавил скриншоты/видео к этому пулл реквесту, демонстрирующие
его изменения в игре, **или** этот пулл реквест не требует демонстрации
в игре

## Критические изменения
<!--
Перечислите все критические изменения, включая изменения пространства
имён, публичных классов/методов/полей, переименования прототипов, и
предоставьте инструкции по их исправлению.
-->

**Чейнджлог**
<!--
Здесь Вы можете заполнить журнал изменений, который будет автоматически
добавлен в игру при мердже Вашего пулл реквест.

Чтобы игроки узнали о новых возможностях и изменениях, которые могут
повлиять на их игру, добавьте запись в журнал изменений.

Не считайте суффикс типа записи (например, add) "частью" предложения:
плохо: - add: новый инструмент для инженеров
хорошо: - add: добавлен новый инструмент для инженеров

Помещение имени после символа 🆑 изменит имя, которое будет
отображаться в журнале изменений (в противном случае будет
использоваться ваше имя пользователя GitHub).
Например: 🆑 AruMoon
-->
<!--
Чтобы шаблон Чейнджлога отображался, уберите его из блока комментариев. 
Чейнджлог должен содержать cl символ, 
чтобы бот распознал изменения и добавил их в журнал изменений игры. 
Используйте ключевые слова add, remove, tweak и fix.
-->

🆑 Котя
- fix: Были исправлены многие баги в барках
  • Loading branch information
FaDeOkno authored Dec 7, 2024
1 parent f2b6a55 commit 9c3fd19
Show file tree
Hide file tree
Showing 23 changed files with 173 additions and 137 deletions.
16 changes: 10 additions & 6 deletions Content.Client/ADT/Bark/Systems/HumanoidProfileEditor.Barks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public sealed partial class HumanoidProfileEditor
{
private List<BarkPrototype> _barkList = new();

private void InitializeBarks()
private void InitializeBarks() // У меня случился небольшой затуп. Оно барки в обход кнопки сохраняет, но хотя бы работает ы
{
_barkList = _prototypeManager
.EnumeratePrototypes<BarkPrototype>()
Expand All @@ -20,6 +20,7 @@ private void InitializeBarks()
{
BarkProtoButton.SelectId(args.Id);
SetBarkProto(_barkList[args.Id].ID);
UpdateSaveButton();
};

PitchEdit.OnTextChanged += args =>
Expand All @@ -28,6 +29,7 @@ private void InitializeBarks()
return;

SetBarkPitch(newPitch);
UpdateSaveButton();
};

DelayVariationMinEdit.OnTextChanged += args =>
Expand All @@ -36,6 +38,7 @@ private void InitializeBarks()
return;

SetBarkMinVariation(newVar);
UpdateSaveButton();
};

DelayVariationMaxEdit.OnTextChanged += args =>
Expand All @@ -44,6 +47,7 @@ private void InitializeBarks()
return;

SetBarkMaxVariation(newVar);
UpdateSaveButton();
};

BarkPlayButton.OnPressed += _ => PlayPreviewBark();
Expand All @@ -56,9 +60,9 @@ private void UpdateBarkVoicesControls()

BarkProtoButton.Clear();

PitchEdit.Text = Profile.BarkPitch.ToString();
DelayVariationMinEdit.Text = Profile.BarkLowVar.ToString();
DelayVariationMaxEdit.Text = Profile.BarkHighVar.ToString();
PitchEdit.Text = Profile.Bark.Pitch.ToString();
DelayVariationMinEdit.Text = Profile.Bark.MinVar.ToString();
DelayVariationMaxEdit.Text = Profile.Bark.MaxVar.ToString();

var firstVoiceChoiceId = 1;
for (var i = 0; i < _barkList.Count; i++)
Expand All @@ -72,7 +76,7 @@ private void UpdateBarkVoicesControls()
firstVoiceChoiceId = i;
}

var voiceChoiceId = _barkList.FindIndex(x => x.ID == Profile.BarkProto);
var voiceChoiceId = _barkList.FindIndex(x => x.ID == Profile.Bark.Proto);
if (!BarkProtoButton.TrySelectId(voiceChoiceId) &&
BarkProtoButton.TrySelectId(firstVoiceChoiceId))
{
Expand All @@ -85,6 +89,6 @@ private void PlayPreviewBark()
if (Profile is null)
return;

_entManager.System<SpeechBarksSystem>().PlayDataPrewiew(Profile.BarkProto, Profile.BarkPitch, Profile.BarkLowVar, Profile.BarkHighVar);
_entManager.System<SpeechBarksSystem>().PlayDataPrewiew(Profile.Bark.Proto, Profile.Bark.Pitch, Profile.Bark.MinVar, Profile.Bark.MaxVar);
}
}
4 changes: 2 additions & 2 deletions Content.Client/Lobby/UI/HumanoidProfileEditor.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
<Control HorizontalExpand="True"/>
<OptionButton Name="SpawnPriorityButton" HorizontalAlignment="Right" />
</BoxContainer>
<!-- ADT-Barks-Start -->
<!-- ADT Barks Start -->
<BoxContainer HorizontalExpand="True" Visible="False" Name="BarksContainer">
<Label Text="{Loc 'humanoid-profile-editor-bark-label'}" />
<Control HorizontalExpand="True"/>
Expand All @@ -109,7 +109,7 @@
<LineEdit Name="DelayVariationMinEdit" MinSize="40 0" HorizontalAlignment="Right" Margin="2 0 2 0" />
<LineEdit Name="DelayVariationMaxEdit" MinSize="40 0" HorizontalAlignment="Right" Margin="2 0 2 0" />
</BoxContainer>
<!-- ADT-Barks-End -->
<!-- ADT Barks End -->

<!-- Corvax-TTS-Start -->
<BoxContainer HorizontalExpand="True" Visible="False" Name="TTSContainer">
Expand Down
7 changes: 4 additions & 3 deletions Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1237,7 +1237,7 @@ private void SetVoice(string newVoice)
IsDirty = true;
}
// Corvax-TTS-End

// ADT Barks start
private void SetBarkProto(string prototype)
{
Profile = Profile?.WithBarkProto(prototype);
Expand All @@ -1254,17 +1254,18 @@ private void SetBarkPitch(float pitch)

private void SetBarkMinVariation(float variation)
{
Profile = Profile?.WithBarkMinVariation(Math.Clamp(variation, _cfgManager.GetCVar(ADTCCVars.BarksMinDelay), Profile.BarkHighVar));
Profile = Profile?.WithBarkMinVariation(Math.Clamp(variation, _cfgManager.GetCVar(ADTCCVars.BarksMinDelay), Profile.Bark.MaxVar));
ReloadPreview();
SetDirty();
}

private void SetBarkMaxVariation(float variation)
{
Profile = Profile?.WithBarkMaxVariation(Math.Clamp(variation, Profile.BarkLowVar, _cfgManager.GetCVar(ADTCCVars.BarksMaxDelay)));
Profile = Profile?.WithBarkMaxVariation(Math.Clamp(variation, Profile.Bark.MinVar, _cfgManager.GetCVar(ADTCCVars.BarksMaxDelay)));
ReloadPreview();
SetDirty();
}
// ADT Barks end

private void SetSpecies(string newSpecies)
{
Expand Down
18 changes: 8 additions & 10 deletions Content.Server/ADT/Bark/Systems/SpeechBarksSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,19 +39,17 @@ public override void Initialize()
}
private void OnMapInit(EntityUid uid, SpeechBarksComponent comp, MapInitEvent args)
{
if (comp.BarkPrototype != null && comp.BarkPrototype != String.Empty)
{
var proto = _proto.Index(comp.BarkPrototype.Value);
comp.Sound = proto.Sound;
}
if (comp.Data.Sound != String.Empty)
return;
comp.Data.Sound = _proto.Index(comp.Data.Proto).Sound;
}

private void OnEntitySpoke(EntityUid uid, SpeechBarksComponent component, EntitySpokeEvent args)
{
if (!_isEnabled)
return;

var ev = new TransformSpeakerBarkEvent(uid, component.Sound, component.BarkPitch);
var ev = new TransformSpeakerBarkEvent(uid, component.Data.Copy());
RaiseLocalEvent(uid, ev);

var message = args.ObfuscatedMessage ?? args.Message;
Expand All @@ -64,10 +62,10 @@ private void OnEntitySpoke(EntityUid uid, SpeechBarksComponent component, Entity
RaiseNetworkEvent(new PlaySpeechBarksEvent(
GetNetEntity(uid),
message,
ev.Sound,
ev.Pitch,
component.BarkLowVar,
component.BarkHighVar,
ev.Data.Sound,
ev.Data.Pitch,
ev.Data.MinVar,
ev.Data.MaxVar,
args.Whisper), mind.Session);
}
}
Expand Down
5 changes: 2 additions & 3 deletions Content.Server/ADT/Bark/Systems/VoiceMaskSystem.Barks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,11 @@ private void InitializeBarks()

private void OnSpeakerVoiceTransform(EntityUid uid, VoiceMaskComponent component, ref InventoryRelayedEvent<TransformSpeakerBarkEvent> args)
{
args.Args.Pitch = Math.Clamp(component.BarkPitch, _cfg.GetCVar(ADTCCVars.BarksMinPitch), _cfg.GetCVar(ADTCCVars.BarksMaxPitch));

if (!_proto.TryIndex<BarkPrototype>(component.BarkId, out var proto))
return;

args.Args.Sound = proto.Sound;
args.Args.Data.Pitch = Math.Clamp(component.BarkPitch, _cfg.GetCVar(ADTCCVars.BarksMinPitch), _cfg.GetCVar(ADTCCVars.BarksMaxPitch));
args.Args.Data.Sound = proto.Sound;
}

private void OnChangeBark(EntityUid uid, VoiceMaskComponent component, VoiceMaskChangeBarkMessage message)
Expand Down
3 changes: 1 addition & 2 deletions Content.Server/ADT/Bark/Systems/VoiceOverrideSystem.Barks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ private void OnTransformSpeakerBark(Entity<VoiceOverrideComponent> entity, ref T
if (!entity.Comp.Enabled)
return;

args.Sound = entity.Comp.BarkSound ?? args.Sound;
args.Pitch = entity.Comp.BarkPitch ?? args.Pitch;
args.Data = entity.Comp.Bark ?? args.Data;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -184,14 +184,15 @@ private void OnAbsorbDoAfter(EntityUid uid, ChangelingComponent component, Absor
{
_store.TryAddCurrency(new Dictionary<string, FixedPoint2> { { "EvolutionPoints", component.AbsorbedChangelingPointsAmount } }, uid, store);
_store.UpdateUserInterface(uid, uid, store);
component.ChangelingsAbsorbed++;
}
}
else // Если это не был генокрад, получаем возможность "сброса"
{
var selfMessage = Loc.GetString("changeling-dna-success", ("target", Identity.Entity(target, EntityManager)));
_popup.PopupEntity(selfMessage, uid, uid, PopupType.Medium);
component.CanRefresh = true;
component.AbsorbedDnaModifier += 1;
component.AbsorbedDnaModifier++;
}
}

Expand Down
17 changes: 4 additions & 13 deletions Content.Server/ADT/Changeling/Systems/ChangelingSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
using Content.Shared.Changeling.Components;
using Content.Shared.Popups;
using Content.Shared.Store;
using Content.Server.Traitor.Uplink;
using Content.Shared.Mobs.Systems;
using Content.Shared.FixedPoint;
using Content.Shared.Humanoid;
Expand All @@ -29,7 +28,6 @@
using Robust.Shared.Player;
using System.Linq;
using Content.Shared.Preferences;
using Content.Server.Humanoid;
using Robust.Shared.Utility;
using Content.Shared.Humanoid.Markings;
using Content.Shared.Store.Components;
Expand All @@ -43,13 +41,12 @@
using Content.Server.Cuffs;
using Robust.Shared.Timing;
using Content.Server.ADT.Hallucinations;
using Content.Shared.Gibbing.Systems;
using Content.Shared.Mobs;
using Content.Server.Stealth;
using Content.Server.ADT.Store;
using Robust.Server.Containers;
using Content.Server.Ghost;
using Content.Shared.ADT.Stealth.Components;
using Content.Shared.Sirena.CollectiveMind;

namespace Content.Server.Changeling.EntitySystems;

Expand All @@ -59,25 +56,20 @@ public sealed partial class ChangelingSystem : EntitySystem
[Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly StoreSystem _store = default!;
[Dependency] private readonly ActionsSystem _action = default!;
[Dependency] private readonly UplinkSystem _uplink = default!;
[Dependency] private readonly MobStateSystem _mobState = default!;
[Dependency] private readonly PolymorphSystem _polymorph = default!;
[Dependency] private readonly MetaDataSystem _metaData = default!;
[Dependency] private readonly ISerializationManager _serialization = default!;
[Dependency] private readonly ActionContainerSystem _actionContainer = default!;
[Dependency] private readonly AlertsSystem _alerts = default!;
[Dependency] private readonly TagSystem _tagSystem = default!;
[Dependency] private readonly StatusEffectsSystem _status = default!;
[Dependency] private readonly EntityManager _entityManager = default!;
[Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifierSystem = default!;
[Dependency] private readonly StaminaSystem _stamina = default!;
[Dependency] private readonly DamageableSystem _damageableSystem = default!;
[Dependency] private readonly EntityLookupSystem _lookup = default!;
[Dependency] private readonly SharedMindSystem _mindSystem = default!;
[Dependency] private readonly AlertsSystem _alertsSystem = default!;
[Dependency] private readonly StunSystem _stun = default!;
[Dependency] private readonly FlashSystem _flashSystem = default!;
[Dependency] private readonly HumanoidAppearanceSystem _humanoid = default!;
[Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly HandsSystem _handsSystem = default!;
[Dependency] private readonly InventorySystem _inventorySystem = default!;
Expand Down Expand Up @@ -140,9 +132,6 @@ public override void Update(float frameTime)

private void OnStartup(EntityUid uid, ChangelingComponent component, ComponentStartup args)
{
//RemComp<ActivatableUIComponent>(uid); // TODO: Исправить проблему с волосами слаймов
//RemComp<UserInterfaceComponent>(uid);
//RemComp<SlimeHairComponent>(uid);
StealDNA(uid, component);

RemComp<HungerComponent>(uid);
Expand All @@ -156,6 +145,7 @@ private void OnStartup(EntityUid uid, ChangelingComponent component, ComponentSt

private void OnMapInit(EntityUid uid, ChangelingComponent component, MapInitEvent args)
{
EnsureComp<CollectiveMindComponent>(uid);
if (component.GainedActions)
return;
_action.AddAction(uid, ref component.ChangelingEvolutionMenuActionEntity, component.ChangelingEvolutionMenuAction);
Expand Down Expand Up @@ -282,7 +272,7 @@ private void OnRefresh(EntityUid uid, ChangelingComponent component, ChangelingR

component.BoughtActions.Clear();

_store.TrySetCurrency(new Dictionary<ProtoId<CurrencyPrototype>, FixedPoint2> { { "EvolutionPoints", 10 } }, uid);
_store.TrySetCurrency(new Dictionary<ProtoId<CurrencyPrototype>, FixedPoint2> { { "EvolutionPoints", 10 + (5 * component.ChangelingsAbsorbed) } }, uid);
_store.TryRefreshStoreStock(uid);
component.CanRefresh = false;

Expand Down Expand Up @@ -341,6 +331,7 @@ public void CopyLing(EntityUid from, EntityUid to, ChangelingComponent? comp = n

newLingComponent.AbsorbedDnaModifier = comp.AbsorbedDnaModifier;
newLingComponent.DNAStolen = comp.DNAStolen;
newLingComponent.ChangelingsAbsorbed = comp.ChangelingsAbsorbed;
newLingComponent.LastResortUsed = comp.LastResortUsed;
newLingComponent.CanRefresh = comp.CanRefresh;

Expand Down
14 changes: 6 additions & 8 deletions Content.Server/ADT/TapeRecorder/TapeRecorderSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,7 @@ protected override void ReplayMessagesInSegment(Entity<TapeRecorderComponent> en
if (message.Bark != null)
{
var barkOverride = EnsureComp<SpeechBarksComponent>(ent);
barkOverride.BarkPrototype = message.Bark;
barkOverride.BarkPitch = message.BarkPitch;
barkOverride.Data = message.Bark;
}
if (message.TTS.HasValue)
{
Expand Down Expand Up @@ -97,15 +96,14 @@ private void OnListen(Entity<TapeRecorderComponent> ent, ref ListenEvent args)
//Add a new entry to the tape
var name = nameEv.VoiceName;
var verb = _chat.GetSpeechVerb(args.Source, args.Message);
var barkPitch = 1f;
string? bark = null;

BarkData? bark = null;
ProtoId<TTSVoicePrototype>? tts = null;
if (TryComp<SpeechBarksComponent>(args.Source, out var barksComponent))
{
var barkEv = new TransformSpeakerBarkEvent(args.Source, barksComponent.Sound, barksComponent.BarkPitch);
var barkEv = new TransformSpeakerBarkEvent(args.Source, barksComponent.Data.Copy());
RaiseLocalEvent(args.Source, barkEv);
bark = barkEv.Sound;
barkPitch = barkEv.Pitch;
bark = barkEv.Data;
}
if (TryComp<TTSComponent>(args.Source, out var ttsComp) && ttsComp.VoicePrototypeId != null)
{
Expand All @@ -114,7 +112,7 @@ private void OnListen(Entity<TapeRecorderComponent> ent, ref ListenEvent args)
tts = ttsEv.VoiceId;
}

cassette.Comp.Buffer.Add(new TapeCassetteRecordedMessage(cassette.Comp.CurrentPosition, name, verb, bark, barkPitch, tts, _language.GetCurrentLanguage(args.Source), args.Message));
cassette.Comp.Buffer.Add(new TapeCassetteRecordedMessage(cassette.Comp.CurrentPosition, name, verb, bark, tts, _language.GetCurrentLanguage(args.Source), args.Message));
}

private void OnPrintMessage(Entity<TapeRecorderComponent> ent, ref PrintTapeRecorderMessage args)
Expand Down
13 changes: 5 additions & 8 deletions Content.Server/Database/ServerDbBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -271,10 +271,7 @@ private static HumanoidCharacterProfile ConvertProfiles(Profile profile)
traits.ToHashSet(),
loadouts,
// ADT Barks start
profile.BarkProto,
profile.BarkPitch,
profile.LowBarkVar,
profile.HighBarkVar
new BarkData(profile.BarkProto, profile.BarkPitch, profile.LowBarkVar, profile.HighBarkVar)
// ADT Barks end
);
}
Expand Down Expand Up @@ -357,10 +354,10 @@ private static Profile ConvertProfiles(HumanoidCharacterProfile humanoid, int sl
profile.Loadouts.Add(dz);
}
// ADT Barks start
profile.BarkProto = humanoid.BarkProto;
profile.BarkPitch = humanoid.BarkPitch;
profile.LowBarkVar = humanoid.BarkLowVar;
profile.HighBarkVar = humanoid.BarkHighVar;
profile.BarkProto = humanoid.Bark.Proto;
profile.BarkPitch = humanoid.Bark.Pitch;
profile.LowBarkVar = humanoid.Bark.MinVar;
profile.HighBarkVar = humanoid.Bark.MaxVar;
// ADT Barks end

return profile;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ public void SetAppearance(HumanoidAppearanceComponent sourceHumanoid, HumanoidAp
targetHumanoid.CustomBaseLayers = new(sourceHumanoid.CustomBaseLayers);
targetHumanoid.MarkingSet = new(sourceHumanoid.MarkingSet);
SetTTSVoice(targetHumanoid.Owner, sourceHumanoid.Voice, targetHumanoid); // Corvax-TTS
SetBarkData(targetHumanoid.Owner, sourceHumanoid.Bark, targetHumanoid); // ADT Barks

targetHumanoid.Gender = sourceHumanoid.Gender;
if (TryComp<GrammarComponent>(targetHumanoid.Owner, out var grammar))
Expand Down
7 changes: 2 additions & 5 deletions Content.Server/Speech/Components/VoiceOverrideComponent.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using Content.Shared.ADT.SpeechBarks;
using Content.Shared.Corvax.TTS;
using Content.Shared.Speech;
using Robust.Shared.Prototypes;
Expand Down Expand Up @@ -36,11 +37,7 @@ public sealed partial class VoiceOverrideComponent : Component

// ADT start
[DataField]
public string? BarkSound;

[DataField]
[ViewVariables(VVAccess.ReadWrite)]
public float? BarkPitch;
public BarkData? Bark;

[DataField]
public ProtoId<TTSVoicePrototype>? TTS;
Expand Down
3 changes: 3 additions & 0 deletions Content.Server/Speech/EntitySystems/VoiceOverrideSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<VoiceOverrideComponent, TransformSpeakerNameEvent>(OnTransformSpeakerName);

InitializeTTS(); // ADT TTS
InitializeBarks(); // ADT Barks
}

private void OnTransformSpeakerName(Entity<VoiceOverrideComponent> entity, ref TransformSpeakerNameEvent args)
Expand Down
Loading

0 comments on commit 9c3fd19

Please sign in to comment.