Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
47 changes: 47 additions & 0 deletions Content.Goobstation.Server/_Slon/Spider/WebPassageActionSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// SPDX-FileCopyrightText: 2025 LuciferEOS <stepanteliatnik2022@gmail.com>
// SPDX-FileCopyrightText: 2025 ReserveBot <211949879+ReserveBot@users.noreply.github.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

using Content.Goobstation.Shared._Slon.Spider;
using Content.Server.DoAfter;
using Content.Shared.DoAfter;
using Robust.Shared.Serialization;

namespace Content.Goobstation.Server._Slon.Spider;

public sealed class WebPassageActionSystem : SharedWebPassageActionSystem
{
[Dependency] private readonly DoAfterSystem _doAfter = default!;

public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<WebPassageActionComponent, WebPassageActionEvent>(OnAction);
SubscribeLocalEvent<WebPassageActionComponent, WebPassageDoAfterEvent>(OnDoAfter);
}

private void OnAction(EntityUid uid, WebPassageActionComponent comp, WebPassageActionEvent args)
{
var ev = new WebPassageDoAfterEvent();
var doAfterArgs = new DoAfterArgs(EntityManager, uid, TimeSpan.FromSeconds(comp.DoAfter), ev, uid)
{
BreakOnMove = true,
BreakOnDamage = true
};

_doAfter.TryStartDoAfter(doAfterArgs);
}

private void OnDoAfter(EntityUid uid, WebPassageActionComponent comp, WebPassageDoAfterEvent ev)
{
if (ev.Cancelled
|| ev.Handled)
return;

var coords = Transform(uid).Coordinates;
EntityManager.SpawnEntity(comp.SpawnId, coords);
ev.Handled = true;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// SPDX-FileCopyrightText: 2025 LuciferEOS <stepanteliatnik2022@gmail.com>
// SPDX-FileCopyrightText: 2025 ReserveBot <211949879+ReserveBot@users.noreply.github.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

using Content.Shared.Actions;

namespace Content.Goobstation.Shared._Slon.Spider;

public abstract class SharedWebPassageActionSystem : EntitySystem
{
[Dependency] private readonly SharedActionsSystem _action = default!;

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

SubscribeLocalEvent<WebPassageActionComponent, MapInitEvent>(OnInit);
}

private void OnInit(EntityUid uid, WebPassageActionComponent component, MapInitEvent args)
{
_action.AddAction(uid, ref component.Action, component.WebAction, uid);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// SPDX-FileCopyrightText: 2025 LuciferEOS <stepanteliatnik2022@gmail.com>
// SPDX-FileCopyrightText: 2025 ReserveBot <211949879+ReserveBot@users.noreply.github.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

using Content.Shared.Actions;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;


namespace Content.Goobstation.Shared._Slon.Spider
{
[RegisterComponent]
public sealed partial class WebPassageActionComponent : Component
{
[DataField(customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
public string SpawnId = "SpiderWebPassage";

[DataField(customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
public string WebAction = "ActionWebPassage";

[DataField] public EntityUid? Action;
[DataField] public float DoAfter { get; set; } = 10f;
}

[Serializable]
public sealed partial class WebPassageActionEvent : InstantActionEvent
{
}
}
12 changes: 12 additions & 0 deletions Content.Goobstation.Shared/_Slon/Spider/WebPassageDoAfterEvent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// SPDX-FileCopyrightText: 2025 LuciferEOS <stepanteliatnik2022@gmail.com>
// SPDX-FileCopyrightText: 2025 ReserveBot <211949879+ReserveBot@users.noreply.github.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

using Content.Shared.DoAfter;
using Robust.Shared.Serialization;

namespace Content.Goobstation.Shared._Slon.Spider;

[Serializable, NetSerializable]
public sealed partial class WebPassageDoAfterEvent : SimpleDoAfterEvent;
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ collective-mind-mousemind = Piepmind
collective-mind-dronemind = Dronemind
collective-mind-empathy = Empathy
collective-mind-bingle = Binglemind
collective-mind-spider = Spidermind
3 changes: 3 additions & 0 deletions Resources/Locale/en-US/_Slon/ghost/roles/maintspider.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ghost-role-information-maint-spider-name = выращенный паук-подсобник
ghost-role-information-maint-spider-desc = Ешь, расти, твори и разрушай. Ты — настоящая машина смерти, откладывай яйца и производи ещё больше пауков. Используйте +i, чтобы общаться с другими пауками.
ghost-role-information-maint-spider-rules = Вы — [color={role-type-team-antagonist-color}][bold]{role-type-team-antagonist-name}[/bold][/color], сотрудничаете со всеми остальными пауками-обслуживателями, чтобы размножаться.
27 changes: 23 additions & 4 deletions Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,6 @@
# SPDX-FileCopyrightText: 2024 Mr. 27 <45323883+Dutch-VanDerLinde@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 MureixloI <132683811+MureixloI@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 NakataRin <45946146+NakataRin@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 OrangeMoronage9622 <whyteterry0092@gmail.com>
# SPDX-FileCopyrightText: 2024 PJBot <pieterjan.briers+bot@gmail.com>
# SPDX-FileCopyrightText: 2024 Partmedia <kevinz5000@gmail.com>
Expand Down Expand Up @@ -201,7 +200,6 @@
# SPDX-FileCopyrightText: 2024 nicho <nicholasnewsom577@gmail.com>
# SPDX-FileCopyrightText: 2024 nikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 no <165581243+pissdemon@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 osjarw <62134478+osjarw@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 pigeonpeas <147350443+pigeonpeas@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 plykiya <plykiya@protonmail.com>
# SPDX-FileCopyrightText: 2024 pocl v <24708225+Pinkbat5@users.noreply.github.com>
Expand Down Expand Up @@ -236,24 +234,32 @@
# SPDX-FileCopyrightText: 2025 GoobBot <uristmchands@proton.me>
# SPDX-FileCopyrightText: 2025 Ilya246 <57039557+Ilya246@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Ilya246 <ilyukarno@gmail.com>
# SPDX-FileCopyrightText: 2025 LuciferEOS <stepanteliatnik2022@gmail.com>
# SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 MilenVolf <63782763+MilenVolf@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Milon <plmilonpl@gmail.com>
# SPDX-FileCopyrightText: 2025 NazrinNya <137837419+NazrinNya@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Piras314 <p1r4s@proton.me>
# SPDX-FileCopyrightText: 2025 Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 ReserveBot <211949879+ReserveBot@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Rinary <72972221+Rinary1@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 SX-7 <92227810+SX-7@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 SX-7 <sn1.test.preria.2002@gmail.com>
# SPDX-FileCopyrightText: 2025 Solstice <solsticeofthewinter@gmail.com>
# SPDX-FileCopyrightText: 2025 SolsticeOfTheWinter <solsticeofthewinter@gmail.com>
# SPDX-FileCopyrightText: 2025 Sparlight <twiksparlight@gmail.com>
# SPDX-FileCopyrightText: 2025 Spatison <137375981+Spatison@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Svarshik <96281939+lexaSvarshik@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Tayrtahn <tayrtahn@gmail.com>
# SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Tim <timfalken@hotmail.com>
# SPDX-FileCopyrightText: 2025 Timfa <timfalken@hotmail.com>
# SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Winkarst <74284083+Winkarst-cpu@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Zokkie <6126135+Zokkie@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 archee1 <archee3@hotmail.co.uk>
# SPDX-FileCopyrightText: 2025 cheetah1984 <152602630+cheetah1984@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 cheetah1984 <davidc71114@gmail.com>
# SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Expand All @@ -265,6 +271,10 @@
# SPDX-FileCopyrightText: 2025 gluesniffler <linebarrelerenthusiast@gmail.com>
# SPDX-FileCopyrightText: 2025 grub <unalterableness@gmail.com>
# SPDX-FileCopyrightText: 2025 hyperDelegate <zachary1064@gmail.com>
# SPDX-FileCopyrightText: 2025 kosticia <kosticia46@gmail.com>
# SPDX-FileCopyrightText: 2025 mubururu_ <139181059+muburu@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 nazrin <tikufaev@outlook.com>
# SPDX-FileCopyrightText: 2025 osjarw <62134478+osjarw@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 shityaml <unalterableness@gmail.com>
# SPDX-FileCopyrightText: 2025 slarticodefast <161409025+slarticodefast@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 ss14-Starlight <ss14-Starlight@outlook.com>
Expand Down Expand Up @@ -2805,8 +2815,12 @@
- type: MeleeChemicalInjector
transferAmount: 0.75
solution: melee
- type: ReplacementAccent
accent: xeno
#- type: LanguageKnowledge # Einstein Engines - Language
# once upstream hits (the one that has languages) - uncomment.
# speaks:
# - Xeno
# understands:
#- Xeno
- type: InteractionPopup
successChance: 0.5
interactSuccessString: petting-success-tarantula
Expand Down Expand Up @@ -2857,6 +2871,11 @@
color: "#808080"
activateSound: null
deactivateSound: null
- type: CollectiveMind # Slon
defaultChannel: Spidermind
respectAccents: true
channels:
- Spidermind

- type: entity
parent: MobSpiderBase
Expand Down
9 changes: 9 additions & 0 deletions Resources/Prototypes/GameRules/events.yml
Original file line number Diff line number Diff line change
Expand Up @@ -122,23 +122,31 @@
# SPDX-FileCopyrightText: 2025 GoobBot <uristmchands@proton.me>
# SPDX-FileCopyrightText: 2025 Ilya246 <57039557+Ilya246@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Ilya246 <ilyukarno@gmail.com>
# SPDX-FileCopyrightText: 2025 Khundo <141230574+korguzenok@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 LuciferEOS <stepanteliatnik2022@gmail.com>
# SPDX-FileCopyrightText: 2025 MilenVolf <63782763+MilenVolf@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 NazrinNya <137837419+NazrinNya@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Piras314 <p1r4s@proton.me>
# SPDX-FileCopyrightText: 2025 PunishedJoe <PunishedJoeseph@proton.me>
# SPDX-FileCopyrightText: 2025 ReserveBot <211949879+ReserveBot@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Roudenn <romabond091@gmail.com>
# SPDX-FileCopyrightText: 2025 SX-7 <92227810+SX-7@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 SX-7 <sn1.test.preria.2002@gmail.com>
# SPDX-FileCopyrightText: 2025 Svarshik <96281939+lexaSvarshik@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Tayrtahn <tayrtahn@gmail.com>
# SPDX-FileCopyrightText: 2025 Ted Lukin <66275205+pheenty@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Velcroboy <107660393+IamVelcroboy@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 echotry <48294642+echotry-ss14@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 echotry <xippl1@mail.ru>
# SPDX-FileCopyrightText: 2025 fishbait <gnesse@gmail.com>
# SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 gus <august.eymann@gmail.com>
# SPDX-FileCopyrightText: 2025 keronshb <54602815+keronshb@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 nazrin <tikufaev@outlook.com>
# SPDX-FileCopyrightText: 2025 slarticodefast <161409025+slarticodefast@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 unknown <Administrator@DESKTOP-PMRIVVA.kommune.indresogn.no>
#
Expand Down Expand Up @@ -174,6 +182,7 @@
- id: MothroachSpawn # DeltaV
- id: XenoVents # DeltaV
- id: DerelictCyborgSyndicateSpawn # Goobstation - usually calm
- id: MaintenanceSpiderSpawn # Slon

- type: entityTable
id: BasicAntagEventsTable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,13 @@
# SPDX-FileCopyrightText: 2025 Ilya246 <57039557+Ilya246@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Ilya246 <ilyukarno@gmail.com>
# SPDX-FileCopyrightText: 2025 IrisTheAmped <iristheamped@gmail.com>
# SPDX-FileCopyrightText: 2025 LuciferEOS <stepanteliatnik2022@gmail.com>
# SPDX-FileCopyrightText: 2025 NazrinNya <137837419+NazrinNya@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 ReserveBot <211949879+ReserveBot@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Rinary <72972221+Rinary1@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Svarshik <96281939+lexaSvarshik@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 nazrin <tikufaev@outlook.com>
#
# SPDX-License-Identifier: AGPL-3.0-or-later

Expand Down Expand Up @@ -75,3 +80,9 @@
name: collective-mind-bingle
keycode: 'w'
color: "#386a9b"

- type: collectiveMind # slon
id: Spidermind
name: collective-mind-spider
keycode: 'i'
color: "#8C8C8C"
26 changes: 26 additions & 0 deletions Resources/Prototypes/_Goobstation/GameRules/events.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@
# SPDX-FileCopyrightText: 2025 GoobBot <uristmchands@proton.me>
# SPDX-FileCopyrightText: 2025 Ilya246 <57039557+Ilya246@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Ilya246 <ilyukarno@gmail.com>
# SPDX-FileCopyrightText: 2025 LuciferEOS <stepanteliatnik2022@gmail.com>
# SPDX-FileCopyrightText: 2025 ReserveBot <211949879+ReserveBot@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Rinary <72972221+Rinary1@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Solstice <solsticeofthewinter@gmail.com>
# SPDX-FileCopyrightText: 2025 Svarshik <96281939+lexaSvarshik@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 nazrin <tikufaev@outlook.com>
#
# SPDX-License-Identifier: AGPL-3.0-or-later

Expand Down Expand Up @@ -47,3 +51,25 @@
min: 1
max: 1
pickPlayer: false

- type: entity # slon
parent: BaseGameRule
id: MaintenanceSpiderSpawn
components:
- type: GameRule
chaosScore: 75 # less than the tarantula spawn because it spawns only 1 spider instead of a ton of tarantulas.
- type: StationEvent
weight: 2
startAnnouncement: station-event-vent-creatures-start-announcement
startAudio:
path: /Audio/Announcements/aliens.ogg
earliestStart: 10
minimumPlayers: 15
duration: 30
chaos:
Hostile: 10 # 1 not hostile spider...
Medical: 20
eventType: HostilesSpawn
- type: VentCrittersRule
table:
id: MobMaintSpider
15 changes: 15 additions & 0 deletions Resources/Prototypes/_Slon/Entities/Mobs/NPCs/eggspider.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# SPDX-FileCopyrightText: 2025 LuciferEOS <stepanteliatnik2022@gmail.com>
# SPDX-FileCopyrightText: 2025 ReserveBot <211949879+ReserveBot@users.noreply.github.com>
#
# SPDX-License-Identifier: AGPL-3.0-or-later

- type: entity
id: EggMaintSpiderFertilized
parent: EggSpiderFertilized
components:
- type: TimedSpawner
prototypes:
- MobMaintSpiderling
intervalSeconds: 60
minimumEntitiesSpawned: 1
maximumEntitiesSpawned: 1
Loading