Skip to content

Commit

Permalink
Merge branch 'master' into quirks
Browse files Browse the repository at this point in the history
  • Loading branch information
Schrodinger71 authored Aug 8, 2024
2 parents 07c42f9 + 0b2c164 commit 5d04224
Show file tree
Hide file tree
Showing 24 changed files with 1,139 additions and 12 deletions.
14 changes: 14 additions & 0 deletions Content.Server/ADT/SizeAttribute/SizeAttributeComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using Content.Shared.Cloning;

namespace Content.Server.ADT.SizeAttribute
{
[RegisterComponent]
public sealed partial class SizeAttributeComponent : Component, ITransferredByCloning
{
[DataField("short")]
public bool Short = false;

[DataField("tall")]
public bool Tall = false;
}
}
94 changes: 94 additions & 0 deletions Content.Server/ADT/SizeAttribute/SizeAttributeSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
using System.Numerics;
using Robust.Server.GameObjects;
using Robust.Shared.Physics;
using Robust.Shared.Physics.Collision.Shapes;
using Robust.Shared.Physics.Systems;
using Content.Shared.Item.PseudoItem;

namespace Content.Server.ADT.SizeAttribute
{
public sealed class SizeAttributeSystem : EntitySystem
{
[Dependency] private readonly IEntityManager _entityManager = default!;
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
[Dependency] private readonly AppearanceSystem _appearance = default!;
[Dependency] private readonly FixtureSystem _fixtures = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<SizeAttributeComponent, ComponentInit>(OnComponentInit);
}

private void OnComponentInit(EntityUid uid, SizeAttributeComponent component, ComponentInit args)
{
if (!TryComp<SizeAttributeWhitelistComponent>(uid, out var whitelist))
return;

if (whitelist.Tall && component.Tall)
{
Scale(uid, component, whitelist.TallScale, whitelist.TallDensity, whitelist.TallCosmeticOnly);
PseudoItem(uid, component, whitelist.TallPseudoItem);
}
else if (whitelist.Short && component.Short)
{
Scale(uid, component, whitelist.ShortScale, whitelist.ShortDensity, whitelist.ShortCosmeticOnly);
PseudoItem(uid, component, whitelist.ShortPseudoItem);
}
}

private void PseudoItem(EntityUid uid, SizeAttributeComponent component, bool active)
{
if (active)
{
if (TryComp<PseudoItemComponent>(uid, out var pseudoI))
return;

_entityManager.AddComponent<PseudoItemComponent>(uid);
}
else
{
if (!TryComp<PseudoItemComponent>(uid, out var pseudoI))
return;

_entityManager.RemoveComponent<PseudoItemComponent>(uid);
}
}

private void Scale(EntityUid uid, SizeAttributeComponent component, float scale, float density, bool cosmeticOnly)
{
if (scale <= 0f && density <= 0f)
return;

_entityManager.EnsureComponent<ScaleVisualsComponent>(uid);

var appearanceComponent = _entityManager.EnsureComponent<AppearanceComponent>(uid);
if (!_appearance.TryGetData<Vector2>(uid, ScaleVisuals.Scale, out var oldScale, appearanceComponent))
oldScale = Vector2.One;

_appearance.SetData(uid, ScaleVisuals.Scale, oldScale * scale, appearanceComponent);

if (!cosmeticOnly && _entityManager.TryGetComponent(uid, out FixturesComponent? manager))
{
foreach (var (id, fixture) in manager.Fixtures)
{
if (!fixture.Hard || fixture.Density <= 1f)
continue; // This will skip the flammable fixture and any other fixture that is not supposed to contribute to mass

switch (fixture.Shape)
{
case PhysShapeCircle circle:
_physics.SetPositionRadius(uid, id, fixture, circle, circle.Position * scale, circle.Radius * scale, manager);
break;
default:
throw new NotImplementedException();
}

_physics.SetDensity(uid, id, fixture, density);
}
}
}
}

[ByRefEvent]
public readonly record struct ScaleEntityEvent(EntityUid Uid) { }
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Robust.Shared.Physics.Collision.Shapes;

namespace Content.Server.SizeAttribute
namespace Content.Server.ADT.SizeAttribute
{
[RegisterComponent]
public sealed partial class SizeAttributeWhitelistComponent : Component
Expand Down
8 changes: 8 additions & 0 deletions Content.Shared/ADT/Cloning/ITransferredByCloning.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Content.Shared.Cloning;

/// <summary>
/// Indicates that this Component should be transferred to the new entity when the entity is cloned (for example, using a cloner)
/// </summary>
public interface ITransferredByCloning
{
}
19 changes: 19 additions & 0 deletions Content.Shared/ADT/Item/PseudoItemComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using Content.Shared.Cloning;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;

namespace Content.Shared.Item.PseudoItem;
/// <summary>
/// For entities that behave like an item under certain conditions,
/// but not under most conditions.
/// </summary>
[RegisterComponent]
public sealed partial class PseudoItemComponent : Component, ITransferredByCloning
{
[DataField("size", customTypeSerializer: typeof(PrototypeIdSerializer<ItemSizePrototype>))]
public string Size = "Huge";

public bool Active = false;

[DataField]
public EntityUid? SleepAction;
}
46 changes: 46 additions & 0 deletions Resources/Changelog/ChangelogADT.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2085,3 +2085,49 @@ Entries:
- {message: 'Подтянуты коммиты с корвакса, 27.07.24', type: Tweak}
time: '2024-07-27T16:15:51Z'
id: 220
- author: Darki255
changes:
- {message: Перенесён патологоанатом., type: Add}
time: '2024-08-01T17:02:59Z'
id: 221
- author: KashRas2
changes:
- {message: Добавлен РРТ. Теперь атмосы стали намного лучше., type: Add}
time: '2024-08-02T08:03:42Z'
id: 222
- author: Schrodinger71
changes:
- {message: 'Подтянул коммиты Корвухов, 02.08.24.', type: Tweak}
time: '2024-08-03T12:00:54Z'
id: 223
- author: Darki255
changes:
- {message: Добавлены нианы, type: Add}
time: '2024-08-04T21:44:57Z'
id: 224
- author: FaDeOkno
changes:
- {message: Полный реворк системы языков., type: Tweak}
- {message: 'Языки теперь выделяются не названием, а цветом текста.', type: Tweak}
- {message: Упрощена система языков., type: Tweak}
- {message: Языковые импланты теперь можно извлечь., type: Tweak}
- {message: Меню языков теперь открывается при нажатии на кнопку L и имеет кнопку
в верхнем меню., type: Add}
time: '2024-08-06T17:55:45Z'
id: 225
- author: FaDeOkno
changes:
- {message: Добавлено иное отображение одежды на сумеречниках, type: Add}
time: '2024-08-06T20:18:47Z'
id: 226
- author: RipZoro1
changes:
- {message: Добавлена бола в СБтех, type: Add}
- {message: Добавлена шинель кадета в СБшкаф, type: Add}
time: '2024-08-07T00:49:59Z'
id: 227
- author: Шрёдька
changes:
- {message: 'Подтянуты коммиты с корвакса, 07.08.24', type: Tweak}
time: '2024-08-07T23:28:50Z'
id: 228
2 changes: 2 additions & 0 deletions Resources/Locale/ru-RU/ADT/prototypes/Body/Organs/kobalt.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ent-OrganKoboltStomach = { ent-OrganAnimalStomach }
.desc = { ent-OrganAnimalStomach.desc }
22 changes: 22 additions & 0 deletions Resources/Locale/ru-RU/ADT/prototypes/Body/Parts/kobalt.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
ent-PartKobolt = часть тела кобольда
.desc = { ent-BaseItem.desc }
ent-TorsoKobolt = торс кобольда
.desc = { ent-PartKobolt.desc }
ent-HeadKobolt = голова кобольда
.desc = { ent-PartKobolt.desc }
ent-LeftArmKobolt = левая рука кобольда
.desc = { ent-PartKobolt.desc }
ent-RightArmKobolt = правая рука кобольда
.desc = { ent-PartKobolt.desc }
ent-LeftHandKobolt = левая кисть кобольда
.desc = { ent-PartKobolt.desc }
ent-RightHandKobolt = правая кисть кобольда
.desc = { ent-PartKobolt.desc }
ent-LeftLegKobolt = левая нога кобольда
.desc = { ent-PartKobolt.desc }
ent-RightLegKobolt = правая нога кобольда
.desc = { ent-PartKobolt.desc }
ent-LeftFootKobolt = левая стопа кобольда
.desc = { ent-PartKobolt.desc }
ent-RightFootKobolt = правая стопа кобольда
.desc = { ent-PartKobolt.desc }
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
marking-KoboltFrillsShort-frills_short = Кобольд, воротник (Короткий)
marking-KoboltFrillsShort = Кобольд, воротник (Короткий)
marking-KoboltFrillsSimple-frills_simple = Кобольд, воротник (Простой)
marking-KoboltFrillsSimple = Кобольд, воротник (Простой)
marking-KoboltFrillsAquatic-frills_aquatic = Кобольд, воротник (Водный)
marking-KoboltFrillsAquatic = Кобольд, воротник (Водный)
marking-KoboltHornsAngler-horns_angler = Кобольд, рожки (Рыболов)
marking-KoboltHornsAngler = Кобольд, рожки (Рыболов)
marking-KoboltHornsCurled-horns_curled = Кобольд, рожки (Завитые)
marking-KoboltHornsCurled = Кобольд, рожки (Завитые)
marking-KoboltHornsRam-horns_ram = Кобольд, рожки (Бараньи)
marking-KoboltHornsRam = Кобольд, рожки (Бараньи)
marking-KoboltHornsShort-horns_short = Кобольд, рожки (Короткие)
marking-KoboltHornsShort = Кобольд, рожки (Короткие)
marking-KoboltHornsSimple-horns_simple = Кобольд, рожки
marking-KoboltHornsSimple = Кобольд, рожки
marking-KoboltTailSmooth-tail_smooth_primary = Кобольд, хвост
marking-KoboltTailSmooth-tail_smooth_secondary = Оттенок
marking-KoboltTailSmooth = Кобольд, хвост (Гладкий)
marking-KoboltTailLarge-tail_large = Кобольд, хвост (Большой)
marking-KoboltTailLarge = Кобольд, хвост (Большой)
marking-KoboltTailSpikes-tail_spikes = Кобольд, хвост (Шипастый)
marking-KoboltTailSpikes = Кобольд, хвост (Шипастый)
marking-KoboltTailLTiger-tail_ltiger = Кобольд, хвост (Светлые тигриные полоски)
marking-KoboltTailLTiger = Кобольд, хвост (Светлые тигриные полоски)
marking-KoboltTailDTiger-tail_dtiger = Кобольд, хвост (Тёмные тигриные полоски)
marking-KoboltTailDTiger = Кобольд, хвост (Тёмные тигриные полоски)
marking-KoboltSnoutRound-snout_round = Кобольд, морда (Круглая)
marking-KoboltSnoutRound = Кобольд, морда (Круглая)
marking-KoboltSnoutSharp-snout_sharp = Кобольд, морда (Заострёная)
marking-KoboltSnoutSharp = Кобольд, морда (Заострёная)
marking-KoboltChestTiger-body_tiger = Кобольд, грудь (Тигр)
marking-KoboltChestTiger = Кобольд, грудь (Тигр)
marking-KoboltHeadTiger-head_tiger = Кобольд, голова (Тигр)
marking-KoboltHeadTiger = Кобольд, голова (Тигр)
marking-KoboltLArmTiger-l_arm_tiger = Кобольд, левая рука (Тигр)
marking-KoboltLArmTiger = Кобольд, левая рука (Тигр)
marking-KoboltLLegTiger-l_leg_tiger = Кобольд, левая нога (Тигр)
marking-KoboltLLegTiger = Кобольд, левая нога (Тигр)
marking-KoboltRArmTiger-r_arm_tiger = Кобольд, правая рука (Тигр)
marking-KoboltRArmTiger = Кобольд, правая рука (Тигр)
marking-KoboltRLegTiger-r_leg_tiger = Кобольд, правая нога (Тигр)
marking-KoboltRLegTiger = Кобольд, правая нога (Тигр)
marking-KoboltFrillsDivinity-frills_divinity = Кобольд, воротник (Божественный)
marking-KoboltFrillsDivinity = Кобольд, воротник (Божественный)
marking-KoboltFrillsBig-frills_big = Кобольд, воротник (Большой)
marking-KoboltFrillsBig = Кобольд, воротник (Большой)
marking-KoboltFrillsNeckfull-frills_neckfull = Кобольд, воротник (Полношейный)
marking-KoboltFrillsNeckfull = Кобольд, воротник (Полношейный)
marking-KoboltHornsDouble-horns_double = Кобольд, рожки (Двойные)
marking-KoboltHornsDouble = Кобольд, рожки (Двойные)
marking-KoboltFrillsAxolotl-frills_axolotl = Кобольд, воротник (Аксолотль)
marking-KoboltFrillsHood-frills_hood_primary = Внешний капюшон
marking-KoboltFrillsHood-frills_hood_secondary = Внутренний капюшона
marking-KoboltFrillsAxolotl = Кобольд, воротник (Аксолотль)
marking-KoboltFrillsHood = Кобольд, воротник (Капюшон)
marking-KoboltHornsArgali-horns_argali = Кобольд, рожки (Аргали)
marking-KoboltHornsArgali = Кобольд, рожки (Аргали)
marking-KoboltHornsAyrshire-horns_ayrshire = Кобольд, рожки (Айршир)
marking-KoboltHornsAyrshire = Кобольд, рожки (Айршир)
marking-KoboltHornsMyrsore-horns_myrsore = Кобольд, рожки (Мирзора)
marking-KoboltHornsMyrsore = Кобольд, рожки (Мирзора)
marking-KoboltHornsBighorn-horns_bighorn = Кобольд, рожки (Толсторог)
marking-KoboltHornsBighorn = Кобольд, рожки (Толсторог)
marking-KoboltHornsDemonic-horns_demonic = Кобольд, рожки (Демонические)
marking-KoboltHornsDemonic = Кобольд, рожки (Демонические)
marking-KoboltHornsKoboldEars-horns_kobold_ears = Кобольд, уши (Кобольд)
marking-KoboltHornsKoboldEars = Кобольд, уши (Кобольд)
marking-KoboltHornsFloppyKoboldEars-horns_floppy_kobold_ears = Кобольд, уши (Вислоухий кобольд)
marking-KoboltHornsFloppyKoboldEars = Кобольд, уши (Вислоухий кобольд)
marking-KoboltChestUnderbelly-body_underbelly = Кобольд, грудь (Подбрюшье)
marking-KoboltChestUnderbelly = Кобольд, грудь (Подбрюшье)
marking-KoboltChestBackspikes-body_backspikes = Кобольд, грудь, шипы на спине (Четыре)
marking-KoboltChestBackspikes = Кобольд, грудь, шипы на спине (Четыре)
marking-KoboltSnoutSplotch = Кобольд, морда лица (Пятно)
marking-KoboltSnoutSplotch-snout_splotch_primary = Морда
marking-KoboltSnoutSplotch-snout_splotch_secondary = Нос
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ent-MobKobolt = Урист МакКобольд
.desc = { ent-BaseMobKobolt.desc }
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
ent-BaseMobKobolt = Урист Мак
.desc = { ent-BaseMobSpeciesOrganic.desc }
.suffix = Кобольд
ent-MobKoboltDummy = { ent-BaseSpeciesDummy }
.desc = { ent-BaseSpeciesDummy.desc }
2 changes: 2 additions & 0 deletions Resources/Locale/ru-RU/ADT/traits/categories.ftl
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
trait-category-quirks = Особенности
trait-category-height = Рост
8 changes: 7 additions & 1 deletion Resources/Locale/ru-RU/ADT/traits/neutral.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,10 @@ trait-deutsch-name = Немецкий акцент
trait-deutsch-desc = Вы говорите как настоящий австрийский художник!
trait-moth-accent-name = Жужащий акцент
trait-moth-accent-desc = Вам либо нравятся моли, либо вы ботаник
trait-moth-accent-desc = Вам либо нравятся моли, либо вы ботаник
trait-tall-name = Высокий
trait-tall-desc = Вы слегка выше других представителей своего вида.
trait-short-name = Низкий
trait-short-desc = Вы слегка ниже других представителей своего вида.
4 changes: 4 additions & 0 deletions Resources/Prototypes/ADT/Body/Organs/kobalt.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- type: entity
id: OrganKoboltStomach
parent: OrganReptilianStomach
noSpawn: true
Loading

0 comments on commit 5d04224

Please sign in to comment.