Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Novakid #150

Closed
wants to merge 5 commits into from
Closed
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
31 changes: 31 additions & 0 deletions Content.Client/ADT/NovakidFeatures/NovakidFeaturesSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using Content.Shared.ADT.NovakidFeatures;
using Robust.Client.GameObjects;

namespace Content.Client.ADT.NovakidFeatures;
public sealed partial class NovakidFeaturesSystem : EntitySystem
{
[Dependency] private readonly IEntityManager _entityManager = default!;
[Dependency] private readonly PointLightSystem _lights = default!;
public override void Initialize()
{
base.Initialize();

SubscribeLocalEvent<NovakidGlowingComponent, ComponentInit>(OnEntityInit);
}
/// <summary>
/// Makes Novakid to glow with color of his skin — layer number 0 of SpriteComponent.
/// </summary>
/// <param name="uid">Novakid</param>
/// <param name="component">Компонент отвечающий за свечение новакида. Вообще-то говоря он нужен пока только для того, чтобы не пришлось перебирать сущности в поисках новакида.</param>
/// <param name="args"></param>
private void OnEntityInit(EntityUid uid, NovakidGlowingComponent component, ComponentInit args)
{
_entityManager.GetComponent<SpriteComponent>(uid).TryGetLayer(0, out var layer);

component.GlowingColor = _entityManager.GetComponent<SpriteComponent>(uid).Color;
if (layer == null) return;
_lights.SetColor(uid, layer.Color);
//_lights.SetEnergy(uid, 0.6f);
_entityManager.Dirty(_entityManager.GetComponent<SpriteComponent>(uid));
}
}
31 changes: 31 additions & 0 deletions Content.Server/ADT/Hemophilia/HemophiliaSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using Content.Server.Body.Components;
using Content.Shared.Traits;

namespace Content.Server.Hemophilia;

public sealed partial class HemophiliaSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();

SubscribeLocalEvent<HemophiliaComponent, MapInitEvent>(OnInitHemophilia);
SubscribeLocalEvent<HemophiliaComponent, ComponentShutdown>(OnShutdown);

}

private void OnInitHemophilia(EntityUid uid, HemophiliaComponent component, MapInitEvent args)
{
if (TryComp<BloodstreamComponent>(uid, out var bldcomp))
{
bldcomp.BleedReductionAmount *= component.Modifier;
}
}
private void OnShutdown(EntityUid uid, HemophiliaComponent component, ComponentShutdown args)
{
if (TryComp<BloodstreamComponent>(uid, out var bldcomp))
{
bldcomp.BleedReductionAmount /= component.Modifier;
}
}
}
3 changes: 2 additions & 1 deletion Content.Server/Body/Components/BloodstreamComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@
using Robust.Shared.Audio;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
using Content.Server.Hemophilia;

namespace Content.Server.Body.Components
{
[RegisterComponent, Access(typeof(BloodstreamSystem), typeof(ReactionMixerSystem))]
[RegisterComponent, Access(typeof(BloodstreamSystem), typeof(ReactionMixerSystem), (typeof(HemophiliaSystem)))]
public sealed partial class BloodstreamComponent : Component
{
public static string DefaultChemicalsSolutionName = "chemicals";
Expand Down
13 changes: 13 additions & 0 deletions Content.Shared/ADT/NovakidFeatures/NovakidGlowingComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
namespace Content.Shared.ADT.NovakidFeatures;

[RegisterComponent]
public sealed partial class NovakidGlowingComponent : Component
{
[DataField]
public Color GlowingColor;

NovakidGlowingComponent(Color color)
{
GlowingColor = color;
}
}
10 changes: 10 additions & 0 deletions Content.Shared/ADT/hemophilia/HemophiliaComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace Content.Shared.Traits;

[RegisterComponent]
public sealed partial class HemophiliaComponent : Component
{
[DataField]
public float Modifier = 0.3f;


}
2 changes: 2 additions & 0 deletions Resources/Locale/en-US/ADT/traits/traits.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
trait-hemophilia-name = Hemophilia
trait-hemophilia-desc = Your blood is clotting extremely badly.
60 changes: 60 additions & 0 deletions Resources/Locale/ru-RU/ADT/Novakid/species.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
novakid-hurt-by-water-popup = Вода заставляет ваше пламя угасать
species-name-novakid = Новакид
marking-NovakidHair1 = сплетение
marking-NovakidHair2 = комета
marking-NovakidHair3 = дуализм
marking-NovakidHair4 = слава
marking-NovakidHair5 = газовое облако
marking-NovakidHair6 = газовая лавина
marking-NovakidHair7 = сияние света
marking-NovakidHair8 = огонек звездного блеска
marking-NovakidHair9 = звездочка
marking-NovakidHair10 = лунный день
marking-NovakidHair11 = метеоритный дождь
marking-NovakidHair12 = млечный путь
marking-NovakidHair13 = туманность
marking-NovakidHair14 = солнечная коронка
marking-NovakidHair15 = звездный дождь
marking-NovakidHair16 = звездопад
marking-NovakidHair17 = пламя звезды
marking-NovakidHair18 = солнечный свет
marking-NovakidHair19 = сверхновая
marking-NovakidHair20 = галактический стиль
marking-NovakidHair21 = дева
marking-NovakidHair22 = галактика
marking-NovakidFace1 = раскол
marking-NovakidFace2 = крест
marking-NovakidFace3 = распятие
marking-NovakidFace4 = двойственность
marking-NovakidFace5 = око
marking-NovakidFace6 = H
marking-NovakidFace7 = сердце
marking-NovakidFace8 = индикатор
marking-NovakidFace9 = нота
marking-NovakidFace10 = призма
marking-NovakidFace11 = руна
marking-NovakidFace12 = квадрат
marking-NovakidFace13 = напряжение
marking-NovakidFace14 = тройственность
marking-NovakidFace15 = перевёрнутое распятие
marking-NovakidFace16 = X
marking-NovakidFace17 = Y
marking-NovakidFace18 = зета
marking-NovakidFace19 = конус
marking-NovakidFace20 = cвязь
marking-NovakidFace21 = окружность
marking-NovakidFace22 = косательная
marking-NovakidFace23 = очи
marking-NovakidFace24 = G
marking-NovakidFace25 = домик
marking-NovakidFace26 = К
marking-NovakidFace27 = лима
marking-NovakidFace28 = обратная косательная
marking-NovakidFace29 = омега
marking-NovakidFace30 = плюс
marking-NovakidFace31 = роза
marking-NovakidFace32 = раскол
marking-NovakidFace33 = звезда
marking-NovakidFace34 = продовольные очки
marking-TorsoNovakidDefolt = белое ядро
marking-HeadNovakidDefolt = белое ядро
2 changes: 2 additions & 0 deletions Resources/Locale/ru-RU/ADT/traits/disabilities.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
trait-hemophilia-name = Гемофилия
trait-hemophilia-desc = Ваша кровь сворачивается крайне плохо.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ent-MobNovakid = { ent-BaseMobNovakid }
.desc = { ent-BaseMobNovakid.desc }
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ent-BaseMobNovakid = Урист МакНовакид
.desc = { ent-BaseMobSpeciesOrganic.desc }
.suffix = Новакид
31 changes: 31 additions & 0 deletions Resources/Prototypes/ADT/Body/Organs/novakid.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
- type: entity
id: OrganNovakidStomach
parent: OrganAnimalStomach
noSpawn: true
components:
- type: Stomach
maxVol: 50
- type: Metabolizer
maxReagents: 5
metabolizerTypes: [ Novakid ]

- type: entity
id: OrganNovakidLungs
parent: OrganHumanLungs
suffix: "novakid"
components:
- type: Metabolizer
metabolizerTypes: [ Novakid ]

- type: entity
id: OrganNovakidHeart
parent: OrganAnimalHeart
suffix: "novakid"
components:
- type: Metabolizer
maxReagents: 2
metabolizerTypes: [ Novakid ]
groups:
- id: Medicine
- id: Poison
- id: Narcotic
190 changes: 190 additions & 0 deletions Resources/Prototypes/ADT/Body/Parts/novakid.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
# TODO: Add descriptions (many)
# TODO BODY: Part damage
- type: entity
id: PartNovakid
parent: BaseItem
name: "novakid body part"
abstract: true
components:
- type: Damageable
damageContainer: Biological
- type: BodyPart
- type: ContainerContainer
containers:
bodypart: !type:Container
ents: []

- type: entity
id: TorsoNovakid
name: "novakid torso"
parent: PartNovakid
components:
- type: Sprite
netsync: false
sprite: ADT/Mobs/Novakid/parts.rsi
state: "torso_m"
- type: Icon
sprite: ADT/Mobs/Novakid/parts.rsi
state: "torso_m"
- type: BodyPart
partType: Torso

- type: entity
id: HeadNovakid
name: "novakid head"
parent: PartNovakid
components:
- type: Sprite
netsync: false
sprite: ADT/Mobs/Novakid/parts.rsi
state: "head_m"
- type: Icon
sprite: ADT/Mobs/Novakid/parts.rsi
state: "head_m"
- type: BodyPart
partType: Head
vital: true
- type: Input
context: "ghost"
- type: MovementSpeedModifier
baseWalkSpeed: 0
baseSprintSpeed: 0
- type: InputMover
- type: GhostOnMove
- type: Tag
tags:
- Head

- type: entity
id: LeftArmNovakid
name: "left novakid arm"
parent: PartNovakid
components:
- type: Sprite
netsync: false
sprite: ADT/Mobs/Novakid/parts.rsi
state: "l_arm"
- type: Icon
sprite: ADT/Mobs/Novakid/parts.rsi
state: "l_arm"
- type: BodyPart
partType: Arm
symmetry: Left

- type: entity
id: RightArmNovakid
name: "right novakid arm"
parent: PartNovakid
components:
- type: Sprite
netsync: false
sprite: ADT/Mobs/Novakid/parts.rsi
state: "r_arm"
- type: Icon
sprite: ADT/Mobs/Novakid/parts.rsi
state: "r_arm"
- type: BodyPart
partType: Arm
symmetry: Right

- type: entity
id: LeftHandNovakid
name: "left novakid hand"
parent: PartNovakid
components:
- type: Sprite
netsync: false
sprite: ADT/Mobs/Novakid/parts.rsi
state: "l_hand"
- type: Icon
sprite: ADT/Mobs/Novakid/parts.rsi
state: "l_hand"
- type: BodyPart
partType: Hand
symmetry: Left

- type: entity
id: RightHandNovakid
name: "right novakid hand"
parent: PartNovakid
components:
- type: Sprite
netsync: false
sprite: ADT/Mobs/Novakid/parts.rsi
state: "r_hand"
- type: Icon
sprite: ADT/Mobs/Novakid/parts.rsi
state: "r_hand"
- type: BodyPart
partType: Hand
symmetry: Right

- type: entity
id: LeftLegNovakid
name: "left novakid leg"
parent: PartNovakid
components:
- type: Sprite
netsync: false
sprite: ADT/Mobs/Novakid/parts.rsi
state: "l_leg"
- type: Icon
sprite: ADT/Mobs/Novakid/parts.rsi
state: "l_leg"
- type: BodyPart
partType: Leg
symmetry: Left
- type: MovementBodyPart
walkSpeed : 2.5
sprintSpeed : 4.5

- type: entity
id: RightLegNovakid
name: "right novakid leg"
parent: PartNovakid
components:
- type: Sprite
netsync: false
sprite: ADT/Mobs/Novakid/parts.rsi
state: "r_leg"
- type: Icon
sprite: ADT/Mobs/Novakid/parts.rsi
state: "r_leg"
- type: BodyPart
partType: Leg
symmetry: Right
- type: MovementBodyPart
walkSpeed : 2.5
sprintSpeed : 4.5

- type: entity
id: LeftFootNovakid
name: "left novakid foot"
parent: PartNovakid
components:
- type: Sprite
netsync: false
sprite: ADT/Mobs/Novakid/parts.rsi
state: "l_foot"
- type: Icon
sprite: ADT/Mobs/Novakid/parts.rsi
state: "l_foot"
- type: BodyPart
partType: Foot
symmetry: Left

- type: entity
id: RightFootNovakid
name: "right novakid foot"
parent: PartNovakid
components:
- type: Sprite
netsync: false
sprite: ADT/Mobs/Novakid/parts.rsi
state: "r_foot"
- type: Icon
sprite: ADT/Mobs/Novakid/parts.rsi
state: "r_foot"
- type: BodyPart
partType: Foot
symmetry: Right
Loading
Loading