Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
19c7da5
Добавление SCP-208 "Бес"
666XxttimurkaxX666 Jun 17, 2026
0e589a6
р
666XxttimurkaxX666 Jun 17, 2026
3079199
Добавление SCP 007 и SCP 527
666XxttimurkaxX666 Jun 30, 2026
6f139d5
у
666XxttimurkaxX666 Jun 30, 2026
b7503da
f
666XxttimurkaxX666 Jun 30, 2026
64170d5
Update scp527.yml
666XxttimurkaxX666 Jun 30, 2026
aa19515
делаем более человечным
666XxttimurkaxX666 Jun 30, 2026
63f3553
они тоже боятся
666XxttimurkaxX666 Jun 30, 2026
005791f
Update scp208.yml
666XxttimurkaxX666 Jun 30, 2026
b862210
у
666XxttimurkaxX666 Jun 30, 2026
74d755e
Update base_scp.yml
666XxttimurkaxX666 Jun 30, 2026
c2ba3ea
Update base_scp.yml
666XxttimurkaxX666 Jun 30, 2026
4c8206b
Merge branch 'master' into add-scp-208
666XxttimurkaxX666 Jul 1, 2026
2105741
Merge branch 'master' into add-scp-527-scp-007
666XxttimurkaxX666 Jul 1, 2026
d6c9b66
респрайт
666XxttimurkaxX666 Jul 3, 2026
3378ba5
респрайт рыбы
666XxttimurkaxX666 Jul 3, 2026
e44e458
Merge branch 'master' into add-scp-527-scp-007
WardexOfficial Jul 3, 2026
69ae784
Merge branch 'master' into add-scp-208
WardexOfficial Jul 3, 2026
bbfc8eb
Merge branch 'master' into add-scp-527-scp-007
WardexOfficial Jul 5, 2026
641fdad
Merge branch 'master' into add-scp-208
666XxttimurkaxX666 Jul 5, 2026
1b03f3f
Merge branch 'master' into add-scp-527-scp-007
666XxttimurkaxX666 Jul 25, 2026
d565981
Merge branch 'master' into add-scp-208
666XxttimurkaxX666 Jul 25, 2026
200eb61
Merge branch 'master' into add-scp-527-scp-007
666XxttimurkaxX666 Jul 26, 2026
aca5f1f
добавление SCP-2020
666XxttimurkaxX666 Aug 14, 2026
630e6c8
Merge branch 'master' into add-scp-527-scp-007
666XxttimurkaxX666 Aug 14, 2026
f23a992
Добавление SCP-4449
666XxttimurkaxX666 Aug 15, 2026
4f76055
забыл ттс поменять
666XxttimurkaxX666 Aug 15, 2026
058649d
добавление SCP-492
666XxttimurkaxX666 Aug 15, 2026
0bfd791
Update scp4449.yml
666XxttimurkaxX666 Aug 15, 2026
28d660e
Update scp4449.yml
666XxttimurkaxX666 Aug 16, 2026
9cd57f9
Merge branch 'add-scp-208' into add-scp-527-scp-007
666XxttimurkaxX666 Aug 17, 2026
87800ea
Добавление SCP-208
666XxttimurkaxX666 Aug 17, 2026
2316ea3
Merge branch 'master' into add-scp-527-scp-007
666XxttimurkaxX666 Aug 22, 2026
1be4a77
e
666XxttimurkaxX666 Aug 22, 2026
5e57be5
208
666XxttimurkaxX666 Aug 22, 2026
cadb562
Update scp208.yml
666XxttimurkaxX666 Aug 22, 2026
451842a
Update scp208.yml
666XxttimurkaxX666 Aug 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions Content.Shared/_Scp/Scp208/Scp208Component.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using Content.Shared.Damage;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;

namespace Content.Shared._Scp.Scp208;

[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class Scp208Component : Component
{
[DataField]
public EntProtoId ActionHealId = "Scp208Heal";

[DataField(required: true)]
public DamageSpecifier Damage = default!;

[DataField]
public bool StopBleeding = true;

[DataField]
public float BloodlossModifier = -1.0f;

[DataField]
public TimeSpan Delay = TimeSpan.FromSeconds(3f);

[DataField]
public SoundSpecifier? HealingBeginSound;

[DataField]
public SoundSpecifier? HealingEndSound;

[ViewVariables, AutoNetworkedField]
public EntityUid? Action;
}
159 changes: 159 additions & 0 deletions Content.Shared/_Scp/Scp208/SharedScp208System.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
using Content.Shared.Actions;
using Content.Shared.DoAfter;
using Content.Shared.Popups;
using Content.Shared.Standing;
using Content.Shared.Body.Systems;
using Content.Shared.Body.Components;
using Content.Shared.FixedPoint;
using Content.Shared.IdentityManagement;
using Content.Shared.Mobs.Systems;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Serialization;
using Content.Shared.Damage.Components;
using Content.Shared.Damage.Systems;

namespace Content.Shared._Scp.Scp208;

public sealed class SharedScp208System : EntitySystem
{
[Dependency] private readonly SharedActionsSystem _actions = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedDoAfterSystem _doAfter = default!;
[Dependency] private readonly DamageableSystem _damageable = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly SharedBloodstreamSystem _bloodstream = default!;
[Dependency] private readonly StandingStateSystem _standing = default!;
[Dependency] private readonly MobStateSystem _mobState = default!;

public override void Initialize()
{
base.Initialize();

SubscribeLocalEvent<Scp208Component, ComponentStartup>(OnStartup);
SubscribeLocalEvent<Scp208Component, ComponentShutdown>(OnShutdown);

SubscribeLocalEvent<Scp208Component, Scp208HealTargetActionEvent>(OnHealAction);
SubscribeLocalEvent<Scp208Component, Scp208HealDoAfterEvent>(OnDoAfter);
}

private void OnStartup(Entity<Scp208Component> ent, ref ComponentStartup args)
{
_actions.AddAction(ent, ref ent.Comp.Action, ent.Comp.ActionHealId);
Dirty(ent);
}

private void OnShutdown(Entity<Scp208Component> ent, ref ComponentShutdown args)
{
_actions.RemoveAction(ent.Owner, ent.Comp.Action);
}

private void OnHealAction(Entity<Scp208Component> ent, ref Scp208HealTargetActionEvent args)
{
if (args.Handled)
return;

if (!CanHeal(ent, args.Target, out var errorMessage))
{
if (errorMessage != null)
_popup.PopupClient(errorMessage, ent, ent);

return;
}

args.Handled = TryStartHealing(ent, args.Target);
}

private bool TryStartHealing(Entity<Scp208Component> ent, EntityUid target)
{
_audio.PlayPredicted(ent.Comp.HealingBeginSound, ent, ent);

var doAfterArgs = new DoAfterArgs(EntityManager, ent, ent.Comp.Delay, new Scp208HealDoAfterEvent(), ent, target: target)
{
BreakOnMove = true,
NeedHand = false,
};

return _doAfter.TryStartDoAfter(doAfterArgs);
}

private void OnDoAfter(Entity<Scp208Component> ent, ref Scp208HealDoAfterEvent args)
{
if (args.Cancelled || args.Handled || args.Target is not { } target)
return;

if (!TryComp<DamageableComponent>(target, out var damageable))
return;

_damageable.TryChangeDamage(target, ent.Comp.Damage, true, origin: ent);

if (ent.Comp.StopBleeding && TryComp<BloodstreamComponent>(target, out var bloodstream))
{
var wasBleeding = bloodstream.BleedAmount > 0;
_bloodstream.TryModifyBleedAmount((target, bloodstream), ent.Comp.BloodlossModifier);

if (wasBleeding && bloodstream.BleedAmount <= 0)
{
var popup = ent.Owner == target
? Loc.GetString("medical-item-stop-bleeding-self")
: Loc.GetString("medical-item-stop-bleeding", ("target", Identity.Entity(target, EntityManager)));
_popup.PopupClient(popup, target, ent);
}
}

_audio.PlayPredicted(ent.Comp.HealingEndSound, ent, ent);

if (_mobState.IsAlive(target) && HasDamageToHeal(target, damageable, ent.Comp))
TryStartHealing(ent, target);

args.Handled = true;
}

private bool CanHeal(Entity<Scp208Component> ent, EntityUid target, out string? errorMessage)
{
errorMessage = null;

if (_standing.IsDown(ent.Owner))
return false;

if (!TryComp<DamageableComponent>(target, out var damageable))
return false;

if (!_mobState.IsAlive(target))
return false;

if (!HasDamageToHeal(target, damageable, ent.Comp))
return false;

return true;
}

private bool HasDamageToHeal(EntityUid target, DamageableComponent damageable, Scp208Component scp208)
{
var damage = _damageable.GetAllDamage((target, damageable));
foreach (var (type, _) in scp208.Damage.DamageDict)
{
if (damage.DamageDict.TryGetValue(type, out var currentDamage) &&
currentDamage > FixedPoint2.Zero)
{
return true;
}
}

if (scp208.StopBleeding && TryComp<BloodstreamComponent>(target, out var bloodstream))
{
if (bloodstream.BleedAmount > 0)
return true;
}

return false;
}
}

[Serializable, NetSerializable]
public sealed partial class Scp208HealDoAfterEvent : SimpleDoAfterEvent
{
}

public sealed partial class Scp208HealTargetActionEvent : EntityTargetActionEvent
{
}
4 changes: 4 additions & 0 deletions Resources/Locale/en-US/_prototypes/_scp/actions/scp208.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ent-Scp208Shield = Physical shield
.desc = You create a strong barrier right in front of your opponent.
ent-Scp208Heal = god's treatment
.desc = You focus on your healing ability and heal a specific person.
2 changes: 2 additions & 0 deletions Resources/Locale/en-US/_prototypes/_scp/actions/scp4449.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ent-ActionScp4449Jump = jump
.desc = You push yourself forward in the direction you are looking.
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,7 @@ ent-ScpDresserScientificServiceDirectorFilled = { ent-DresserResearchDirectorFil
ent-ScpDresserSquadLeaderFilled = { ent-DresserWardenFilled }
.suffix = { ent-DresserWardenFilled.suffix }
.desc = { ent-DresserWardenFilled.desc }

ent-ScpDresserScp208Filled = { ent-ScpDresser }
.suffix = SCP-208
.desc = { ent-ScpDresser.desc }
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ent-Scp208MilitaryClothing = military uniform
.desc = Green modern military uniform. It looks like it was made especially for someone.
.suffix = SCP-208
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ent-Scp007 = ???
Comment thread
666XxttimurkaxX666 marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ent-Scp2020 = ???
Comment thread
666XxttimurkaxX666 marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ent-Scp208 = ???
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ent-Scp4449 = ???
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ent-Scp492 = ???
Comment thread
666XxttimurkaxX666 marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ ent-Scp096Photo = strange photograph
.desc = A small photograph in which the contents are almost indistinguishable. You can barely recognize the outline of a humanoid silhouette.
ent-Scp019GlassShard = ceramic shard
.desc = Ceramic shard with recognizable ancient Greek style and decor.
ent-ScpDirtLump = lump of dirt
.desc = A small pile of soil.
ent-Scp012Paper = old paper
.desc = Yellowed piece of paper with bloody traces.
ent-Scp106Cloth = rotten cloth
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
ent-Scp527PaperCollection = collection paper
.desc = A congratulatory paper about the discovery of a certain "Little Mister".

ent-Scp1508PaperFlyer = children's flyer
.desc = An advertisement for "Mikey the Janitor-Friend©". Judging by the text, this thing will clean up after you.
Original file line number Diff line number Diff line change
Expand Up @@ -188,14 +188,20 @@ ent-PosterSCP173 = "SCP-173" poster
.desc = Information poster for SCP-173.
ent-PosterScp207 = "SCP-207" poster
.desc = Information poster for SCP-207.
ent-PosterScp208 = "SCP-208" poster
.desc = Information poster for SCP-208.
ent-PosterSCP247 = "SCP-247" poster
.desc = Information poster for SCP-247.
ent-PosterScp330 = "SCP-330" poster
.desc = Information poster for SCP-330.
ent-PosterSCP457 = "SCP-457" poster
.desc = Information poster for SCP-457.
ent-PosterSCP492 = "SCP-492" poster
.desc = Information poster for SCP-492.
ent-PosterSCP500 = "SCP-500" poster
.desc = Information poster for SCP-500.
ent-PosterSCP527 = "SCP-527" poster
.desc = Information poster for SCP-527.
Comment thread
666XxttimurkaxX666 marked this conversation as resolved.
ent-PosterSCP969 = "SCP-969" poster
.desc = Information poster for SCP-969.
ent-PosterSCP999 = "SCP-999" poster
Expand All @@ -206,8 +212,12 @@ ent-PosterSCP612 = "SCP-612" poster
.desc = Information poster for SCP-612.
ent-PosterSCP1589 = "SCP-1589" poster
.desc = Information poster for SCP-1589.
ent-PosterSCP2020 = "SCP-2020" poster
.desc = Information poster for SCP-2020.
ent-PosterSCP2908 = "SCP-2908" poster
.desc = Information poster for SCP-2908.
ent-PosterSCP4449 = "SCP-4449" poster
.desc = Information poster for SCP-4449.
ent-PosterWideBase = { ent-PosterBase }
.desc = { ent-PosterBase.desc }
ent-PosterScp173Wide = "Staring Contest" poster
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,16 @@ ent-SignDirectionalScp173 = "SCP-173" sign
.desc = { ent-BaseSignDirectionalScp.desc }
ent-SignDirectionalScp207 = "SCP-207" sign
.desc = { ent-BaseSignDirectionalScp.desc }
ent-SignDirectionalScp208 = "SCP-208" sign
.desc = { ent-BaseSignDirectionalScp.desc }
ent-SignDirectionalScp330 = "SCP-330" sign
.desc = { ent-BaseSignDirectionalScp.desc }
ent-SignDirectionalScp492 = "SCP-492" sign
.desc = { ent-BaseSignDirectionalScp.desc }
ent-SignDirectionalScp500 = "SCP-500" sign
.desc = { ent-BaseSignDirectionalScp.desc }
ent-SignDirectionalScp527 = "SCP-527" sign
.desc = { ent-BaseSignDirectionalScp.desc }
ent-SignDirectionalScp612 = "SCP-612" sign
.desc = { ent-BaseSignDirectionalScp.desc }
ent-SignDirectionalScp939 = "SCP-939" sign
Expand All @@ -30,8 +36,12 @@ ent-SignDirectionalScp969 = "SCP-969" sign
.desc = { ent-BaseSignDirectionalScp.desc }
ent-SignDirectionalScp999 = "SCP-999" sign
.desc = { ent-BaseSignDirectionalScp.desc }
ent-SignDirectionalScp2020 = "SCP-2020" sign
.desc = { ent-BaseSignDirectionalScp.desc }
ent-SignDirectionalScp2908 = "SCP-2908" sign
.desc = { ent-BaseSignDirectionalScp.desc }
ent-SignDirectionalScp4449 = "SCP-4449" sign
.desc = { ent-BaseSignDirectionalScp.desc }
ent-SignDirectionalScpClassD = "Class D Block" sign
.desc = { ent-BaseSignDirectionalScp.desc }
ent-SignDirectionalScpHeavyContainmentZone = "Heavy Containment Zone" sign
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
info-paper-scp-527-collection =
Wow! You've just found yourself your very own Little Mister, a limited edition collection from Dr. Wondertainment!

Find them all and become Mr. Collector!!

01. Mr. Chameleon
02. Mr. Headless
03. Mr. Laugh
04. Mr. Forgetful
05. Mr. Shapey
06. Mr. Soap
07. Mr. Hungry
08. Mr. Brass
09. Mr. Hot
10. Ms. Sweetie
11. Mr. Life and Mr. Death
12. Mr. Fish <
Comment thread
666XxttimurkaxX666 marked this conversation as resolved.
13. Mr. Moon
14. Mr. Redd (discontinued)
15. Mr. Money
16. Mr. Lost
17. Mr. Lie
18. Mr. Mad
19. Mr. Scary
20. Mr. Stripes

info-paper-scp-1508-flyer =
HEY, KIDDOES!
Has doing chores around the house turned into a total drag?
Does your mom yell at you so much to get your room cleaned that you’ve started calling her a witch?
Well, my friends, now a brand-new buddy from DR. WONDERTAINMENT©, creator of General Beep and Robo-Dude, is here to save the day!! His name is Mikey the Janitor-Friend©! He can do everything your mom and dad want you to do, while you can just keep on having fun with your pals!
And while you’re slacking off, check out the all-new WONDER-CATA-LOG-TABULOUS©-2003! With our latest toys, it’s the best way to spend all that newfound free time!
Batteries not included. If your Mikey the Janitor-Friend© begins to play, shirk work, draw funny pictures, or simply performs poorly, send him right back to us for reconditioning! Just pay for shipping and handling.
12 changes: 12 additions & 0 deletions Resources/Locale/en-US/_strings/_scp/roles/scp.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,23 @@ job-description-scp999 = A friendly, gelatinous entity that causes boundless joy
job-name-scp3288-alpha = SCP-3288-Alpha "The Aristocrats"
job-description-scp3288-alpha = A luxurious giant in the rags of the Habsburgs former glory. Arrogant, cruel, and ready to devour anyone they deem an "inferior creature."

job-name-scp007 = SCP-007 «Abdominal Planet»
job-description-scp007 = A good young man with a replica of the Earth in his stomach. He is completely indifferent to this.
job-name-scp0192 = SCP-019-2 «The Monster Pot»
job-description-scp0192 = An extremely aggressive creature that emerges from SCP-019.
job-name-scp208 = SCP-208 «Bes»
job-description-scp208 = A kind-hearted Egyptian deity who endlessly wishes only goodness and happiness for people.
job-name-scp492 = SCP-492 «Animated Cloth Dummy»
job-description-scp492 = A hardworking animated doll who used to be a prop in an abandoned pirate-themed amusement park.
job-name-scp527 = SCP-527 «Mr. Fish»
job-description-scp527 = Mr. Fish - one of the Little Misters in Dr. Wondertainment's collection. He has a fish head instead of a human head... That's all.
Comment thread
666XxttimurkaxX666 marked this conversation as resolved.
job-name-scp1589 = SCP-1589 «Roman Anthropophagus»
job-description-scp1589 = An obedient and calm giant who carries out any orders.
job-name-scp2020 = SCP-2020 «Cliche, Right?»
job-description-scp2020 = A talkative and tiresome green humanoid with obvious visual similarities to the «Greys».
job-name-scp3288 = SCP-3288 "The Aristocrats"
job-description-scp3288-servant = A lower-class individual of the realm, bound to obey their masters. Organize feasts and balls, cook human flesh, and entertain the aristocrats.
job-description-scp3288-knight = A defender of the Habsburg dynasty. Patrol the territory, protect purebred individuals, and ruthlessly destroy outsiders.
job-description-scp3288-aristocrat = An influential mutant with sadistic tendencies. Devour human flesh, issue orders to servants, and enjoy yourself.
job-name-scp4449 = SCP-4449 «Daisuke Kawamoto, Legendary Slayer of Evil»
job-description-scp4449 = A samurai scarecrow that embodies the spirit of a brave Japanese warrior.
2 changes: 2 additions & 0 deletions Resources/Locale/en-US/_strings/_scp/scp/scp007.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ghost-role-information-scp007-name = SCP-007
ghost-role-information-scp007-description = You are an abnormal person with a miniature copy of the Earth in the stomach area.
2 changes: 2 additions & 0 deletions Resources/Locale/en-US/_strings/_scp/scp/scp2020.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ghost-role-information-scp2020-name = SCP-2020
ghost-role-information-scp2020-description = You are a talkative and carefree anomalous object who intends to write science fiction.
2 changes: 2 additions & 0 deletions Resources/Locale/en-US/_strings/_scp/scp/scp208.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ghost-role-information-scp208-name = SCP-208
ghost-role-information-scp208-description = You are a friendly and peace-loving anomalous object, unquestioningly warm-hearted and loyal to people.
2 changes: 2 additions & 0 deletions Resources/Locale/en-US/_strings/_scp/scp/scp4449.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ghost-role-information-scp4449-name = SCP-4449
ghost-role-information-scp4449-description = You are a brave and benevolent anomalous object who wants to protect people.
2 changes: 2 additions & 0 deletions Resources/Locale/en-US/_strings/_scp/scp/scp492.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ghost-role-information-scp492-name = SCP-492
ghost-role-information-scp492-description = You are a hard-working, intelligent object with a reliable character and a rag body.
2 changes: 2 additions & 0 deletions Resources/Locale/en-US/_strings/_scp/scp/scp527.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ghost-role-information-scp527-name = SCP-527
ghost-role-information-scp527-description = You are an unpretentious intelligent object, with no special features except for your fish head.
4 changes: 4 additions & 0 deletions Resources/Locale/ru-RU/_prototypes/_scp/actions/scp208.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ent-Scp208Shield = Физический щит
.desc = Вы создаете крепкий барьер прямо перед носом противника.
ent-Scp208Heal = божье лечение
.desc = Вы сосредотачиваете свою лечебную способность на конкретном человеке.
2 changes: 2 additions & 0 deletions Resources/Locale/ru-RU/_prototypes/_scp/actions/scp4449.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ent-ActionScp4449Jump = прыжок
.desc = Вы отталкиваетесь вперед в направлении, куда смотрите.
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,7 @@ ent-ScpDresserScientificServiceDirectorFilled = { ent-DresserResearchDirectorFil
ent-ScpDresserSquadLeaderFilled = { ent-DresserWardenFilled }
.suffix = { ent-DresserWardenFilled.suffix }
.desc = { ent-DresserWardenFilled.desc }

ent-ScpDresserScp208Filled = { ent-ScpDresser }
.suffix = SCP-208
.desc = { ent-ScpDresser.desc }
Loading
Loading