Merge remote-tracking branch 'WD-core/master' into upstream-core

This commit is contained in:
BIGZi0348
2025-01-12 00:21:09 +03:00
13 changed files with 250 additions and 56 deletions

View File

@@ -337,11 +337,11 @@ namespace Content.Server.GameTicking
Loc.GetString("latejoin-arrival-sender"), Loc.GetString("latejoin-arrival-sender"),
playDefaultSound: false); playDefaultSound: false);
} }
// WD Don't need this bullshit
if (player.UserId == new Guid("{e887eb93-f503-4b65-95b6-2f282c014192}")) // if (player.UserId == new Guid("{e887eb93-f503-4b65-95b6-2f282c014192}"))
{ // {
EntityManager.AddComponent<OwOAccentComponent>(mob); // EntityManager.AddComponent<OwOAccentComponent>(mob);
} // }
_stationJobs.TryAssignJob(station, jobPrototype, player.UserId); _stationJobs.TryAssignJob(station, jobPrototype, player.UserId);

View File

@@ -1,18 +1,15 @@
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Content.Server.Speech.Components; using Content.Server.Speech.Components;
using Robust.Shared.Random;
namespace Content.Server.Speech.EntitySystems; namespace Content.Server.Speech.EntitySystems;
public sealed class MothAccentSystem : EntitySystem public sealed class MothAccentSystem : EntitySystem
{ {
[Dependency] private readonly IRobustRandom _random = default!; // WD
private static readonly Regex RegexLowerBuzz = new Regex("z{1,3}"); private static readonly Regex RegexLowerBuzz = new Regex("z{1,3}");
private static readonly Regex RegexUpperBuzz = new Regex("Z{1,3}"); private static readonly Regex RegexUpperBuzz = new Regex("Z{1,3}");
private static readonly Regex RussianRegexLowerZ = new Regex("Z{1,3}"); // WD
private static readonly Regex RussianRegexUpperZ = new Regex("Z{1,3}"); // WD
private static readonly Regex RussianRegexLowerZH = new Regex("Z{1,3}"); // WD
private static readonly Regex RussianRegexUpperZH = new Regex("Z{1,3}"); // WD
public override void Initialize() public override void Initialize()
{ {
base.Initialize(); base.Initialize();
@@ -29,13 +26,30 @@ public sealed class MothAccentSystem : EntitySystem
message = RegexUpperBuzz.Replace(message, "ZZZ"); message = RegexUpperBuzz.Replace(message, "ZZZ");
// WD EDIT START // WD EDIT START
message = RussianRegexLowerZ.Replace(message, "ззз"); // ж => жжж
message = Regex.Replace(
message = RussianRegexUpperZ.Replace(message, "ЗЗЗ"); message,
"ж+",
message = RussianRegexLowerZH.Replace(message, "жжж"); _random.Pick(new List<string>() { "жж", "жжж" })
);
message = RussianRegexUpperZH.Replace(message, "ЖЖЖ"); // Ж => ЖЖЖ
message = Regex.Replace(
message,
"Ж+",
_random.Pick(new List<string>() { "ЖЖ", "ЖЖЖ" })
);
// з => ззз
message = Regex.Replace(
message,
"з+",
_random.Pick(new List<string>() { "зз", "ззз" })
);
// З => ЗЗЗ
message = Regex.Replace(
message,
"З+",
_random.Pick(new List<string>() { "ЗЗ", "ЗЗЗ" })
);
// WD EDIT END // WD EDIT END
args.Message = message; args.Message = message;

View File

@@ -71,6 +71,12 @@ public sealed class SlurredSystem : SharedSlurredSystem
'a' => "ah", 'a' => "ah",
'u' => "oo", 'u' => "oo",
'c' => "k", 'c' => "k",
// WD EDIT START
'о' => "а",
'к' => "кх",
'щ' => "шч",
'ц' => "тс",
// WD EDIT END
_ => $"{character}", _ => $"{character}",
}; };

View File

@@ -7,6 +7,7 @@ using Content.Server._White.AspectsSystem.Base;
using Content.Server.GameTicking.Components; using Content.Server.GameTicking.Components;
using Content.Shared.Mind.Components; using Content.Shared.Mind.Components;
using Robust.Shared.Random; using Robust.Shared.Random;
using Content.Server._White.Accent.BomzhAccent;
namespace Content.Server._White.AspectsSystem.Aspects; namespace Content.Server._White.AspectsSystem.Aspects;
@@ -69,6 +70,8 @@ public sealed class RandomAccentAspect : AspectSystem<RandomAccentAspectComponen
Moth, Moth,
French, French,
Gnome, Gnome,
Bomzh,
Frontallisp
} }
private void ApplyRandomAccent(EntityUid uid) private void ApplyRandomAccent(EntityUid uid)
@@ -100,7 +103,7 @@ public sealed class RandomAccentAspect : AspectSystem<RandomAccentAspectComponen
case AccentType.Pirate: case AccentType.Pirate:
EntityManager.EnsureComponent<PirateAccentComponent>(uid); EntityManager.EnsureComponent<PirateAccentComponent>(uid);
break; break;
case AccentType.Russian: case AccentType.Russian: // Untranslated
EntityManager.EnsureComponent<RussianAccentComponent>(uid); EntityManager.EnsureComponent<RussianAccentComponent>(uid);
break; break;
case AccentType.OwO: case AccentType.OwO:
@@ -127,12 +130,18 @@ public sealed class RandomAccentAspect : AspectSystem<RandomAccentAspectComponen
case AccentType.Moth: case AccentType.Moth:
EntityManager.EnsureComponent<MothAccentComponent>(uid); EntityManager.EnsureComponent<MothAccentComponent>(uid);
break; break;
case AccentType.French: case AccentType.French: // Untranslated
EntityManager.EnsureComponent<FrenchAccentComponent>(uid); EntityManager.EnsureComponent<FrenchAccentComponent>(uid);
break; break;
case AccentType.Gnome: case AccentType.Gnome:
EntityManager.EnsureComponent<GnomeAccentComponent>(uid); EntityManager.EnsureComponent<GnomeAccentComponent>(uid);
break; break;
case AccentType.Bomzh:
EntityManager.EnsureComponent<BomzhAccentComponent>(uid);
break;
case AccentType.Frontallisp:
EntityManager.EnsureComponent<FrontalLispComponent>(uid);
break;
} }
} }

View File

@@ -72,8 +72,16 @@ public sealed class ERTRecruitmentRule : StationEventSystem<ERTRecruitmentRuleCo
{ {
base.Started(uid, component, gameRule, args); base.Started(uid, component, gameRule, args);
if (component.TargetStation == null || component.IsBlocked || IsDisabled) if (component.TargetStation == null)
{ {
ForceEndSelf(uid, gameRule);
_adminLogger.Add(LogType.EventStarted, LogImpact.High, $"ERT Declined - Target Station is missing");
return;
}
if (component.IsBlocked || IsDisabled)
{
DeclineERT(component.TargetStation.Value);
ForceEndSelf(uid, gameRule); ForceEndSelf(uid, gameRule);
_adminLogger.Add(LogType.EventStarted, LogImpact.High, $"ERT Declined - Event disabled"); _adminLogger.Add(LogType.EventStarted, LogImpact.High, $"ERT Declined - Event disabled");
return; return;
@@ -82,6 +90,7 @@ public sealed class ERTRecruitmentRule : StationEventSystem<ERTRecruitmentRuleCo
if (_recruitment.GetEventSpawners(ERTRecruitmentRuleComponent.EventName).Count() < component.MinPlayers) if (_recruitment.GetEventSpawners(ERTRecruitmentRuleComponent.EventName).Count() < component.MinPlayers)
{ {
DeclineERT(component.TargetStation.Value); DeclineERT(component.TargetStation.Value);
ForceEndSelf(uid, gameRule);
_adminLogger.Add(LogType.EventStarted, LogImpact.High, $"ERT Declined - Not enough spawners"); _adminLogger.Add(LogType.EventStarted, LogImpact.High, $"ERT Declined - Not enough spawners");
return; return;
} }

View File

@@ -1,23 +1,4 @@
Entries: Entries:
- author: ThereDrD
changes:
- message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0430 \u043D\u043E\u0432\
\u0430\u044F \u0438\u0433\u0440\u0443\u0448\u043A\u0430 \u0432 \u0434\u043E\u043D\
\u0430\u0442-\u043C\u0430\u0433\u0430\u0437\u0438\u043D"
type: Add
id: 156
time: '2024-02-26T18:27:13.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/126
- author: Aviu
changes:
- message: "\u041F\u043E\u0444\u0438\u043A\u0448\u0435\u043D \u043A\u0440\u0430\u0448\
\ \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u0437-\u0437\u0430 \u043F\
\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u0442\u0435\u043B\
\u044F \u043F\u043E\u043A\u0440\u043E\u0432\u0430."
type: Fix
id: 157
time: '2024-02-27T06:12:53.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/127
- author: RedFoxIV - author: RedFoxIV
changes: changes:
- message: "\u041D\u0438\u0447\u0435\u0433\u043E. \u041C\u0435\u043D\u044C\u0448\ - message: "\u041D\u0438\u0447\u0435\u0433\u043E. \u041C\u0435\u043D\u044C\u0448\
@@ -8916,3 +8897,36 @@
id: 655 id: 655
time: '2025-01-08T19:42:41.0000000+00:00' time: '2025-01-08T19:42:41.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/868 url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/868
- author: Hero_010
changes:
- message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D \u043A\u0440\u0430\u0444\
\u0442 \u0432\u043D\u0435\u0448\u043D\u0435\u043C\u0443 \u0438 \u0441\u0442\u0435\
\u043A\u043B\u044F\u043D\u043D\u043E\u043C\u0443 \u0432\u043D\u0435\u0448\u043D\
\u0435\u043C\u0443 \u0448\u043B\u044E\u0437\u0430\u043C."
type: Add
id: 656
time: '2025-01-10T18:44:47.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/879
- author: BIG_Zi_348
changes:
- message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D \u0430\u043A\u0446\
\u0435\u043D\u0442 \u043C\u043E\u043B\u044F\u043C, \u043E\u043D\u0438 \u0442\
\u0435\u043F\u0435\u0440\u044C \u0436\u0443\u0436\u0436\u0430\u0442."
type: Fix
- message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043E \u0431\u043E\u043B\
\u044C\u0448\u0435 \u0441\u043C\u0435\u0448\u043D\u043E\u0433\u043E \u0432 \u0430\
\u043A\u0446\u0435\u043D\u0442 \u043F\u0440\u0438 \u043E\u043F\u044C\u044F\u043D\
\u0435\u043D\u0438\u0438."
type: Add
- message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043E \u0431\u043E\u043B\
\u044C\u0448\u0435 \u0430\u043A\u0446\u0435\u043D\u0442\u043E\u0432 \u0432 \u0430\
\u0441\u043F\u0435\u043A\u0442 \u0440\u0430\u043D\u0434\u043E\u043C\u043D\u044B\
\u0445 \u0430\u043A\u0446\u0435\u043D\u0442\u043E\u0432."
type: Add
- message: "\u0421\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C \u0420\u041F\u041A\
\ \u0432 \u043A\u0430\u0440\u0433\u043E \u0432\u043E\u0437\u0440\u043E\u0441\
\u043B\u0430."
type: Tweak
id: 657
time: '2025-01-11T21:05:59.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/880

View File

@@ -0,0 +1,5 @@
ent-airlockExternal = { ent-AirlockExternal }
.desc = { ent-AirlockExternal.desc }
ent-airlockExternalGlass = стеклянный внешний шлюз
.desc = { ent-airlockExternal.desc}

View File

@@ -16,5 +16,5 @@ ent-BoxShotgunPractice = коробка ружейных патронов (уч
.desc = Полная коробка учебных ружейных патронов. .desc = Полная коробка учебных ружейных патронов.
ent-BoxShellTranquilizer = коробка ружейных патронов (транквилизаторы) ent-BoxShellTranquilizer = коробка ружейных патронов (транквилизаторы)
.desc = Полная коробка ружейных патронов-транквилизаторов. .desc = Полная коробка ружейных патронов-транквилизаторов.
ent-BoxRubberShot = коробка ружейных патронов (резиновые). ent-BoxRubberShot = коробка ружейных патронов (резиновые)
.desc = Полная коробка резиновых ружейных патронов. .desc = Полная коробка резиновых ружейных патронов.

View File

@@ -108,6 +108,11 @@
- type: Sprite - type: Sprite
sprite: Structures/Doors/Airlocks/Standard/external.rsi sprite: Structures/Doors/Airlocks/Standard/external.rsi
state: "assembly" state: "assembly"
- type: Construction ## WD edit
graph: Airlock
node: externalAssembly
containers:
- board
- type: entity - type: entity
parent: AirlockAssembly parent: AirlockAssembly
@@ -117,6 +122,11 @@
- type: Sprite - type: Sprite
sprite: Structures/Doors/Airlocks/Glass/external.rsi sprite: Structures/Doors/Airlocks/Glass/external.rsi
state: "assembly" state: "assembly"
- type: Construction ## WD edit
graph: Airlock
node: externalAssemblyGlass
containers:
- board
#Public (Glass Airlock) #Public (Glass Airlock)
- type: entity - type: entity

View File

@@ -20,6 +20,9 @@
- type: PaintableAirlock - type: PaintableAirlock
group: External group: External
department: null department: null
- type: Construction ## WD edit
graph: Airlock
node: external
- type: entity - type: entity
parent: AirlockExternal parent: AirlockExternal
@@ -34,3 +37,6 @@
sprite: Structures/Doors/Airlocks/Glass/external.rsi sprite: Structures/Doors/Airlocks/Glass/external.rsi
- type: PaintableAirlock - type: PaintableAirlock
group: ExternalGlass group: ExternalGlass
- type: Construction ## WD edit
graph: Airlock
node: externalGlass

View File

@@ -77,6 +77,15 @@
- material: ReinforcedGlass - material: ReinforcedGlass
amount: 1 amount: 1
doAfter: 2 doAfter: 2
## WD edit start
- to: externalAssembly
conditions:
- !type:EntityAnchored {}
steps:
- material: Steel
amount: 1
doAfter: 2
## WD edit end
- to: wired - to: wired
conditions: conditions:
- !type:EntityAnchored {} - !type:EntityAnchored {}
@@ -114,6 +123,55 @@
- tool: Prying - tool: Prying
doAfter: 5 doAfter: 5
## WD edit start
- node: externalAssembly
entity: AirlockAssemblyExternal
edges:
- to: electronics
conditions:
- !type:EntityAnchored {}
completed:
- !type:SpawnPrototype
prototype: SheetSteel1
amount: 1
steps:
- tool: Prying
doAfter: 5
- to: external
conditions:
- !type:EntityAnchored {}
steps:
- tool: Screwing
doAfter: 2.5
- to: externalAssemblyGlass
conditions:
- !type:EntityAnchored {}
steps:
- material: ReinforcedGlass
amount: 1
doAfter: 2
- node: externalAssemblyGlass
entity: AirlockAssemblyExternalGlass
edges:
- to: externalGlass
conditions:
- !type:EntityAnchored {}
steps:
- tool: Screwing
doAfter: 2.5
- to: externalAssembly
conditions:
- !type:EntityAnchored {}
completed:
- !type:SpawnPrototype
prototype: SheetRGlass1
amount: 1
steps:
- tool: Prying
doAfter: 5
## WD edit end
## Glass airlock ## Glass airlock
- node: glassAirlock - node: glassAirlock
entity: AirlockGlass entity: AirlockGlass
@@ -154,6 +212,23 @@
amount: 2 amount: 2
doAfter: 2 doAfter: 2
## WD edit start
- node: externalGlass
entity: AirlockExternalGlass
edges:
- to: externalAssemblyGlass
conditions:
- !type:EntityAnchored {}
- !type:DoorWelded {}
- !type:DoorBolted
value: false
- !type:WirePanel {}
- !type:AllWiresCut
steps:
- tool: Prying
doAfter: 5
## WD edit end
## Standard airlock ## Standard airlock
- node: airlock - node: airlock
entity: Airlock entity: Airlock
@@ -194,6 +269,23 @@
amount: 2 amount: 2
doAfter: 2 doAfter: 2
## WD edit start
- node: external
entity: AirlockExternal
edges:
- to: externalAssembly
conditions:
- !type:EntityAnchored {}
- !type:DoorWelded {}
- !type:DoorBolted
value: false
- !type:WirePanel {}
- !type:AllWiresCut
steps:
- tool: Prying
doAfter: 5
## WD edit end
## High security door ## High security door
- node: highSecDoor - node: highSecDoor
actions: actions:

View File

@@ -4,6 +4,6 @@
sprite: _Honk/Objects/Weapons/Guns/LMGs/klmg-icons.rsi sprite: _Honk/Objects/Weapons/Guns/LMGs/klmg-icons.rsi
state: icon state: icon
product: CrateArmoryKLMG product: CrateArmoryKLMG
cost: 10000 cost: 14000
category: cargoproduct-category-name-armory category: cargoproduct-category-name-armory
group: market group: market

View File

@@ -0,0 +1,29 @@
- type: construction
name: external airlock
id: airlockExternal
graph: Airlock
startNode: start
targetNode: external
category: construction-category-structures
description: It opens, it closes, it might crush you, and there might be only space behind it. Has to be manually activated.
icon: { sprite: Structures/Doors/Airlocks/Standard/external.rsi, state: closed }
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
conditions:
- !type:TileNotBlocked
- type: construction
name: external airlock
id: airlockExternalGlass
graph: Airlock
startNode: start
targetNode: externalGlass
category: construction-category-structures
description: It opens, it closes, it might crush you, and there might be only space behind it. Has to be manually activated.
icon: { sprite: Structures/Doors/Airlocks/Glass/external.rsi, state: closed }
objectType: Structure
placementMode: SnapgridCenter
canBuildInImpassable: false
conditions:
- !type:TileNotBlocked