Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
4dc2df2
CompoundBow
Firemixx Feb 5, 2026
ea026e9
аааа
Firemixx Feb 7, 2026
56ded2e
fixs
Firemixx Feb 8, 2026
5ee9f80
fix
Firemixx Feb 8, 2026
297776b
fix: Мелкие правки
Firemixx Feb 8, 2026
c5d6110
fix
Firemixx Feb 8, 2026
ac0429a
фикс тестов..буэ
Firemixx Feb 8, 2026
87158f4
еще фикс
Firemixx Feb 8, 2026
7692786
aaaaaaaaaaaaaaaaaaaaaaaaaaa
Firemixx Feb 8, 2026
b973633
nullable developer
Firemixx Feb 8, 2026
5be421b
уэ?
Firemixx Feb 8, 2026
023c5c7
аааааааааааааааааааааааааааааааааа улучшение звуки и фиксы и нахер урон
Firemixx Feb 8, 2026
92647dd
хули,пробуем
Firemixx Feb 9, 2026
b190899
еще раз пробуем
Firemixx Feb 9, 2026
4f6c9a2
починка тупости
Firemixx Feb 9, 2026
5f26340
fix
Firemixx Feb 9, 2026
7664d53
aaaaaa
Firemixx Feb 9, 2026
c455da7
коммит для смены ветки
Firemixx Feb 10, 2026
5bfcce1
add: Добавил луки, технологию, крафт и заготовки паков для стрел и луков
Firemixx Feb 12, 2026
89b1b40
Merge branch 'master' into CompoundBow
Firemixx Feb 12, 2026
fbdb804
add: взрывные стрелы, стрелы светяшки, локализация, еще технология
Firemixx Feb 13, 2026
7a94e9a
Merge branch 'CompoundBow' of https://github.com/Firemixx/Firemix_Rep…
Firemixx Feb 13, 2026
52f5fbf
fix
Firemixx Feb 13, 2026
2ea3ce6
fix2
Firemixx Feb 13, 2026
264df20
fix: фикс рецептов
Firemixx Feb 13, 2026
75fc88e
Merge branch 'master' into CompoundBow
Firemixx Feb 22, 2026
31e04dc
Fix YAML syntax for Bombs/plastic.yml
Firemixx Feb 22, 2026
e91e100
Add ADTArrowGranade node to arrows.yml
Firemixx Feb 22, 2026
975be00
Fix comment formatting for StepOfTension property
Firemixx Feb 22, 2026
b5a356c
Merge branch 'master' into CompoundBow
Firemixx Feb 23, 2026
a3872ed
Remove 'name' entry from arrows.yml
Firemixx Mar 3, 2026
cf76abb
fix
Firemixx Mar 3, 2026
4c9e9c3
Merge branch 'CompoundBow' of https://github.com/Firemixx/Firemix_Rep…
Firemixx Mar 3, 2026
9829842
fix of brain
Firemixx Mar 3, 2026
a4f2ba0
fix
Firemixx Mar 3, 2026
6978660
Update arsenal.yml
Firemixx Mar 3, 2026
1952d7a
Merge branch 'master' into CompoundBow
Firemixx Mar 3, 2026
d468d8a
Merge branch 'master' into CompoundBow
Firemixx Mar 6, 2026
bebc614
малые фиксы
Firemixx Mar 7, 2026
1eb9f9c
Merge branch 'master' into CompoundBow
Firemixx Mar 7, 2026
e6a8000
Merge branch 'master' into CompoundBow
Firemixx Mar 17, 2026
0ae4173
Merge branch 'master' into CompoundBow
Darkiich Mar 19, 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
21 changes: 21 additions & 0 deletions Content.Server/ADT/BowsSystem/BowsSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using Content.Shared.ADT.BowsSystem.Components;
using Content.Shared.Weapons.Ranged.Events;
using Content.Shared.Weapons.Ranged.Systems;

namespace Content.Server.ADT.BowsSystem;

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

SubscribeLocalEvent<ExpendedBowsComponent, ShotAttemptedEvent>(OnShootAttempt);
}

public void OnShootAttempt(Entity<ExpendedBowsComponent> bow,ref ShotAttemptedEvent args)
{
if(bow.Comp.StepOfTension==0)
args.Cancel();
}
}
63 changes: 63 additions & 0 deletions Content.Shared/ADT/BowsSystem/Components/ExpendedBowsComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
using Robust.Shared.Audio;
using Robust.Shared.GameStates;

namespace Content.Shared.ADT.BowsSystem.Components;
[RegisterComponent, NetworkedComponent]
public sealed partial class ExpendedBowsComponent : Component
{

/// <summary>
/// Sound to bow on tension
/// </summary>
[DataField, ViewVariables(VVAccess.ReadWrite)]
public SoundSpecifier bowSound = new SoundPathSpecifier("/Audio/Weapons/Guns/Misc/arrow_nock.ogg");

/// <summary>
/// Zero state timer
/// </summary>
[DataField, ViewVariables(VVAccess.ReadWrite)]
public TimeSpan coldownStart = TimeSpan.Zero;

/// <summary>
/// Time to timer
/// </summary>
[DataField, ViewVariables(VVAccess.ReadWrite)]
public float floatToColdown = 7f;

/// <summary>
/// Step of tension in bow
/// </summary>
public int StepOfTension=0;

/// <summary>
/// Tension and loc for it
/// </summary>
public Dictionary<int, string> TensionAndLoc = new Dictionary<int, string>
{
{0, "popup-bow-use-null"},
{1, "popup-bow-use-light"},
{2, "popup-bow-use-medium"},
{3, "popup-bow-use-hard"},
};

/// <summary>
/// Tension in bow and speed modiefer for arrow
/// </summary>
public Dictionary<int, float> TensionAndModieferSpeed = new Dictionary<int, float>
{
{0, 0.5f},
{1, 1f},
{2, 1.4f},
{3, 3f},
};

/// <summary>
/// Max tension in bow
/// </summary>
public int MaxTension = 3;

/// <summary>
/// Min tension in bow
/// </summary>
public int MinTension = 0;
}
75 changes: 75 additions & 0 deletions Content.Shared/ADT/BowsSystem/SharedBowsSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
using Content.Shared.ADT.BowsSystem.Components;
using Content.Shared.Containers.ItemSlots;
using Content.Shared.Interaction.Events;
using Content.Shared.Projectiles;
using Content.Shared.Popups;
using Content.Shared.Weapons.Ranged.Components;
using Content.Shared.Weapons.Ranged.Events;
using Content.Shared.Weapons.Ranged.Systems;
using Content.Shared.Wieldable.Components;
using Robust.Shared.Audio;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Containers;
using Robust.Shared.Timing;

namespace Content.Shared.ADT.BowsSystem;

public sealed partial class BowsSystem : EntitySystem
{
[Dependency] private readonly SharedContainerSystem _containerSystem = default!;
[Dependency] private readonly ItemSlotsSystem _itemSlotsSystem = default!;
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<ExpendedBowsComponent, GunShotEvent>(OnShoot);
SubscribeLocalEvent<ExpendedBowsComponent, UseInHandEvent>(OnUseInHand);
SubscribeLocalEvent<ExpendedBowsComponent, GunRefreshModifiersEvent>(EditSpeed);
}

private void OnShoot(Entity<ExpendedBowsComponent> bow, ref GunShotEvent args)
{
bow.Comp.StepOfTension=bow.Comp.MinTension;
}

private void OnUseInHand(Entity<ExpendedBowsComponent> bow, ref UseInHandEvent args)
{
bow.Comp.coldownStart = _timing.CurTime + TimeSpan.FromSeconds(bow.Comp.floatToColdown);
}

public override void Update(float frameTime)
{
base.Update(frameTime);

var query = EntityQueryEnumerator<ExpendedBowsComponent>();

while (query.MoveNext(out var uid, out var comp))
{
if (_timing.CurTime < comp.coldownStart)
continue;
if(!TryComp<WieldableComponent>(uid,out var wieldedcomp))
continue;
if (wieldedcomp.Wielded == false)
{
comp.StepOfTension=comp.MinTension;
continue;
}
if (wieldedcomp.User is not {} owner)
continue;
if (comp.StepOfTension >= comp.MaxTension)
continue;

comp.StepOfTension++;
_popup.PopupClient(Loc.GetString(comp.TensionAndLoc[comp.StepOfTension],("user", owner)), uid, owner);
_audio.PlayPvs(comp.bowSound, owner);
comp.coldownStart = _timing.CurTime + TimeSpan.FromSeconds(comp.floatToColdown);
}
}

private void EditSpeed(Entity<ExpendedBowsComponent> bow, ref GunRefreshModifiersEvent args)
{
args.ProjectileSpeed =args.ProjectileSpeed * bow.Comp.TensionAndModieferSpeed[bow.Comp.StepOfTension];
}
}
2 changes: 1 addition & 1 deletion Content.Shared/Weapons/Ranged/Components/GunComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ public sealed partial class GunComponent : Component
/// <summary>
/// The base value for how fast the projectile moves.
/// </summary>
[DataField]
[DataField]
public float ProjectileSpeed = 30f; // ADT-Tweak 42f -> 30f

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
popup-bow-use-null = {$user} отпускает тетиву!
popup-bow-use-light = {$user} начинает натягивать тетиву!
popup-bow-use-medium = {$user} натягивает тетиву сильнее!
popup-bow-use-hard = {$user} натягивает тетиву максимально!
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
ent-ADTHandMadeCompoundBow = блочный лук
.desc = Ты бы еще еоку скрафтил бы!

ent-ADTSecurityCompoundBow = блочный лук службы безопасности
.desc = Ты вспоминаешь, как по новостям везде крутили одну фразу инженеров программы арсенала станций: "Ну в СССП, в древние времена, была же конское СБ, вот и у нас будет!...Лучники СБ..."
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
ent-ADTArrowSecurity = стрела службы безопасности
.desc = Металлическая, грациозная и идеальная! Самое то, чтобы применить её на клоуне!

ent-ADTArrowFlashSecurity = светящаяся стрела
.desc = Два в одном! Только сейчас! Пометь цель для ловли стрелой, и оставь тем самым на ней как ментальный, так и физический урон!

ent-ADTArrowGranade = взрывная стрела
.desc = "Идиальный" снаряд для вашего лука во время стелса! Разорвет всех, кто вас может заметить, услышать или каким либо способом еще обнаружить.
4 changes: 4 additions & 0 deletions Resources/Locale/ru-RU/ADT/recipes/tag.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,10 @@ construction-graph-tag-aloe = алоэ
construction-graph-door-electronics = микросхема шлюза
construction-graph-intercom-electronics = плата интеркома

# Оружие
construction-graph-tag-arrow = любая стрела
construction-graph-tag-c4 = C4

# Другое
construction-graph-voice-trigger = голосовой триггер
construction-graph-tag-toy-blaster = игрушечный бластер
Expand Down
4 changes: 4 additions & 0 deletions Resources/Locale/ru-RU/ADT/research/technologies.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,7 @@ research-technology-basemegacells = Мегабатареи
research-technology-advancedmegacells = Сверхэффективные мегабатареи

research-technology-reducer = Беспроводная передача энергии

research-technology-bow-security = Снаряжение лучника СБ

research-technology-arrows-security = Нелетальное, продвинутое снаряжение лучника СБ
2 changes: 1 addition & 1 deletion Resources/Locale/ru-RU/research/technologies.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,4 @@ research-technology-advanced-spray = Продвинутые спреи
research-technology-clowning-utilities = Клоунские принадлежности
research-technology-quantum-fiber-weaving = Плетение квантового волокна
research-technology-bluespace-cargo-transport = Блюспейс-транспортировка грузов
research-technology-experimental-pka = Экспериментальный протокинетический ускоритель
research-technology-experimental-pka = Экспериментальный протокинетический ускоритель
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
- type: entity
id: ADTHandMadeCompoundBow
parent: BaseBow
components:
- type: Sprite
sprite: ADT/Objects/Weapons/Guns/Bow/compound_bow_handmade.rsi
layers:
- state: unwielded
map: [ base ]
- state: unwielded-arrow
map: [ arrow ]
visible: false
- type: Appearance
- type: ItemMapper
spriteLayers:
- arrow
mapLayers:
arrow:
whitelist:
tags:
- Arrow
- type: GenericVisualizer
visuals:
enum.WieldableVisuals.Wielded:
arrow:
True: { state: wielded-arrow }
False: { state: unwielded-arrow }
base:
True: { state: wielded }
False: { state: unwielded }
- type: ExpendedBows
floatToColdown: 5
- type: Construction
graph: HandmadeCompoundBow
node: HandmadeCompoundBow

- type: entity
id: ADTSecurityCompoundBow
parent: BaseBow
components:
- type: Sprite
sprite: ADT/Objects/Weapons/Guns/Bow/compound_bow_security.rsi
layers:
- state: unwielded
map: [ base ]
- state: unwielded-arrow
map: [ arrow ]
visible: false
- type: Appearance
- type: ItemMapper
spriteLayers:
- arrow
mapLayers:
arrow:
whitelist:
tags:
- Arrow
- type: GenericVisualizer
visuals:
enum.WieldableVisuals.Wielded:
arrow:
True: { state: wielded-arrow }
False: { state: unwielded-arrow }
base:
True: { state: wielded }
False: { state: unwielded }
- type: ExpendedBows
floatToColdown: 2
- type: AttachableHolder
slots:
rmc-aslot-rail:
whitelist:
tags:
- ADTAttachmentT2Miniscope
- type: AttachableHolderVisuals
offsets:
rmc-aslot-rail: -0.0325, -0.0625
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
- type: entity
parent: BaseArrow
id: ADTArrowSecurity
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Projectiles/arrows.rsi
layers:
- state: tail
color: red
- state: rod
color: white
- state: tip
color: white
- state: solution1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: Projectile
damage:
types:
Piercing: 35

- type: entity
parent: BaseArrow
id: ADTArrowFlashSecurity
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Projectiles/arrows.rsi
layers:
- state: tail
color: yellow
- state: rod
color: white
- state: tip
color: white
- state: solution1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: Projectile
damage:
types:
Piercing: 20
Heat: 5
- type: AmbientSound
enabled: true
volume: 0
range: 7
sound:
path: /Audio/Machines/sonar-ping.ogg
params:
loop: true
- type: IgniteOnCollide
fireStacks: 1
- type: PointLight
enabled: true
color: "#ffee00"
radius: 15.0
energy: 9.0

- type: entity
parent: BaseArrow
id: ADTArrowGranade
components:
- type: TriggerOnCollide
fixtureID: fix1
maxTriggers: 1
- type: Sprite
sprite: ADT/Objects/Weapons/Guns/Projectiles/arrows_custom.rsi
layers:
- state: grenade
- type: ExplodeOnTrigger
- type: Explosive
explosionType: DemolitionCharge
totalIntensity: 150
intensitySlope: 25
maxIntensity: 50
canCreateVacuum: false
- type: Construction
graph: ADTArrowGranade
node: ADTArrowGranade
Loading
Loading