Merge remote-tracking branch 'WD-core/master' into upstream-core
This commit is contained in:
@@ -205,20 +205,20 @@ namespace Content.Server.GameTicking
|
||||
switch (similarity)
|
||||
{
|
||||
case >= 85f:
|
||||
{
|
||||
_chatManager.SendAdminAlert(Loc.GetString("ghost-respawn-character-almost-same",
|
||||
("player", player.Name), ("try", false), ("oldName", mind.CharacterName), ("newName", character.Name)));
|
||||
checkAvoid = true;
|
||||
sameChar = true;
|
||||
break;
|
||||
}
|
||||
{
|
||||
_chatManager.SendAdminAlert(Loc.GetString("ghost-respawn-character-almost-same",
|
||||
("player", player.Name), ("try", false), ("oldName", mind.CharacterName), ("newName", character.Name)));
|
||||
checkAvoid = true;
|
||||
sameChar = true;
|
||||
break;
|
||||
}
|
||||
case >= 50f:
|
||||
{
|
||||
_chatManager.SendAdminAlert(Loc.GetString("ghost-respawn-character-almost-same",
|
||||
("player", player.Name), ("try", true), ("oldName", mind.CharacterName),
|
||||
("newName", character.Name)));
|
||||
break;
|
||||
}
|
||||
{
|
||||
_chatManager.SendAdminAlert(Loc.GetString("ghost-respawn-character-almost-same",
|
||||
("player", player.Name), ("try", true), ("oldName", mind.CharacterName),
|
||||
("newName", character.Name)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -286,7 +286,7 @@ namespace Content.Server.GameTicking
|
||||
_mind.SetUserId(newMind, data.UserId);
|
||||
|
||||
var jobPrototype = _prototypeManager.Index<JobPrototype>(jobId);
|
||||
var job = new JobComponent {Prototype = jobId};
|
||||
var job = new JobComponent { Prototype = jobId };
|
||||
_roles.MindAddRole(newMind, job, silent: silent);
|
||||
var jobName = _jobs.MindTryGetJobName(newMind);
|
||||
|
||||
@@ -337,11 +337,11 @@ namespace Content.Server.GameTicking
|
||||
Loc.GetString("latejoin-arrival-sender"),
|
||||
playDefaultSound: false);
|
||||
}
|
||||
|
||||
if (player.UserId == new Guid("{e887eb93-f503-4b65-95b6-2f282c014192}"))
|
||||
{
|
||||
EntityManager.AddComponent<OwOAccentComponent>(mob);
|
||||
}
|
||||
// WD Don't need this bullshit
|
||||
// if (player.UserId == new Guid("{e887eb93-f503-4b65-95b6-2f282c014192}"))
|
||||
// {
|
||||
// EntityManager.AddComponent<OwOAccentComponent>(mob);
|
||||
// }
|
||||
|
||||
_stationJobs.TryAssignJob(station, jobPrototype, player.UserId);
|
||||
|
||||
|
||||
@@ -1,18 +1,15 @@
|
||||
using System.Text.RegularExpressions;
|
||||
using Content.Server.Speech.Components;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server.Speech.EntitySystems;
|
||||
|
||||
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 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()
|
||||
{
|
||||
base.Initialize();
|
||||
@@ -29,13 +26,30 @@ public sealed class MothAccentSystem : EntitySystem
|
||||
message = RegexUpperBuzz.Replace(message, "ZZZ");
|
||||
|
||||
// WD EDIT START
|
||||
message = RussianRegexLowerZ.Replace(message, "ззз");
|
||||
|
||||
message = RussianRegexUpperZ.Replace(message, "ЗЗЗ");
|
||||
|
||||
message = RussianRegexLowerZH.Replace(message, "жжж");
|
||||
|
||||
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>() { "зз", "ззз" })
|
||||
);
|
||||
// З => ЗЗЗ
|
||||
message = Regex.Replace(
|
||||
message,
|
||||
"З+",
|
||||
_random.Pick(new List<string>() { "ЗЗ", "ЗЗЗ" })
|
||||
);
|
||||
// WD EDIT END
|
||||
|
||||
args.Message = message;
|
||||
|
||||
@@ -71,6 +71,12 @@ public sealed class SlurredSystem : SharedSlurredSystem
|
||||
'a' => "ah",
|
||||
'u' => "oo",
|
||||
'c' => "k",
|
||||
// WD EDIT START
|
||||
'о' => "а",
|
||||
'к' => "кх",
|
||||
'щ' => "шч",
|
||||
'ц' => "тс",
|
||||
// WD EDIT END
|
||||
_ => $"{character}",
|
||||
};
|
||||
|
||||
@@ -90,7 +96,7 @@ public sealed class SlurredSystem : SharedSlurredSystem
|
||||
}
|
||||
}
|
||||
|
||||
if (!_random.Prob(scale * 3/20))
|
||||
if (!_random.Prob(scale * 3 / 20))
|
||||
{
|
||||
sb.Append(character);
|
||||
continue;
|
||||
|
||||
@@ -7,6 +7,7 @@ using Content.Server._White.AspectsSystem.Base;
|
||||
using Content.Server.GameTicking.Components;
|
||||
using Content.Shared.Mind.Components;
|
||||
using Robust.Shared.Random;
|
||||
using Content.Server._White.Accent.BomzhAccent;
|
||||
|
||||
namespace Content.Server._White.AspectsSystem.Aspects;
|
||||
|
||||
@@ -69,6 +70,8 @@ public sealed class RandomAccentAspect : AspectSystem<RandomAccentAspectComponen
|
||||
Moth,
|
||||
French,
|
||||
Gnome,
|
||||
Bomzh,
|
||||
Frontallisp
|
||||
}
|
||||
|
||||
private void ApplyRandomAccent(EntityUid uid)
|
||||
@@ -100,7 +103,7 @@ public sealed class RandomAccentAspect : AspectSystem<RandomAccentAspectComponen
|
||||
case AccentType.Pirate:
|
||||
EntityManager.EnsureComponent<PirateAccentComponent>(uid);
|
||||
break;
|
||||
case AccentType.Russian:
|
||||
case AccentType.Russian: // Untranslated
|
||||
EntityManager.EnsureComponent<RussianAccentComponent>(uid);
|
||||
break;
|
||||
case AccentType.OwO:
|
||||
@@ -127,12 +130,18 @@ public sealed class RandomAccentAspect : AspectSystem<RandomAccentAspectComponen
|
||||
case AccentType.Moth:
|
||||
EntityManager.EnsureComponent<MothAccentComponent>(uid);
|
||||
break;
|
||||
case AccentType.French:
|
||||
case AccentType.French: // Untranslated
|
||||
EntityManager.EnsureComponent<FrenchAccentComponent>(uid);
|
||||
break;
|
||||
case AccentType.Gnome:
|
||||
EntityManager.EnsureComponent<GnomeAccentComponent>(uid);
|
||||
break;
|
||||
case AccentType.Bomzh:
|
||||
EntityManager.EnsureComponent<BomzhAccentComponent>(uid);
|
||||
break;
|
||||
case AccentType.Frontallisp:
|
||||
EntityManager.EnsureComponent<FrontalLispComponent>(uid);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -72,8 +72,16 @@ public sealed class ERTRecruitmentRule : StationEventSystem<ERTRecruitmentRuleCo
|
||||
{
|
||||
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);
|
||||
_adminLogger.Add(LogType.EventStarted, LogImpact.High, $"ERT Declined - Event disabled");
|
||||
return;
|
||||
@@ -82,6 +90,7 @@ public sealed class ERTRecruitmentRule : StationEventSystem<ERTRecruitmentRuleCo
|
||||
if (_recruitment.GetEventSpawners(ERTRecruitmentRuleComponent.EventName).Count() < component.MinPlayers)
|
||||
{
|
||||
DeclineERT(component.TargetStation.Value);
|
||||
ForceEndSelf(uid, gameRule);
|
||||
_adminLogger.Add(LogType.EventStarted, LogImpact.High, $"ERT Declined - Not enough spawners");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1,23 +1,4 @@
|
||||
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
|
||||
changes:
|
||||
- message: "\u041D\u0438\u0447\u0435\u0433\u043E. \u041C\u0435\u043D\u044C\u0448\
|
||||
@@ -8916,3 +8897,36 @@
|
||||
id: 655
|
||||
time: '2025-01-08T19:42:41.0000000+00:00'
|
||||
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
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
ent-airlockExternal = { ent-AirlockExternal }
|
||||
.desc = { ent-AirlockExternal.desc }
|
||||
|
||||
ent-airlockExternalGlass = стеклянный внешний шлюз
|
||||
.desc = { ent-airlockExternal.desc}
|
||||
@@ -16,5 +16,5 @@ ent-BoxShotgunPractice = коробка ружейных патронов (уч
|
||||
.desc = Полная коробка учебных ружейных патронов.
|
||||
ent-BoxShellTranquilizer = коробка ружейных патронов (транквилизаторы)
|
||||
.desc = Полная коробка ружейных патронов-транквилизаторов.
|
||||
ent-BoxRubberShot = коробка ружейных патронов (резиновые).
|
||||
ent-BoxRubberShot = коробка ружейных патронов (резиновые)
|
||||
.desc = Полная коробка резиновых ружейных патронов.
|
||||
|
||||
@@ -108,6 +108,11 @@
|
||||
- type: Sprite
|
||||
sprite: Structures/Doors/Airlocks/Standard/external.rsi
|
||||
state: "assembly"
|
||||
- type: Construction ## WD edit
|
||||
graph: Airlock
|
||||
node: externalAssembly
|
||||
containers:
|
||||
- board
|
||||
|
||||
- type: entity
|
||||
parent: AirlockAssembly
|
||||
@@ -117,6 +122,11 @@
|
||||
- type: Sprite
|
||||
sprite: Structures/Doors/Airlocks/Glass/external.rsi
|
||||
state: "assembly"
|
||||
- type: Construction ## WD edit
|
||||
graph: Airlock
|
||||
node: externalAssemblyGlass
|
||||
containers:
|
||||
- board
|
||||
|
||||
#Public (Glass Airlock)
|
||||
- type: entity
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
- type: PaintableAirlock
|
||||
group: External
|
||||
department: null
|
||||
- type: Construction ## WD edit
|
||||
graph: Airlock
|
||||
node: external
|
||||
|
||||
- type: entity
|
||||
parent: AirlockExternal
|
||||
@@ -34,3 +37,6 @@
|
||||
sprite: Structures/Doors/Airlocks/Glass/external.rsi
|
||||
- type: PaintableAirlock
|
||||
group: ExternalGlass
|
||||
- type: Construction ## WD edit
|
||||
graph: Airlock
|
||||
node: externalGlass
|
||||
|
||||
@@ -77,6 +77,15 @@
|
||||
- material: ReinforcedGlass
|
||||
amount: 1
|
||||
doAfter: 2
|
||||
## WD edit start
|
||||
- to: externalAssembly
|
||||
conditions:
|
||||
- !type:EntityAnchored {}
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
doAfter: 2
|
||||
## WD edit end
|
||||
- to: wired
|
||||
conditions:
|
||||
- !type:EntityAnchored {}
|
||||
@@ -114,6 +123,55 @@
|
||||
- tool: Prying
|
||||
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
|
||||
- node: glassAirlock
|
||||
entity: AirlockGlass
|
||||
@@ -154,6 +212,23 @@
|
||||
amount: 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
|
||||
- node: airlock
|
||||
entity: Airlock
|
||||
@@ -194,6 +269,23 @@
|
||||
amount: 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
|
||||
- node: highSecDoor
|
||||
actions:
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
sprite: _Honk/Objects/Weapons/Guns/LMGs/klmg-icons.rsi
|
||||
state: icon
|
||||
product: CrateArmoryKLMG
|
||||
cost: 10000
|
||||
cost: 14000
|
||||
category: cargoproduct-category-name-armory
|
||||
group: market
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user