Skip to content

Commit

Permalink
Rerev (#766)
Browse files Browse the repository at this point in the history
## Описание PR
<!-- Что вы изменили в этом пулл реквесте? -->
полностью переделала революцию 
## Почему / Баланс
<!-- Почему оно было изменено? Ссылайтесь на любые обсуждения или
вопросы здесь. Пожалуйста, обсудите, как это повлияет на игровой баланс.
-->
весельн.
**Ссылка на публикацию в Discord**
<!-- Укажите ссылки на соответствующие обсуждения, проблемы, баги,
заказы в разработку или предложения
- [Технические проблемы](ссылка)
- [Баги](ссылка)
- [Заказы-разработка](ссылка)
- [Предложения](ссылка)
- [Перенос контента](ссылка)-->

## Медиа

https://github.com/user-attachments/assets/4d4da303-6a98-4f2b-861c-809710a24e62


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

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

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

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

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

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

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

Помещение имени после символа 🆑 изменит имя, которое будет
отображаться в журнале изменений (в противном случае будет
использоваться ваше имя пользователя GitHub).
Например: 🆑 AruMoon
-->

🆑 Ratyyy
- add: На станциях НТ резко повысилось количество революций!
- add: НТ провело тренинги, как сопротивляться воздействию гипноза!
- add: Главам революции начали выдавать собственные ящики со
снаряжением!
  • Loading branch information
Ratyyy authored Nov 9, 2024
1 parent 6a8841e commit 05890b5
Show file tree
Hide file tree
Showing 22 changed files with 445 additions and 8 deletions.
45 changes: 45 additions & 0 deletions Content.Client/ADT/Revolutionary/EUI/AcceptRevolutionEui.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
using Content.Client.Eui;
using Content.Shared.Cloning;
using JetBrains.Annotations;
using Robust.Client.Graphics;
using Content.Shared.Revolutionary;
using Content.Shared.Bible.Components;

namespace Content.Client.Revolutionary;

[UsedImplicitly]
public sealed class AcceptRevolutionEui : BaseEui
{
private readonly AcceptRevolutionWindow _window;

public AcceptRevolutionEui()
{
_window = new AcceptRevolutionWindow();

_window.DenyButton.OnPressed += _ =>
{
SendMessage(new AcceptRevolutionChoiceMessage(AcceptRevolutionButton.Deny));
_window.Close();
};

_window.OnClose += () => SendMessage(new AcceptRevolutionChoiceMessage(AcceptRevolutionButton.Deny));

_window.AcceptButton.OnPressed += _ =>
{
SendMessage(new AcceptRevolutionChoiceMessage(AcceptRevolutionButton.Accept));
_window.Close();
};
}

public override void Opened()
{
IoCManager.Resolve<IClyde>().RequestWindowAttention();
_window.OpenCentered();
}

public override void Closed()
{
_window.Close();
}

}
61 changes: 61 additions & 0 deletions Content.Client/ADT/Revolutionary/EUI/AcceptRevolutionEuiWindow.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
using System.Numerics;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Shared.Localization;
using static Robust.Client.UserInterface.Controls.BoxContainer;

namespace Content.Client.Revolutionary;

public sealed class AcceptRevolutionWindow : DefaultWindow
{
public readonly Button DenyButton;
public readonly Button AcceptButton;

public AcceptRevolutionWindow()
{

Title = Loc.GetString("accept-revolution-window-title");

Contents.AddChild(new BoxContainer
{
Orientation = LayoutOrientation.Vertical,
Children =
{
new BoxContainer
{
Orientation = LayoutOrientation.Vertical,
Children =
{
(new Label()
{
Text = Loc.GetString("accept-revolution-window-prompt-text-part")
}),
new BoxContainer
{
Orientation = LayoutOrientation.Horizontal,
Align = AlignMode.Center,
Children =
{
(AcceptButton = new Button
{
Text = Loc.GetString("accept-revolution-window-accept-button"),
}),

(new Control()
{
MinSize = new Vector2(20, 0)
}),

(DenyButton = new Button
{
Text = Loc.GetString("accept-revolution-window-deny-button"),
})
}
},
}
},
}
});
}
}
40 changes: 40 additions & 0 deletions Content.Server/ADT/Revolitionary/EUI/AcceptRevolutionEui.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using Content.Server.EUI;
using Content.Shared.Revolutionary;
using Content.Shared.Eui;
using Content.Shared.Bible.Components;
using Content.Server.Bible;
using Content.Shared.Revolutionary.Components;
using Content.Server.GameTicking.Rules;

namespace Content.Server.Revolutionary;

public sealed class AcceptRevolutionEui : BaseEui
{
private readonly EntityUid _uid;
private readonly EntityUid _target;
private readonly HeadRevolutionaryComponent _comp;
private readonly RevolutionaryRuleSystem _headrev;

public AcceptRevolutionEui(EntityUid uid, EntityUid target, HeadRevolutionaryComponent comp, RevolutionaryRuleSystem headrev)
{
_uid = uid;
_target = target;
_comp = comp;
_headrev = headrev;
}

public override void HandleMessage(EuiMessageBase msg)
{
base.HandleMessage(msg);

if (msg is not AcceptRevolutionChoiceMessage choice ||
choice.Button == AcceptRevolutionButton.Deny)
{
Close();
return;
}

_headrev.MakeEntRev(_uid, _target, _comp);
Close();
}
}
41 changes: 35 additions & 6 deletions Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ public override void Initialize()
SubscribeLocalEvent<HeadRevolutionaryComponent, MobStateChangedEvent>(OnHeadRevMobStateChanged);

SubscribeLocalEvent<RevolutionaryRoleComponent, GetBriefingEvent>(OnGetBriefing);

}

protected override void Started(EntityUid uid, RevolutionaryRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args)
Expand Down Expand Up @@ -144,6 +143,16 @@ private void OnPostFlash(EntityUid uid, HeadRevolutionaryComponent comp, ref Aft
return;
}

//ADT rerev start
if (mind == null || mind.Session == null || ev.User == null)
return;

if (comp.ConvertedCount <= 15)
{
_euiMan.OpenEui(new AcceptRevolutionEui(ev.User.Value, ev.Target, comp, this), mind.Session);
return;
}
//ADT rerev end
_npcFaction.AddFaction(ev.Target, RevolutionaryNpcFaction);
var revComp = EnsureComp<RevolutionaryComponent>(ev.Target);

Expand All @@ -155,8 +164,9 @@ private void OnPostFlash(EntityUid uid, HeadRevolutionaryComponent comp, ref Aft

if (_mind.TryGetMind(ev.User.Value, out var revMindId, out _))
{
if (_role.MindHasRole<RevolutionaryRoleComponent>(revMindId, out var role))
role.Value.Comp2.ConvertedCount++;
// if (_role.MindHasRole<RevolutionaryRoleComponent>(revMindId, out var role)) //ADT rerev start
// role.Value.Comp2.ConvertedCount++;
comp.ConvertedCount++; //ADT rerev end
}
}

Expand Down Expand Up @@ -203,8 +213,8 @@ private void OnHeadRevMobStateChanged(EntityUid uid, HeadRevolutionaryComponent
/// </summary>
private bool CheckRevsLose()
{
///ADT метод полностью переписан
///ADT start
//ADT метод полностью переписан
//ADT start
var headRevList = new List<EntityUid>();

var headRevs = AllEntityQuery<HeadRevolutionaryComponent, MobStateComponent>();
Expand Down Expand Up @@ -256,7 +266,7 @@ private bool IsGroupDead(List<EntityUid> list, bool checkOffStation, int? Dead =

return dead == list.Count || list.Count == 0;
}
///ADT end
//ADT end



Expand Down Expand Up @@ -311,4 +321,23 @@ private bool IsGroupDetainedOrDead(List<EntityUid> list, bool checkOffStation, b
// revs lost and heads died
"rev-stalemate"
};
//ADT rerev start

public void MakeEntRev(EntityUid user, EntityUid target, HeadRevolutionaryComponent comp)
{
if (!_mind.TryGetMind(target, out var mindId, out var mind))
return;

_npcFaction.AddFaction(target, RevolutionaryNpcFaction);
var revComp = EnsureComp<RevolutionaryComponent>(target);


_adminLogManager.Add(LogType.Mind, LogImpact.Medium, $"{ToPrettyString(user)} converted {ToPrettyString(target)} into a Revolutionary");

comp.ConvertedCount++;

if (mind?.Session != null)
_antag.SendBriefing(mind.Session, Loc.GetString("rev-role-greeting"), Color.Red, revComp.RevStartSound);
}
//ADT rerev end
}
22 changes: 22 additions & 0 deletions Content.Shared/ADT/Revolutinary/EUI/AcceptRevolutionEuiMessage.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using Content.Shared.Eui;
using Robust.Shared.Serialization;

namespace Content.Shared.Revolutionary;

[Serializable, NetSerializable]
public enum AcceptRevolutionButton
{
Deny,
Accept,
}

[Serializable, NetSerializable]
public sealed class AcceptRevolutionChoiceMessage : EuiMessageBase
{
public readonly AcceptRevolutionButton Button;

public AcceptRevolutionChoiceMessage(AcceptRevolutionButton button)
{
Button = button;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,26 @@ public sealed partial class HeadRevolutionaryComponent : Component
public TimeSpan StunTime = TimeSpan.FromSeconds(3);

public override bool SessionSpecific => true;

/// <summary>
/// ADT - wizden bugfix
/// </summary>
[DataField, ViewVariables(VVAccess.ReadWrite)]
public uint ConvertedCount = 0;
}
// ADT rerev start
[ByRefEvent]
public sealed class ConvertAttemtEvent
{
public EntityUid User;
public EntityUid Target;
public HeadRevolutionaryComponent? Comp;

public ConvertAttemtEvent(EntityUid user, EntityUid target, HeadRevolutionaryComponent? comp)
{
Target = target;
User = user;
Comp = comp;
}
}
// ADT rerev end
3 changes: 3 additions & 0 deletions Resources/Locale/ru-RU/ADT/Objects/Tools/emag.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ent-ADTEmagHandMade = модифицированная ID карта
.desc = Выглядит как айди карта, к котрой привязали мультитул, бумагу, а так же ещё несколько инструментов. Пахнет довольно красновато.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ent-ADTToolboxRevolution = аварийный ящик инструментов
.desc = Довольно компактный, однако.
5 changes: 5 additions & 0 deletions Resources/Locale/ru-RU/ADT/revolution/eui.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# EUI
accept-revolution-window-title = Революция
accept-revolution-window-prompt-text-part = Что-то стремится подчинить вашу волю себе, вы ощущаете сильное желание перемен и мятежа. Сопротивляетесь ли вы, или подчинитесь их воле?
accept-revolution-window-accept-button = Поддатся
accept-revolution-window-deny-button = Сопротивлятся
37 changes: 37 additions & 0 deletions Resources/Locale/ru-RU/ADT/revolution/toolbox.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
revolution-toolbox-category-all-hands-master-name = Набор мастера на все руки
revolution-toolbox-category-all-hands-master-description =
Набор для по-настоящему универсальных революционеров!
Содержит: подозрительный ящик инструментов, прототип
криптографического ключа, МК58
revolution-toolbox-category-subversion-name = Набор юного подрывника
revolution-toolbox-category-subversion-description =
Набор, чтобы устроить настоящий хаос на станции!
влючает в себя: 3 кувшина калия, 1 кувшин угля,
1 кувшин серы, 4 хим. заряда, 3 таймер-триггера,
3 сигнальных триггера, продвинутый передатчик сигналов
revolution-toolbox-category-technolover-name = Набор любителя технологий
revolution-toolbox-category-technolover-description =
Для любителей хакинга, ИИ, боргов а так же троллiiн2а
влючает в себя: айди карта с доступом в кабинет научного
руководлителя, мультитул, плата загрузки законов ИИ,
мониторинг экипажа и набор тролля "близнецы"
revolution-toolbox-category-gunsmith-name = Набор юного оружейника
revolution-toolbox-category-gunsmith-description =
Выдайте вам и вашим товарищам по пистолету!
Включает в себя: 3 самодельных пистолета,
3 самодельных лазера, 1 инспектор и бензопилу
revolution-toolbox-category-printing-name = Набор печатания
revolution-toolbox-category-printing-description =
Вы что-то хотите? Напечатайте!
включает в себя: плата автолата, плата протолата,
плата фабрикатора экзоклстюмов, плата ТехФаба патронов,
плата охранного техфаба.
6 changes: 6 additions & 0 deletions Resources/Prototypes/ADT/Catalog/Fills/Boxes/boxes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -687,6 +687,12 @@
- id: ADTClothingHeadHatHornsSollux
- id: ADTClothingShoesBootsSollux
- id: ADTClothingUniformJumpsuitSollux
- type: Storage
maxItemSize: Normal
grid:
- 0,0,3,2
- type: Item
size: Large

# Bad Police

Expand Down
Loading

0 comments on commit 05890b5

Please sign in to comment.