Skip to content

Commit

Permalink
Правки говнокрада (#831)
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.
-->

🆑 Котя
- tweak: Гуманоиды, трансормированные жалом трансформации генокрада,
теперь возвращаются к изначальной форме через 15 минут.
- tweak: Хитиновая броня получила неплохой бафф. Теперь она почти не
замедляет и защищает чуть лучше, но при этом хорошо жарится.
- tweak: Небольшие правки в коде, которых вы не заметите.

---------

Co-authored-by: bananchiki <[email protected]>
  • Loading branch information
FaDeOkno and Darkiich authored Nov 25, 2024
1 parent c0ed760 commit cc68c92
Show file tree
Hide file tree
Showing 11 changed files with 323 additions and 251 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using Content.Shared.Polymorph;

namespace Content.Server.Changeling;

[RegisterComponent]
public sealed partial class ForceTransformedComponent : Component
{
[ViewVariables]
public PolymorphHumanoidData? OriginalBody;

[ViewVariables(VVAccess.ReadWrite)]
public TimeSpan RevertAt;
}
20 changes: 10 additions & 10 deletions Content.Server/ADT/Changeling/Systems/ChangelingSystem.Combat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ private void OnLingEmp(EntityUid uid, ChangelingComponent component, LingEMPActi
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostTwenty))
if (!TryUseAbility(uid, component, args.Cost))
return;

args.Handled = true;
Expand All @@ -76,7 +76,7 @@ public void OnResonantShriek(EntityUid uid, ChangelingComponent component, LingR
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostTwenty))
if (!TryUseAbility(uid, component, args.Cost))
return;

args.Handled = true;
Expand Down Expand Up @@ -109,7 +109,7 @@ private void OnMuscles(EntityUid uid, ChangelingComponent component, ChangelingM
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostTwenty))
if (!TryUseAbility(uid, component, args.Cost))
return;

args.Handled = true;
Expand All @@ -135,7 +135,7 @@ private void OnAdrenaline(EntityUid uid, ChangelingComponent component, Adrenali
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostTen))
if (!TryUseAbility(uid, component, args.Cost))
return;

args.Handled = true;
Expand All @@ -155,7 +155,7 @@ private void OnBlindSting(EntityUid uid, ChangelingComponent component, BlindSti
if (!TryStingTarget(uid, target))
return;

if (!TryUseAbility(uid, component, component.ChemicalsCostFifteen))
if (!TryUseAbility(uid, component, args.Cost))
return;

args.Handled = true;
Expand All @@ -179,7 +179,7 @@ private void OnArmBladeAction(EntityUid uid, ChangelingComponent component, ArmB
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostTwenty, !component.ArmBladeActive))
if (!TryUseAbility(uid, component, args.Cost, !component.ArmBladeActive))
return;

args.Handled = true;
Expand Down Expand Up @@ -228,7 +228,7 @@ private void OnArmShieldAction(EntityUid uid, ChangelingComponent component, Arm
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostTwenty, !component.ArmShieldActive))
if (!TryUseAbility(uid, component, args.Cost, !component.ArmShieldActive))
return;

args.Handled = true;
Expand Down Expand Up @@ -267,7 +267,7 @@ private void OnArmaceAction(EntityUid uid, ChangelingComponent component, Armace
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostTwenty, !component.ArmBladeActive))
if (!TryUseAbility(uid, component, args.Cost, !component.ArmBladeActive))
return;

args.Handled = true;
Expand Down Expand Up @@ -309,7 +309,7 @@ private void OnLingArmorAction(EntityUid uid, ChangelingComponent component, Lin
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostTwenty, !component.LingArmorActive, component.LingArmorRegenCost))
if (!TryUseAbility(uid, component, args.Cost, !component.LingArmorActive, component.LingArmorRegenCost))
return;

_audioSystem.PlayPvs(component.SoundFlesh, uid);
Expand Down Expand Up @@ -356,7 +356,7 @@ private void OnBoneShard(EntityUid uid, ChangelingComponent component, Changelin
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostFifteen))
if (!TryUseAbility(uid, component, args.Cost))
return;

args.Handled = true;
Expand Down
39 changes: 21 additions & 18 deletions Content.Server/ADT/Changeling/Systems/ChangelingSystem.Useful.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,9 @@
using Content.Shared.Cuffs.Components;
using Content.Shared.Rejuvenate;
using Content.Shared.Store.Components;
using Content.Shared.Gibbing.Events;
using Content.Shared.Speech.Muting;
using System.Linq;
using Content.Shared.Chemistry.Components;
using Content.Shared.Whitelist;
using Content.Shared.ADT.Stealth.Components;

namespace Content.Server.Changeling.EntitySystems;
Expand Down Expand Up @@ -228,7 +226,7 @@ private void OnRegenerate(EntityUid uid, ChangelingComponent component, LingRege
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostTen))
if (!TryUseAbility(uid, component, args.Cost))
return;

args.Handled = true;
Expand Down Expand Up @@ -266,7 +264,7 @@ private void OnLingInvisible(EntityUid uid, ChangelingComponent component, LingI
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostTwentyFive, !component.ChameleonSkinActive))
if (!TryUseAbility(uid, component, args.Cost, !component.ChameleonSkinActive))
return;

args.Handled = true;
Expand Down Expand Up @@ -321,7 +319,7 @@ private void OnLingDNASting(EntityUid uid, ChangelingComponent component, LingSt
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostTwentyFive))
if (!TryUseAbility(uid, component, args.Cost))
return;

if (StealDNA(uid, target, component))
Expand Down Expand Up @@ -349,8 +347,8 @@ private void OnStasisDeathAction(EntityUid uid, ChangelingComponent component, S

if (component.StasisDeathActive)
{
if (!TryUseAbility(uid, component, component.ChemicalsCostTwentyFive))
return;
if (!TryUseAbility(uid, component, args.Cost))
return;

args.Handled = true;

Expand All @@ -370,8 +368,8 @@ private void OnStasisDeathAction(EntityUid uid, ChangelingComponent component, S
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostFree))
return;
if (!TryUseAbility(uid, component, args.Cost))
return;

args.Handled = true;

Expand Down Expand Up @@ -404,7 +402,7 @@ private void OnMuteSting(EntityUid uid, ChangelingComponent component, MuteSting
if (!TryStingTarget(uid, target))
return;

if (!TryUseAbility(uid, component, component.ChemicalsCostTwenty))
if (!TryUseAbility(uid, component, args.Cost))
return;

args.Handled = true;
Expand All @@ -426,7 +424,7 @@ private void OnDrugSting(EntityUid uid, ChangelingComponent component, DrugSting
if (!TryStingTarget(uid, target))
return;

if (!TryUseAbility(uid, component, component.ChemicalsCostTwenty))
if (!TryUseAbility(uid, component, args.Cost))
return;

args.Handled = true;
Expand All @@ -448,7 +446,7 @@ private void OnFleshmend(EntityUid uid, ChangelingComponent component, Fleshmend
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostTwentyFive))
if (!TryUseAbility(uid, component, args.Cost))
return;

args.Handled = true;
Expand All @@ -474,8 +472,8 @@ private void OnLesserForm(EntityUid uid, ChangelingComponent component, Changeli

if (!component.LesserFormActive)
{
if (!TryUseAbility(uid, component, component.ChemicalsCostTwenty))
return;
if (!TryUseAbility(uid, component, args.Cost))
return;

RemoveShieldEntity(uid, component);
RemoveBladeEntity(uid, component);
Expand Down Expand Up @@ -544,7 +542,7 @@ private void OnLastResort(EntityUid uid, ChangelingComponent component, LastReso
if (args.Handled)
return;

if (!TryUseAbility(uid, component, component.ChemicalsCostFree))
if (!TryUseAbility(uid, component, args.Cost))
return;
if (!_mindSystem.TryGetMind(uid, out var mindId, out var mind))
return;
Expand Down Expand Up @@ -581,7 +579,7 @@ private void OnBiodegrade(EntityUid uid, ChangelingComponent component, LingBiod
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostFifteen))
if (!TryUseAbility(uid, component, args.Cost))
return;

args.Handled = true;
Expand Down Expand Up @@ -636,8 +634,13 @@ public void OnTransformSting(EntityUid uid, ChangelingComponent component, Trans
_popup.PopupEntity(Loc.GetString("changeling-transform-fail-nodna"), uid, uid);
return;
}
if (HasComp<ForceTransformedComponent>(target))
{
_popup.PopupEntity(Loc.GetString("changeling-transform-sting-fail-already", ("target", Identity.Entity(target, EntityManager))), uid, uid);
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostFifty))
if (!TryUseAbility(uid, component, args.Cost))
return;

args.Handled = true;
Expand Down Expand Up @@ -680,7 +683,7 @@ private void OnDigitalCamouflage(EntityUid uid, ChangelingComponent component, D
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostTwenty, !component.DigitalCamouflageActive))
if (!TryUseAbility(uid, component, args.Cost, !component.DigitalCamouflageActive))
return;

args.Handled = true;
Expand Down
36 changes: 30 additions & 6 deletions Content.Server/ADT/Changeling/Systems/ChangelingSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,6 @@ public sealed partial class ChangelingSystem : EntitySystem
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly HallucinationsSystem _hallucinations = default!;
[Dependency] private readonly StealthSystem _stealth = default!;

[Dependency] private readonly ContainerSystem _container = default!;
#endregion

Expand Down Expand Up @@ -131,6 +130,12 @@ public override void Update(float frameTime)
{
UpdateChangelingHeadslug(uid, frameTime, comp);
}

var transformedQuery = EntityQueryEnumerator<ForceTransformedComponent>();
while (transformedQuery.MoveNext(out var uid, out var comp))
{
UpdateTransformed(uid, frameTime, comp);
}
}

private void OnStartup(EntityUid uid, ChangelingComponent component, ComponentStartup args)
Expand Down Expand Up @@ -298,8 +303,14 @@ private void OnSelectChangelingForm(SelectChangelingFormEvent ev)
return;

var newHumanoidData = _polymorph.CopyPolymorphHumanoidData(list.First());

_polymorph.PolymorphEntityAsHumanoid(GetEntity(ev.Target), newHumanoidData);
var data = _polymorph.TryRegisterPolymorphHumanoidData(target, target);
var polymorphed = _polymorph.PolymorphEntityAsHumanoid(target, newHumanoidData);
if (polymorphed.HasValue)
{
var forcedComp = EnsureComp<ForceTransformedComponent>(polymorphed.Value);
forcedComp.OriginalBody = data;
forcedComp.RevertAt = _timing.CurTime + TimeSpan.FromMinutes(15);
}

comp.StoredDNA.Remove(list.First());
return;
Expand Down Expand Up @@ -443,7 +454,7 @@ public void TransformChangeling(EntityUid uid, ChangelingComponent component, Se
return;
}

if (!TryUseAbility(uid, component, component.ChemicalsCostFive))
if (!TryUseAbility(uid, component, 5f))
return;

foreach (var item in component.BoughtActions.Where(x =>
Expand Down Expand Up @@ -553,10 +564,9 @@ private bool TryUseAbility(EntityUid uid, ChangelingComponent component, float a
_popup.PopupEntity(Loc.GetString("changeling-not-enough-chemicals"), uid, uid);
return false;
}

if (activated)
{
ChangeChemicalsAmount(uid, abilityCost, component, false);
ChangeChemicalsAmount(uid, -abilityCost, component, false);
component.ChemicalsPerSecond -= regenCost;
}
else
Expand Down Expand Up @@ -609,4 +619,18 @@ private void UpdateChangeling(EntityUid uid, float frameTime, ChangelingComponen
_stamina.TakeStaminaDamage(uid, comp.MusclesStaminaDamage, null, null, null, false);

}

private void UpdateTransformed(EntityUid uid, float frameTime, ForceTransformedComponent? comp = null)
{
if (!Resolve(uid, ref comp))
return;

if (comp.RevertAt > _timing.CurTime)
return;

if (!comp.OriginalBody.HasValue)
return;

_polymorph.PolymorphEntityAsHumanoid(uid, comp.OriginalBody.Value);
}
}
10 changes: 0 additions & 10 deletions Content.Shared/ADT/Changeling/Components/ChangelingComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -121,16 +121,6 @@ public sealed partial class ChangelingComponent : Component
public List<EntityUid?> BasicTransferredActions = new();
#endregion

#region Chemical Costs
public float ChemicalsCostFree = 0;
public float ChemicalsCostFive = -5f;
public float ChemicalsCostTen = -10f;
public float ChemicalsCostFifteen = -15f;
public float ChemicalsCostTwenty = -20f;
public float ChemicalsCostTwentyFive = -25f;
public float ChemicalsCostFifty = -50f;
#endregion

#region DNA Absorb Ability
/// <summary>
/// How long an absorb stage takes, in seconds.
Expand Down
Loading

0 comments on commit cc68c92

Please sign in to comment.