diff --git a/Content.Server/Gatherable/Components/GatheringProjectileComponent.cs b/Content.Server/Gatherable/Components/GatheringProjectileComponent.cs index 2ac8eedcd17..3d0d6c3d78e 100644 --- a/Content.Server/Gatherable/Components/GatheringProjectileComponent.cs +++ b/Content.Server/Gatherable/Components/GatheringProjectileComponent.cs @@ -11,4 +11,11 @@ public sealed partial class GatheringProjectileComponent : Component /// [ViewVariables(VVAccess.ReadWrite), DataField("amount")] public int Amount = 1; + + /// + /// Goobstation + /// The probability that the given projectile will actually be gathering + /// + [DataField] + public float Probability = 1f; } diff --git a/Content.Shared/Weapons/Ranged/Events/GunRefreshModifiersEvent.cs b/Content.Shared/Weapons/Ranged/Events/GunRefreshModifiersEvent.cs index 0ad79bd74af..1290a6eacff 100644 --- a/Content.Shared/Weapons/Ranged/Events/GunRefreshModifiersEvent.cs +++ b/Content.Shared/Weapons/Ranged/Events/GunRefreshModifiersEvent.cs @@ -19,5 +19,7 @@ public record struct GunRefreshModifiersEvent( Angle MinAngle, int ShotsPerBurst, float FireRate, - float ProjectileSpeed + float ProjectileSpeed, + float BurstFireRate, // Goobstation + float BurstCooldown // Goobstation ); diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index ce969899806..84ca6ddaf9b 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -594,7 +594,11 @@ public void RefreshModifiers(Entity gun) comp.MinAngle, comp.ShotsPerBurst, comp.FireRate, - comp.ProjectileSpeed + // Goobstation Lavaland PKAs Start + comp.ProjectileSpeed, + comp.BurstFireRate, + comp.BurstCooldown + // Goobstation Lavaland PKAs end ); // Begin DeltaV additions diff --git a/Content.Shared/Weapons/Ranged/Upgrades/Components/GunUpgradeDamageComponent.cs b/Content.Shared/Weapons/Ranged/Upgrades/Components/GunUpgradeDamageComponent.cs index b69c7973a03..d0743937155 100644 --- a/Content.Shared/Weapons/Ranged/Upgrades/Components/GunUpgradeDamageComponent.cs +++ b/Content.Shared/Weapons/Ranged/Upgrades/Components/GunUpgradeDamageComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared._Lavaland.Weapons.Ranged.Upgrades; using Content.Shared.Damage; using Robust.Shared.GameStates; @@ -6,12 +7,16 @@ namespace Content.Shared.Weapons.Ranged.Upgrades.Components; /// /// A for increasing the damage of a gun's projectile. /// -[RegisterComponent, NetworkedComponent, Access(typeof(GunUpgradeSystem))] +[RegisterComponent, NetworkedComponent, Access(typeof(SharedGunUpgradeSystem))] // Goobstation - Swapped from GunUpgradeSystem to SharedGunUpgradeSystem public sealed partial class GunUpgradeDamageComponent : Component { + [DataField] + public DamageSpecifier? BonusDamage; + /// - /// Additional damage added onto the projectile's base damage. + /// Goobstation + /// How much should we multiply the total projectile's damage. /// [DataField] - public DamageSpecifier Damage = new(); + public float Modifier = 1f; } diff --git a/Content.Shared/Weapons/Ranged/Upgrades/GunUpgradeSystem.cs b/Content.Shared/Weapons/Ranged/Upgrades/GunUpgradeSystem.cs index cbaef3db88e..df9338d4c42 100644 --- a/Content.Shared/Weapons/Ranged/Upgrades/GunUpgradeSystem.cs +++ b/Content.Shared/Weapons/Ranged/Upgrades/GunUpgradeSystem.cs @@ -1,5 +1,6 @@ using System.Linq; -using Content.Shared._DV.Weapons.Ranged.Upgrades; // DeltaV +using Content.Shared._DV.Weapons.Ranged.Upgrades; // DeltaV +using Content.Shared.Weapons.Ranged.Upgrades.Components; using Content.Shared.Administration.Logs; using Content.Shared.Database; using Content.Shared.Examine; @@ -9,7 +10,6 @@ using Content.Shared.Tag; using Content.Shared.Weapons.Ranged.Events; using Content.Shared.Weapons.Ranged.Systems; -using Content.Shared.Weapons.Ranged.Upgrades.Components; using Content.Shared.Whitelist; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; @@ -106,12 +106,12 @@ private void OnAfterInteractUsing(Entity ent, ref After // End DeltaV Additions } - private void OnFireRateRefresh(Entity ent, ref GunRefreshModifiersEvent args) + private void OnFireRateRefresh(Entity ent, ref GunRefreshModifiersEvent args) { args.FireRate *= ent.Comp.Coefficient; } - private void OnSpeedRefresh(Entity ent, ref GunRefreshModifiersEvent args) + private void OnSpeedRefresh(Entity ent, ref GunRefreshModifiersEvent args) { args.ProjectileSpeed *= ent.Comp.Coefficient; } @@ -120,8 +120,14 @@ private void OnDamageGunShot(Entity ent, ref GunShotE { foreach (var (ammo, _) in args.Ammo) { - if (TryComp(ammo, out var proj)) - proj.Damage += ent.Comp.Damage; + // Goobstation - Lavaland PKAs Start + if (!TryComp(ammo, out var projectile)) + continue; + var multiplier = 1f; + if (ent.Comp.BonusDamage != null) + projectile.Damage += ent.Comp.BonusDamage * multiplier; + projectile.Damage *= ent.Comp.Modifier; + // Goobstation - Lavaland PKAs Start } } diff --git a/Content.Shared/_Lavaland/Body/CursedHeartComponent.cs b/Content.Shared/_Lavaland/Body/CursedHeartComponent.cs new file mode 100644 index 00000000000..455e270bb80 --- /dev/null +++ b/Content.Shared/_Lavaland/Body/CursedHeartComponent.cs @@ -0,0 +1,19 @@ +using Content.Shared.Actions; +using Robust.Shared.GameStates; + +namespace Content.Shared._Lavaland.Body; + +[RegisterComponent, NetworkedComponent] +[AutoGenerateComponentState] +public sealed partial class CursedHeartComponent : Component +{ + [AutoNetworkedField] + public EntityUid? PumpActionEntity; + + public TimeSpan LastPump = TimeSpan.Zero; + + [DataField] + public float MaxDelay = 5f; +} + +public sealed partial class PumpHeartActionEvent : InstantActionEvent; diff --git a/Content.Shared/_Lavaland/Body/CursedHeartGrantComponent.cs b/Content.Shared/_Lavaland/Body/CursedHeartGrantComponent.cs new file mode 100644 index 00000000000..bffc194617e --- /dev/null +++ b/Content.Shared/_Lavaland/Body/CursedHeartGrantComponent.cs @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Aidenkrz +// SPDX-FileCopyrightText: 2025 Aineias1 +// SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Milon +// SPDX-FileCopyrightText: 2025 Piras314 +// SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org> +// SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 gluesniffler +// SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 whateverusername0 +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +namespace Content.Shared._Lavaland.Body; + +[RegisterComponent] +public sealed partial class CursedHeartGrantComponent : Component; \ No newline at end of file diff --git a/Content.Shared/_Lavaland/Body/CursedHeartSystem.cs b/Content.Shared/_Lavaland/Body/CursedHeartSystem.cs new file mode 100644 index 00000000000..36e24e225e2 --- /dev/null +++ b/Content.Shared/_Lavaland/Body/CursedHeartSystem.cs @@ -0,0 +1,105 @@ +using Content.Shared.Actions; +using Content.Shared.Damage; +using Content.Shared.Damage.Prototypes; +using Content.Shared.Interaction.Events; +using Content.Shared.Mobs; +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; +using Content.Shared.Popups; +using Robust.Shared.Audio; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; +using Content.Shared._Shitmed.Targeting; // Shitmed Change +using Content.Shared.Damage.Systems; // Shitmed Change +namespace Content.Shared._Lavaland.Body; + +// TODO: Use Shitmed instead of Shitcode +public sealed class CursedHeartSystem : EntitySystem +{ + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly MobStateSystem _mobState = default!; + [Dependency] private readonly DamageableSystem _damage = default!; + //[Dependency] private readonly BloodstreamSystem _bloodstream = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnPump); + + SubscribeLocalEvent(OnUseInHand); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp, out var state)) + { + if (state.CurrentState is MobState.Critical or MobState.Dead) + continue; + + if (_timing.CurTime < comp.LastPump + TimeSpan.FromSeconds(comp.MaxDelay)) + continue; + + Damage(uid); + comp.LastPump = _timing.CurTime; + } + } + + private void Damage(EntityUid uid) + { + // TODO: WHY BLOODSTREAM IS NOT IN SHARED RAAAAAGH + //_bloodstream.TryModifyBloodLevel(uid, -50, spill: false); + _damage.TryChangeDamage(uid, new DamageSpecifier(_proto.Index("Airloss"), 50), true, false); + _popup.PopupEntity(Loc.GetString("popup-cursed-heart-damage"), uid, uid, PopupType.MediumCaution); + } + + private void OnMapInit(EntityUid uid, CursedHeartComponent comp, MapInitEvent args) + { + _actions.AddAction(uid, ref comp.PumpActionEntity, "ActionPumpCursedHeart"); + } + + private void OnShutdown(EntityUid uid, CursedHeartComponent comp, ComponentShutdown args) + { + _actions.RemoveAction(uid, comp.PumpActionEntity); + } + + private void OnPump(EntityUid uid, CursedHeartComponent comp, PumpHeartActionEvent args) + { + if (args.Handled) + return; + + args.Handled = true; + _audio.PlayGlobal(new SoundPathSpecifier("/Audio/_Lavaland/heartbeat.ogg"), uid); + _damage.TryChangeDamage(uid, new DamageSpecifier(_proto.Index("Brute"), -5), true, false, targetPart: TargetBodyPart.All); // Shitmed Change + _damage.TryChangeDamage(uid, new DamageSpecifier(_proto.Index("Airloss"), -5), true, false, targetPart: TargetBodyPart.All); // Shitmed Change + _damage.TryChangeDamage(uid, new DamageSpecifier(_proto.Index("Burn"), -8), true, false, targetPart: TargetBodyPart.All); // Shitmed Change + //_bloodstream.TryModifyBloodLevel(uid, 17); + comp.LastPump = _timing.CurTime; + } + + private void OnUseInHand(EntityUid uid, CursedHeartGrantComponent comp, UseInHandEvent args) + { + if (HasComp(args.User)) + { + _popup.PopupEntity(Loc.GetString("popup-cursed-heart-already-cursed"), args.User, args.User, PopupType.MediumCaution); + args.Handled = true; + return; + } + + _audio.PlayGlobal(new SoundPathSpecifier("/Audio/_Lavaland/heartbeat.ogg"), args.User); + var heart = EnsureComp(args.User); + heart.LastPump = _timing.CurTime; + QueueDel(uid); + args.Handled = true; + } +} diff --git a/Content.Shared/_Lavaland/Weapons/GetLightAttackRangeEvent.cs b/Content.Shared/_Lavaland/Weapons/GetLightAttackRangeEvent.cs new file mode 100644 index 00000000000..ec7c51c99fe --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/GetLightAttackRangeEvent.cs @@ -0,0 +1,8 @@ +namespace Content.Goobstation.Common.Weapons; + +[ByRefEvent] +public record struct GetLightAttackRangeEvent(EntityUid? Target, EntityUid User, float Range, bool Cancel = false); + + +[ByRefEvent] +public record struct LightAttackSpecialInteractionEvent(EntityUid? Target, EntityUid User, float Range, bool Cancel = false); diff --git a/Content.Shared/_Lavaland/Weapons/MeleeWeaponRelayComponent.cs b/Content.Shared/_Lavaland/Weapons/MeleeWeaponRelayComponent.cs new file mode 100644 index 00000000000..632f23c36e6 --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/MeleeWeaponRelayComponent.cs @@ -0,0 +1,33 @@ +// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Aidenkrz +// SPDX-FileCopyrightText: 2025 Aineias1 +// SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Milon +// SPDX-FileCopyrightText: 2025 Piras314 +// SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org> +// SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 gluesniffler +// SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 whateverusername0 +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +using Robust.Shared.GameStates; + +namespace Content.Shared._Lavaland.Weapons; + +/// +/// Allows this melee weapon to relay the damage and take it from some other sources, for example gun attachments. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class MeleeWeaponRelayComponent : Component; + +[ByRefEvent] +public record struct GetRelayMeleeWeaponEvent(EntityUid? Found = null, bool Handled = false); diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Events/ProjectileShotEvent.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Events/ProjectileShotEvent.cs new file mode 100644 index 00000000000..1451cbf8cf4 --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Events/ProjectileShotEvent.cs @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Aidenkrz +// SPDX-FileCopyrightText: 2025 Aineias1 +// SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Milon +// SPDX-FileCopyrightText: 2025 Piras314 +// SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org> +// SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 gluesniffler +// SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 whateverusername0 +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +namespace Content.Shared._Lavaland.Weapons.Ranged.Events; + +/// +/// Raised on a gun when a projectile has been fired from it. +/// +public sealed class ProjectileShotEvent : EntityEventArgs +{ + public EntityUid FiredProjectile = default!; +} + diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/MultishotComponent.cs b/Content.Shared/_Lavaland/Weapons/Ranged/MultishotComponent.cs new file mode 100644 index 00000000000..2c47b33b9ef --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/MultishotComponent.cs @@ -0,0 +1,69 @@ +// SPDX-FileCopyrightText: 2024 BombasterDS <115770678+BombasterDS@users.noreply.github.com> +// SPDX-FileCopyrightText: 2024 Piras314 +// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 BombasterDS +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 Misandry +// SPDX-FileCopyrightText: 2025 gus +// SPDX-FileCopyrightText: 2025 pheenty +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +using Robust.Shared.GameStates; + +namespace Content.Goobstation.Common.Weapons.Multishot; + +/// +/// This component allows guns to be shot with another such gun at the same time by holding them in both hands. +/// +[RegisterComponent] +[NetworkedComponent, AutoGenerateComponentState] +public sealed partial class MultishotComponent : Component +{ + /// + /// Shows that this entity is affected with multishot debuffs. + /// + [DataField, AutoNetworkedField] + public bool MultishotAffected; + + /// + /// The chance of bullet fired of the gun while dual-wielding getting its BulletImpassable fixture layer removed. + /// This effectively means that the bullet won't collide with people, but has no effect on hitscans (like lasers). + /// + [DataField] + public float MissChance = 0.2f; + + /// + /// Spread multiplier of the gun while dual-wielding. + /// + [DataField] + public float SpreadMultiplier = 1.5f; + + /// + /// Flat spread increase of the gun while dual-wielding. + /// + [DataField] + public float SpreadAddition = 5f; + + /// + /// This is Common, and we can't import DamageSpecifier here, so we shitcode it instead. + /// Amount of damage applied to hands when firing this gun with another one. Doesn't damage the shooter itself. + /// + [DataField] + public float HandDamageAmount; + + /// + /// Type of the said damage. + /// + [DataField] + public string HandDamageType = "Blunt"; + + /// + /// Stamina damage applied to the entity when firing this gun with another one. + /// + [DataField] + public float StaminaDamage; + + [DataField] + public string ExamineMessage = "multishot-component-examine"; +} diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeBayonetComponent.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeBayonetComponent.cs new file mode 100644 index 00000000000..b0721d3cdce --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeBayonetComponent.cs @@ -0,0 +1,30 @@ +// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Aidenkrz +// SPDX-FileCopyrightText: 2025 Aineias1 +// SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Milon +// SPDX-FileCopyrightText: 2025 Piras314 +// SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org> +// SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 gluesniffler +// SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 whateverusername0 +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +using Robust.Shared.GameStates; + +namespace Content.Shared._Lavaland.Weapons.Ranged.Upgrades.Components; + +/// +/// Component to indicate a valid bayonet for weapon attachment +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class GunUpgradeBayonetComponent : Component; diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeComponent.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeComponent.cs new file mode 100644 index 00000000000..6dcf871df7a --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeComponent.cs @@ -0,0 +1,58 @@ +// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Aidenkrz +// SPDX-FileCopyrightText: 2025 Aineias1 +// SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Milon +// SPDX-FileCopyrightText: 2025 Piras314 +// SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org> +// SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 gluesniffler +// SPDX-FileCopyrightText: 2025 pheenty +// SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 whateverusername0 +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +using Robust.Shared.GameStates; + + +namespace Content.Shared._Lavaland.Weapons.Ranged.Upgrades.Components; + +[Access(typeof(SharedGunUpgradeSystem))] +[RegisterComponent, NetworkedComponent] +public sealed partial class GunUpgradeLavalandComponent : Component +{ + /// + /// Literal name of this upgrade that is shown on all examine texts. + /// + [DataField(required: true)] + public LocId Name; + + /// + /// Text to use when examining the upgrade itself. + /// + [DataField] + public LocId? ExamineTextType = "gun-upgrade-examine-type-upgrade"; + + /// + /// Text template to use when examining a weapon where this upgrade is inserted to. + /// + [DataField] + public LocId? InsertedTextType = "gun-upgrade-inserted-examine-type-contains"; + + [DataField] + public int? CapacityCost; + + /// + /// If this string matches with some other weapon upgrade, it will fil to install. + /// + [DataField] + public string? UniqueGroup; +} diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeComponentsComponent.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeComponentsComponent.cs new file mode 100644 index 00000000000..eae8aa60bf7 --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeComponentsComponent.cs @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Aidenkrz +// SPDX-FileCopyrightText: 2025 Aineias1 +// SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Milon +// SPDX-FileCopyrightText: 2025 Piras314 +// SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org> +// SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 gluesniffler +// SPDX-FileCopyrightText: 2025 pheenty +// SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 whateverusername0 +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._Lavaland.Weapons.Ranged.Upgrades.Components; + +/// +/// Adds components when inserted and removes them when ejected from a weapon. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedGunUpgradeSystem))] +public sealed partial class GunUpgradeComponentsComponent : Component +{ + [DataField] + public ComponentRegistry Components = new(); +} diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeFireRateComponent.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeFireRateComponent.cs new file mode 100644 index 00000000000..bc70e20219a --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeFireRateComponent.cs @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Aidenkrz +// SPDX-FileCopyrightText: 2025 Aineias1 +// SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Milon +// SPDX-FileCopyrightText: 2025 Piras314 +// SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org> +// SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 gluesniffler +// SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 whateverusername0 +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +using Robust.Shared.GameStates; + +namespace Content.Shared._Lavaland.Weapons.Ranged.Upgrades.Components; + +/// +/// A for increasing the firerate of a gun. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedGunUpgradeSystem))] +public sealed partial class GunUpgradeFireRateLavalandComponent : Component +{ + [DataField] + public float Coefficient = 1; +} diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradePressureComponent.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradePressureComponent.cs new file mode 100644 index 00000000000..f5c387512bb --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradePressureComponent.cs @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 pheenty +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +using Content.Shared.Atmos; + +namespace Content.Shared._Lavaland.Weapons.Ranged.Upgrades.Components; + +/// +/// Changes pressure modifiers on a weapon that supports them. +/// +[RegisterComponent] +public sealed partial class GunUpgradePressureComponent : Component +{ + [DataField] + public float? NewLowerBound; + + [DataField] + public float? NewUpperBound; + + [DataField] + public bool? NewApplyWhenInRange = true; + + [DataField] + public float? NewAppliedModifier = 2f; + + [ViewVariables] + public float SavedLowerBound = Atmospherics.OneAtmosphere * 0.2f; + + [ViewVariables] + public float SavedUpperBound = Atmospherics.OneAtmosphere * 0.5f; + + [ViewVariables] + public bool SavedApplyWhenInRange = true; + + [ViewVariables] + public float SavedAppliedModifier = 2f; +} diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeProjectileComponentsComponent.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeProjectileComponentsComponent.cs new file mode 100644 index 00000000000..622fe25e300 --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeProjectileComponentsComponent.cs @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Aidenkrz +// SPDX-FileCopyrightText: 2025 Aineias1 +// SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Milon +// SPDX-FileCopyrightText: 2025 Piras314 +// SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org> +// SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 gluesniffler +// SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 whateverusername0 +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._Lavaland.Weapons.Ranged.Upgrades.Components; + +/// +/// A for adding new components to projectiles shot by this weapon. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedGunUpgradeSystem))] +public sealed partial class GunUpgradeProjectileComponentsComponent : Component +{ + [DataField] + public ComponentRegistry Components = new(); +} diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeSpeedComponent.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeSpeedComponent.cs new file mode 100644 index 00000000000..594190acdd5 --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeSpeedComponent.cs @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Aidenkrz +// SPDX-FileCopyrightText: 2025 Aineias1 +// SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Milon +// SPDX-FileCopyrightText: 2025 Piras314 +// SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org> +// SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 gluesniffler +// SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 whateverusername0 +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +using Robust.Shared.GameStates; + +namespace Content.Shared._Lavaland.Weapons.Ranged.Upgrades.Components; + +/// +/// A for increasing the speed of a gun's projectile. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedGunUpgradeSystem))] +public sealed partial class GunUpgradeSpeedLavalandComponent : Component +{ + [DataField] + public float Coefficient = 1; +} diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeVampirismComponent.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeVampirismComponent.cs new file mode 100644 index 00000000000..4798b06cad5 --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/GunUpgradeVampirismComponent.cs @@ -0,0 +1,43 @@ +// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Aidenkrz +// SPDX-FileCopyrightText: 2025 Aineias1 +// SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Milon +// SPDX-FileCopyrightText: 2025 Piras314 +// SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org> +// SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 gluesniffler +// SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 whateverusername0 +// +// SPDX-License-Identifier: AGPL-3.0-or-later + + +using Content.Shared.Damage; +using Robust.Shared.GameStates; + +namespace Content.Shared._Lavaland.Weapons.Ranged.Upgrades.Components; + +/// +/// A for increasing the damage of a gun's projectile. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedGunUpgradeSystem))] +public sealed partial class GunUpgradeVampirismComponent : Component +{ + [DataField] + public DamageSpecifier DamageOnHit = new(); +} + +[RegisterComponent, NetworkedComponent, Access(typeof(SharedGunUpgradeSystem))] +public sealed partial class ProjectileVampirismComponent : Component +{ + [DataField] + public DamageSpecifier DamageOnHit = new(); +} diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/UpgradeableWeaponComponent.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/UpgradeableWeaponComponent.cs new file mode 100644 index 00000000000..ec2e68d985d --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/UpgradeableWeaponComponent.cs @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Aidenkrz +// SPDX-FileCopyrightText: 2025 Aineias1 +// SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Milon +// SPDX-FileCopyrightText: 2025 Piras314 +// SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org> +// SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 gluesniffler +// SPDX-FileCopyrightText: 2025 pheenty +// SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 whateverusername0 +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +using Robust.Shared.GameStates; + +namespace Content.Shared._Lavaland.Weapons.Ranged.Upgrades.Components; + +[RegisterComponent, NetworkedComponent, Access(typeof(SharedGunUpgradeSystem))] +public sealed partial class UpgradeableWeaponComponent : Component +{ + /// + /// If specified, upgrades that support capacity will block any new upgrades from being inserted + /// + [DataField] + public int? MaxUpgradeCapacity; +} diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/WeaponUpgradeDamageComponent.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/WeaponUpgradeDamageComponent.cs new file mode 100644 index 00000000000..7aa88f1f6ce --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/WeaponUpgradeDamageComponent.cs @@ -0,0 +1,20 @@ +using Content.Shared.Damage; +using Robust.Shared.GameStates; + +namespace Content.Shared._Lavaland.Weapons.Ranged.Upgrades.Components; + +/// +/// A for increasing the damage of a gun's projectile. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedGunUpgradeSystem))] +public sealed partial class WeaponUpgradeDamageComponent : Component +{ + [DataField] + public DamageSpecifier? BonusDamage; + + /// + /// How much should we multiply the total projectile's damage. + /// + [DataField] + public float Modifier = 1f; +} diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/WeaponUpgradeRangeComponent.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/WeaponUpgradeRangeComponent.cs new file mode 100644 index 00000000000..3b05cf8c3e1 --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/WeaponUpgradeRangeComponent.cs @@ -0,0 +1,16 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._Lavaland.Weapons.Ranged.Upgrades.Components; + +/// +/// Upgrades the range of a melee weapon. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class WeaponUpgradeRangeComponent : Component +{ + [DataField] + public float? BonusRange; + + [DataField] + public float? RangeMultiplier; +} diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/WeaponUpgradeSpeedComponent.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/WeaponUpgradeSpeedComponent.cs new file mode 100644 index 00000000000..2cae10739d3 --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/Components/WeaponUpgradeSpeedComponent.cs @@ -0,0 +1,16 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._Lavaland.Weapons.Ranged.Upgrades.Components; + +/// +/// Improves attack rate of melee weapon. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class WeaponUpgradeSpeedComponent : Component +{ + [DataField] + public float? BonusAttackRate; + + [DataField] + public float? AttackRateMultiplier; +} diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/SharedGunUpgradeSystem.Upgrades.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/SharedGunUpgradeSystem.Upgrades.cs new file mode 100644 index 00000000000..ae627260045 --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/SharedGunUpgradeSystem.Upgrades.cs @@ -0,0 +1,129 @@ +using Content.Goobstation.Common.Weapons; +using Content.Shared._Goobstation.Weapons.Ranged; +using Content.Shared._Lavaland.Weapons.Ranged.Upgrades.Components; +using Content.Shared.Mobs.Components; +using Content.Shared.Projectiles; +using Content.Shared.Weapons.Melee.Events; +using Content.Shared.Weapons.Ranged.Events; +using Content.Shared.Weapons.Ranged.Systems; +using Content.Shared.Weapons.Ranged.Upgrades.Components; +using Robust.Shared.Containers; + +namespace Content.Shared._Lavaland.Weapons.Ranged.Upgrades; + +public abstract partial class SharedGunUpgradeSystem +{ + private void InitializeUpgrades() + { + SubscribeLocalEvent(OnCompsUpgradeInsert); + SubscribeLocalEvent(OnCompsUpgradeEject); + + SubscribeLocalEvent(OnFireRateRefresh); + SubscribeLocalEvent(OnFireRateRefreshRecharge); + + SubscribeLocalEvent(OnSpeedRefresh); + + SubscribeLocalEvent(OnDamageGunShotComps); + + SubscribeLocalEvent(OnVampirismGunShot); + SubscribeLocalEvent(OnVampirismProjectileHit); + + SubscribeLocalEvent(OnGetMeleeRelay); + + SubscribeLocalEvent(OnGetMeleeDamage); + + SubscribeLocalEvent(OnGetRange); + SubscribeLocalEvent(OnGetAttackRate); + } + + private void OnFireRateRefresh(Entity ent, ref GunRefreshModifiersEvent args) + { + args.FireRate *= ent.Comp.Coefficient; + args.BurstFireRate *= ent.Comp.Coefficient; + args.BurstCooldown /= ent.Comp.Coefficient; + args.BurstFireRate /= ent.Comp.Coefficient; + } + + private void OnFireRateRefreshRecharge(Entity ent, ref RechargeBasicEntityAmmoGetCooldownModifiersEvent args) + { + args.Multiplier /= ent.Comp.Coefficient; + } + + private void OnCompsUpgradeInsert(Entity ent, ref EntGotInsertedIntoContainerMessage args) + { + if (!_timing.ApplyingState && HasComp(args.Container.Owner)) + EntityManager.AddComponents(args.Container.Owner, ent.Comp.Components); + } + + private void OnCompsUpgradeEject(Entity ent, ref EntGotRemovedFromContainerMessage args) + { + if (!_timing.ApplyingState && HasComp(args.Container.Owner)) + EntityManager.RemoveComponents(args.Container.Owner, ent.Comp.Components); + } + + private void OnSpeedRefresh(Entity ent, ref GunRefreshModifiersEvent args) + { + args.ProjectileSpeed *= ent.Comp.Coefficient; + } + + private void OnDamageGunShotComps(Entity ent, ref GunShotEvent args) + { + foreach (var (ammo, _) in args.Ammo) + { + if (HasComp(ammo)) + EntityManager.AddComponents(ammo.Value, ent.Comp.Components); + } + } + + private void OnVampirismGunShot(Entity ent, ref GunShotEvent args) + { + foreach (var (ammo, _) in args.Ammo) + { + if (!HasComp(ammo)) + continue; + + var comp = EnsureComp(ammo.Value); + comp.DamageOnHit = ent.Comp.DamageOnHit; + } + } + + private void OnVampirismProjectileHit(Entity ent, ref ProjectileHitEvent args) + { + if (!HasComp(args.Target)) + return; + if (args.Shooter != null) + _damage.TryChangeDamage(args.Shooter.Value, ent.Comp.DamageOnHit); // may need to revert this shit + } + + private void OnGetMeleeRelay(Entity ent, ref GetRelayMeleeWeaponEvent args) + { + if (args.Handled) + return; + + args.Found = ent.Owner; + args.Handled = true; + } + + private void OnGetMeleeDamage(Entity ent, ref GetMeleeDamageEvent args) + { + if (ent.Comp.BonusDamage != null) + args.Damage += ent.Comp.BonusDamage; + args.Damage *= ent.Comp.Modifier; + } + + private void OnGetRange(Entity ent, ref GetLightAttackRangeEvent args) + { + if (ent.Comp.BonusRange != null) + args.Range += ent.Comp.BonusRange.Value; + if (ent.Comp.RangeMultiplier != null) + args.Range *= ent.Comp.RangeMultiplier.Value; + } + + private void OnGetAttackRate(Entity ent, ref GetMeleeAttackRateEvent args) + { + if (ent.Comp.BonusAttackRate != null) + args.Rate += ent.Comp.BonusAttackRate.Value; + if (ent.Comp.AttackRateMultiplier != null) + args.Multipliers *= ent.Comp.AttackRateMultiplier.Value; + } +} diff --git a/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/SharedGunUpgradeSystem.cs b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/SharedGunUpgradeSystem.cs new file mode 100644 index 00000000000..29c4f632068 --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/Ranged/Upgrades/SharedGunUpgradeSystem.cs @@ -0,0 +1,188 @@ +// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Aidenkrz +// SPDX-FileCopyrightText: 2025 Aineias1 +// SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 Ilya246 <57039557+Ilya246@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Milon +// SPDX-FileCopyrightText: 2025 Misandry +// SPDX-FileCopyrightText: 2025 Piras314 +// 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 Ted Lukin <66275205+pheenty@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org> +// SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 gluesniffler +// SPDX-FileCopyrightText: 2025 gus +// SPDX-FileCopyrightText: 2025 pheenty +// SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 whateverusername0 +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +using Content.Shared._Lavaland.Weapons.Ranged.Upgrades.Components; +using Content.Shared._Lavaland.Weapons.Ranged.Events; +using Content.Shared.Containers.ItemSlots; +using Content.Shared.Damage; +using Content.Shared.Examine; +using Content.Shared.Weapons.Ranged.Events; +using Content.Shared.Weapons.Ranged.Systems; +using System.Linq; +using Content.Goobstation.Common.Weapons; +using Content.Shared._Goobstation.Weapons.Ranged; +using Content.Shared.Actions; +using Content.Shared.Damage.Systems; +using Content.Shared.Weapons.Melee.Events; +using Content.Shared.Weapons.Ranged.Components; +using Robust.Shared.Containers; +using Robust.Shared.Timing; + +namespace Content.Shared._Lavaland.Weapons.Ranged.Upgrades; + +public abstract partial class SharedGunUpgradeSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly ActionContainerSystem _actionContainer = default!; + [Dependency] private readonly SharedGunSystem _gun = default!; + [Dependency] private readonly DamageableSystem _damage = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnUpgradeInserted); + SubscribeLocalEvent(OnItemSlotInsertAttemptEvent); + SubscribeLocalEvent(OnExamine); + + SubscribeLocalEvent(RelayEvent); + SubscribeLocalEvent(RelayEvent); + SubscribeLocalEvent(RelayEvent); + SubscribeLocalEvent(RelayEvent); + SubscribeLocalEvent(RelayEvent); + SubscribeLocalEvent(RelayEvent); + SubscribeLocalEvent(RelayEvent); + SubscribeLocalEvent(RelayEvent); + SubscribeLocalEvent(RelayEvent); + + //SubscribeLocalEvent(RelayGetActionEvent); // Floofstation - not doing upgrade pull outs yet + + SubscribeLocalEvent(OnUpgradeExamine); + + InitializeUpgrades(); + } + + private void RelayEvent(Entity ent, ref T args) where T : notnull + { + foreach (var upgrade in GetCurrentUpgrades(ent)) + { + RaiseLocalEvent(upgrade, ref args); + } + } + + // Floofstation - we are not doing upgrade pulling out yet (pull out game weak) + // Because of how action container work we need that workaround for GetItemActionsEvent + /* + private void RelayGetActionEvent(Entity ent, ref GetItemActionsEvent args) + { + foreach (var upgrade in GetCurrentUpgrades(ent)) + { + var ev = new GetItemActionsEvent(_actionContainer, args.User, upgrade.Owner, isEquipping: args.isEquipping); + RaiseLocalEvent(upgrade.Owner, ev); + + if (ev.Actions.Count == 0) + continue; + + if (!args.IsEquipping) + { + _actions.RemoveProvidedActions(args.User, upgrade.Owner); + _actions.SaveActions(args.User); + continue; + } + + _actions.GrantActions(args.User, ev.Actions, upgrade.Owner); + _actions.LoadActions(args.User); + } + } + */ + private void OnExamine(Entity ent, ref ExaminedEvent args) + { + var usedCapacity = 0; + using (args.PushGroup(nameof(UpgradeableWeaponComponent))) + { + foreach (var upgrade in GetCurrentUpgrades(ent)) + { + if (upgrade.Comp.InsertedTextType != null) + args.PushMarkup(Loc.GetString(upgrade.Comp.InsertedTextType.Value, ("name", Loc.GetString(upgrade.Comp.Name)))); + if (upgrade.Comp.CapacityCost != null) + usedCapacity += upgrade.Comp.CapacityCost.Value; + } + + if (ent.Comp.MaxUpgradeCapacity != null) + args.PushMarkup(Loc.GetString("upgradeable-gun-total-remaining-capacity", ("value", ent.Comp.MaxUpgradeCapacity.Value - usedCapacity))); + } + } + + private void OnUpgradeExamine(Entity ent, ref ExaminedEvent args) + { + if (ent.Comp.ExamineTextType != null) // TODO add a list of all weapon types that this gun upgrade can be inserted to + args.PushMarkup(Loc.GetString(ent.Comp.ExamineTextType.Value, ("name", Loc.GetString(ent.Comp.Name)))); + + if (ent.Comp.CapacityCost != null) + args.PushMarkup(Loc.GetString("gun-upgrade-capacity-cost", ("value", ent.Comp.CapacityCost.Value))); + } + + private void OnUpgradeInserted(Entity ent, ref EntInsertedIntoContainerMessage args) + { + // Update some characteristics here. + if (TryComp(ent.Owner, out GunComponent? gun)) + _gun.RefreshModifiers((ent.Owner, gun)); + } + + private void OnItemSlotInsertAttemptEvent(Entity ent, ref ItemSlotInsertAttemptEvent args) + { + if (!TryComp(args.Item, out var upgradeComp) + || !TryComp(ent, out var itemSlots)) + return; + + var currentUpgrades = GetCurrentUpgrades(ent, itemSlots); + var totalCapacityCost = currentUpgrades.Sum(upgrade => upgrade.Comp.CapacityCost); + if (totalCapacityCost + upgradeComp.CapacityCost > ent.Comp.MaxUpgradeCapacity) + { + args.Cancelled = true; + return; + } + + foreach (var curUpgrade in currentUpgrades) + { + if (upgradeComp.UniqueGroup == null + || curUpgrade.Comp.UniqueGroup == null + || upgradeComp.UniqueGroup != curUpgrade.Comp.UniqueGroup) + continue; + + args.Cancelled = true; + return; + } + } + + public HashSet> GetCurrentUpgrades(Entity ent, ItemSlotsComponent? itemSlots = null) + { + if (!Resolve(ent, ref itemSlots)) + return []; + + var upgrades = new HashSet>(); + + foreach (var itemSlot in itemSlots.Slots.Values) + { + if (itemSlot is { HasItem: true, Item: { } item } + && TryComp(item, out var upgradeComp)) + upgrades.Add((item, upgradeComp)); + } + + return upgrades; + } +} diff --git a/Content.Shared/_Lavaland/Weapons/RechargeBasicEntityAmmoGetCooldownModifiersEvent.cs b/Content.Shared/_Lavaland/Weapons/RechargeBasicEntityAmmoGetCooldownModifiersEvent.cs new file mode 100644 index 00000000000..d93ab9f8b37 --- /dev/null +++ b/Content.Shared/_Lavaland/Weapons/RechargeBasicEntityAmmoGetCooldownModifiersEvent.cs @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Aidenkrz +// SPDX-FileCopyrightText: 2025 Ilya246 <57039557+Ilya246@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 Misandry +// SPDX-FileCopyrightText: 2025 SX-7 <92227810+SX-7@users.noreply.github.com> +// SPDX-FileCopyrightText: 2025 gus +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +namespace Content.Shared._Goobstation.Weapons.Ranged; + +// todo: get event names closer to the length of the bible +[ByRefEvent] +public record struct RechargeBasicEntityAmmoGetCooldownModifiersEvent( + float Multiplier +); \ No newline at end of file diff --git a/Resources/Locale/en-US/_Lavaland/salvage/fibers.ftl b/Resources/Locale/en-US/_Lavaland/salvage/fibers.ftl new file mode 100644 index 00000000000..e66f3d0c88d --- /dev/null +++ b/Resources/Locale/en-US/_Lavaland/salvage/fibers.ftl @@ -0,0 +1 @@ +fibers-kinetic = kinetic diff --git a/Resources/Locale/en-US/weapons/ranged/upgrades.ftl b/Resources/Locale/en-US/weapons/ranged/upgrades.ftl index c766b1e6672..90cfddce330 100644 --- a/Resources/Locale/en-US/weapons/ranged/upgrades.ftl +++ b/Resources/Locale/en-US/weapons/ranged/upgrades.ftl @@ -5,3 +5,4 @@ gun-upgrade-popup-insert = Inserted {THE($upgrade)} into {THE($gun)}! gun-upgrade-examine-text-damage = This has upgraded [color=#ec9b2d][bold]damage.[/bold][/color] gun-upgrade-examine-text-range = This has upgraded [color=#2decec][bold]range.[/bold][/color] gun-upgrade-examine-text-reload = This has upgraded [color=#bbf134][bold]fire rate.[/bold][/color] +gun-upgrade-vampirism-name = This has upgraded [color=crimson][bold]vampirism[/bold][/color] diff --git a/Resources/Prototypes/Entities/Objects/Tools/pka_upgrade.yml b/Resources/Prototypes/Entities/Objects/Tools/pka_upgrade.yml index 4e99802c522..d8b8be20b7a 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/pka_upgrade.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/pka_upgrade.yml @@ -31,14 +31,20 @@ color: "#a71010" - state: overlay-3 color: "#eb4c13" + # Floofstation - lavaland pka changes start - type: GunUpgrade #tags: [ GunUpgradeDamage ] # DeltaV - allow multiple examineText: gun-upgrade-examine-text-damage - type: GunUpgradeDamage - damage: - types: - Blunt: 5 # DeltaV - modkits can still exist but greatly lowering how much it does so we don't have 70 damage monster gun anymore - #Structural: 15 # DeltaV - SS13 parity, 10 blunt per shot only + modifier: 1.25 + #Modifier: + # types: + # Blunt: 5 # DeltaV - modkits can still exist but greatly lowering how much it does so we don't have 70 damage monster gun anymore + # #Structural: 15 # DeltaV - SS13 parity, 10 blunt per shot only + #damage: + # types: + # Blunt: 10 + # Floofstation - lavaland pka changes end - type: entity id: PKAUpgradeRange @@ -54,13 +60,17 @@ color: "#1012a7" - state: overlay-3 color: "#1373eb" + # Floofstation - lavaland pka changes start - type: GunUpgrade #tags: [ GunUpgradeRange ] # DeltaV - allow multiple examineText: gun-upgrade-examine-text-range - - type: GunUpgradeRange # DeltaV - actually change range not speed - coefficient: 1.15 # DeltaV - lowered further to account for increased base range - - type: GunUpgradeCost # DeltaV - cost: 25 + #- type: GunUpgradeRange # DeltaV - actually change range not speed + # coefficient: 1.15 # DeltaV - lowered further to account for increased base range + #- type: GunUpgradeCost # DeltaV + # cost: 25 + - type: GunUpgradeSpeed + coefficient: 1.5 + # Floofstation - lavaland pka changes end - type: entity id: PKAUpgradeFireRate @@ -81,4 +91,3 @@ examineText: gun-upgrade-examine-text-reload - type: GunUpgradeFireRate coefficient: 1.25 # DeltaV - was 1.5, SS13 parity (maths used is different but same result: 0.64s recharge time with 3 upgrades) - diff --git a/Resources/Prototypes/_DV/Catalog/VendingMachines/Inventories/salvage_points.yml b/Resources/Prototypes/_DV/Catalog/VendingMachines/Inventories/salvage_points.yml index 2a852e50da2..4c3e3980402 100644 --- a/Resources/Prototypes/_DV/Catalog/VendingMachines/Inventories/salvage_points.yml +++ b/Resources/Prototypes/_DV/Catalog/VendingMachines/Inventories/salvage_points.yml @@ -47,7 +47,17 @@ cost: 3500 - id: PKAUpgradeDamage cost: 5000 - #BEGIN floofstation addtions + #BEGIN floofstation addtions + - id: PKAUpgradeFireRate + cost: 5000 + - id: LavalandWeaponKineticMachete + cost: 750 + - id: LavalandWeaponKineticClaws + cost: 750 + - id: WeaponCrusherHammer + cost: 1000 + - id: WeaponCrusherHalberd + cost: 1000 - id: WeaponSniperMosin cost: 5000 - id: WeaponPistolForged @@ -79,6 +89,5 @@ # TODO: mining drone stuff - id: MedicalTrackingImplanter cost: 10000 - - id: LavalandJaunter + - id: LavalandJaunter cost: 2500 - \ No newline at end of file diff --git a/Resources/Prototypes/_DV/Recipes/Lathes/Packs/logistics.yml b/Resources/Prototypes/_DV/Recipes/Lathes/Packs/logistics.yml index 8beacc5b63d..dae91ebedb8 100644 --- a/Resources/Prototypes/_DV/Recipes/Lathes/Packs/logistics.yml +++ b/Resources/Prototypes/_DV/Recipes/Lathes/Packs/logistics.yml @@ -27,6 +27,11 @@ - WeaponProtoKineticAccelerator - PKAUpgradeDamage - PKAUpgradeRange + # Floofstation additions start + - WeaponProtoKineticPistol + - WeaponProtoKineticRepeater + - WeaponProtoKineticShotgun + # Floofstation additions end - type: latheRecipePack id: SalvageHardsuits diff --git a/Resources/Prototypes/_DV/Research/arsenal.yml b/Resources/Prototypes/_DV/Research/arsenal.yml index 0f20e3bda2a..85697d771ba 100644 --- a/Resources/Prototypes/_DV/Research/arsenal.yml +++ b/Resources/Prototypes/_DV/Research/arsenal.yml @@ -12,6 +12,11 @@ recipeUnlocks: - WeaponProtoKineticAccelerator - ShuttleGunKineticCircuitboard + # Floofstation additions start + - WeaponProtoKineticPistol + - WeaponProtoKineticRepeater + - WeaponProtoKineticShotgun + # Floofstation additions end # These are roundstart but not replenishable for salvage # Tier 2 diff --git a/Resources/Prototypes/_Lavaland/Actions/cursed_heart.yml b/Resources/Prototypes/_Lavaland/Actions/cursed_heart.yml new file mode 100644 index 00000000000..9fcc963972e --- /dev/null +++ b/Resources/Prototypes/_Lavaland/Actions/cursed_heart.yml @@ -0,0 +1,17 @@ +- type: entity + parent: BaseAction + id: ActionPumpCursedHeart + name: Heartbeat + description: Pump your own blood to live! + categories: [ HideSpawnMenu ] + components: + - type: Action + icon: + sprite: _Lavaland/Objects/Specific/loot.rsi + state: cursed_heart + checkCanInteract: false + checkConsciousness: false + itemIconStyle: BigAction + useDelay: 1 + - type: InstantAction + event: !type:PumpHeartActionEvent diff --git a/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/Guns/Basic/pka.yml b/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/Guns/Basic/pka.yml index dc7659c8e69..0b762b48bb9 100644 --- a/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/Guns/Basic/pka.yml +++ b/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/Guns/Basic/pka.yml @@ -4,6 +4,117 @@ table: !type:GroupSelector children: - id: WeaponProtoKineticAccelerator - #- id: WeaponProtoKineticShotgun - Euphoria - #- id: WeaponProtoKineticRepeater - Euphoria - #- id: WeaponProtoKineticPistol - Euphoria + - id: WeaponProtoKineticShotgun + - id: WeaponProtoKineticRepeater + - id: WeaponProtoKineticPistol + +- type: entity + name: proto-kinetic shotgun + id: WeaponProtoKineticShotgun + parent: [ BaseGunWieldable, WeaponProtoKineticAcceleratorBase, BaseCargoContraband ] + description: Fires a spread of low-damage kinetic bolts that are half as effective for mining. + components: + - type: Sprite + sprite: _Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi + layers: + - state: icon + - state: animation-icon + visible: false + map: [ "empty-icon" ] + - type: Clothing + sprite: _Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi + - type: BasicEntityAmmoProvider + proto: PelletKineticSpread + - type: GunRequiresWield + - type: Item + sprite: _Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi + shape: + - 0,0,4,0 + - type: UpgradeableGun + maxUpgradeCount: 10 # DeltaV - use cost for limiting modkits instead + whitelist: + tags: + - PKAUpgrade + - type: UpgradeableGunCost # DeltaV + maxCost: 100 + - type: ContainerContainer + containers: + upgrades: !type:Container + +- type: entity + name: proto-kinetic repeater + id: WeaponProtoKineticRepeater + parent: [ WeaponProtoKineticAcceleratorBase, BaseCargoContraband ] + description: Fires a barrage of medium-damage kinetic bolts at a short range. + components: + - type: Sprite + sprite: _Lavaland/Objects/Weapons/Guns/Basic/kinetic_repeater.rsi + layers: + - state: icon + - type: Clothing + sprite: _Lavaland/Objects/Weapons/Guns/Basic/kinetic_repeater.rsi + - type: Gun + selectedMode: Burst + burstFireRate: 3 + burstCooldown: 1.5 + availableModes: + - Burst + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/kinetic_accel.ogg + - type: BasicEntityAmmoProvider + proto: RapidBulletKinetic + capacity: 3 + count: 3 + - type: Item + sprite: _Lavaland/Objects/Weapons/Guns/Basic/kinetic_repeater.rsi + shape: + - 0,0,2,1 + - type: UpgradeableGun + maxUpgradeCount: 10 # DeltaV - use cost for limiting modkits instead + whitelist: + tags: + - PKAUpgrade + - type: UpgradeableGunCost # DeltaV + maxCost: 100 + - type: ContainerContainer + containers: + upgrades: !type:Container + +- type: entity + name: proto-kinetic pistol + id: WeaponProtoKineticPistol + parent: [ WeaponProtoKineticAcceleratorBase, BaseCargoContraband ] + description: Fires low-damage kinetic bolts, has a higher mod capacity. + components: + - type: Sprite + sprite: _Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi + layers: + - state: icon + - type: Clothing + sprite: _Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi + - type: BasicEntityAmmoProvider + proto: RapidBulletKinetic + - type: Gun + availableModes: + - FullAuto + - SemiAuto + #selectedMode: Burst # Only a pistol should support that for balancing reasons + - type: Multishot # Only a pistol should support that for balancing reasons + missChance: 0 + spreadAddition: 5 + - type: Item + sprite: _Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi + size: Small + shape: + - 0,0,1,0 + - 0,1,0,1 + - type: UpgradeableGun + maxUpgradeCount: 10 # DeltaV - use cost for limiting modkits instead + whitelist: + tags: + - PKAUpgrade + - type: UpgradeableGunCost # DeltaV + maxCost: 100 + - type: ContainerContainer + containers: + upgrades: !type:Container diff --git a/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml new file mode 100644 index 00000000000..c5a4f38a648 --- /dev/null +++ b/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -0,0 +1,63 @@ +# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> +# SPDX-FileCopyrightText: 2025 Aidenkrz +# SPDX-FileCopyrightText: 2025 Aineias1 +# SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com> +# SPDX-FileCopyrightText: 2025 GoobBot +# SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com> +# SPDX-FileCopyrightText: 2025 Milon +# SPDX-FileCopyrightText: 2025 Piras314 +# SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.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 Unlumination <144041835+Unlumy@users.noreply.github.com> +# SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> +# SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com> +# SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org> +# SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com> +# SPDX-FileCopyrightText: 2025 gluesniffler +# SPDX-FileCopyrightText: 2025 thebiggestbruh +# SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com> +# SPDX-FileCopyrightText: 2025 whateverusername0 +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +- type: entity + id: RapidBulletKinetic # Used for PK repeater and pistol + name: rapid kinetic bolt + parent: BulletKinetic + categories: [ HideSpawnMenu ] + components: + - type: Projectile + damage: + types: + Blunt: 8 + - type: TimedDespawn + lifetime: 0.22 # roughly 5.5 tiles + +- type: entity + id: WeakBulletKinetic # Used for PK shotgun + categories: [ HideSpawnMenu ] + parent: RapidBulletKinetic + components: + - type: Projectile + damage: + types: + Blunt: 5 + +- type: entity + id: PelletKinetic + categories: [ HideSpawnMenu ] + parent: WeakBulletKinetic + components: + - type: GatheringProjectile + probability: 0.5 + +- type: entity + id: PelletKineticSpread + categories: [ HideSpawnMenu ] + parent: PelletKinetic + components: + - type: ProjectileSpread + proto: PelletKinetic + count: 4 + spread: 20 diff --git a/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/crushers.yml b/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/crushers.yml index 52eca4eac80..e0e26dea943 100644 --- a/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/crushers.yml +++ b/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/crushers.yml @@ -5,5 +5,70 @@ children: - id: WeaponCrusher - id: WeaponCrusherGlaive - #- id: WeaponCrusherHammer -Euphoria - #- id: WeaponCrusherHalberd -Euphoria + - id: WeaponCrusherHammer + - id: WeaponCrusherHalberd + +- type: entity + parent: [WeaponCrusher, BaseSecurityCargoContraband] + id: WeaponCrusherHammer + name: crusher hammer + description: A beefy, two-handed weapon that inflicts knockback and heavier damage than a crusher. + components: + - type: Sprite + sprite: _Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi + state: icon + - type: MeleeWeapon # Slower attack speed but higher damage makes it more risky and rewarding to use + attackRate: 0.6 + damage: + types: + Blunt: 12 + - type: IncreaseDamageOnWield + damage: + types: + Blunt: 13 + Structural: 15 # Breaks weak rocks effectively + - type: Item + size: Ginormous + sprite: _Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi + - type: Tool + speedModifier: 1.5 + useSound: + path: /Audio/Items/trayhit2.ogg + - type: Clothing + sprite: _Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi + quickEquip: false + slots: + - Back + - suitStorage + +- type: entity + parent: [WeaponCrusher, BaseSecurityCargoContraband] + id: WeaponCrusherHalberd + name: crusher halberd + description: A universal weapon that combines the power of a crusher and the range of a spear. + components: + - type: Sprite + sprite: _Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi + state: icon + - type: Item + size: Ginormous + sprite: _Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi + # Basically a crusher but better + - type: MeleeWeapon + range: 2.2 + damage: + types: + Slash: 6 + Blunt: 5 + - type: IncreaseDamageOnWield + damage: + types: + Piercing: 3 + Slash: 3 + Structural: 15 # Breaks weak rocks effectively + - type: Clothing + sprite: _Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi + quickEquip: false + slots: + - Back + - suitStorage diff --git a/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/secondary.yml b/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/secondary.yml index a4c6f259dea..290f6146f52 100644 --- a/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/secondary.yml +++ b/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/secondary.yml @@ -4,5 +4,88 @@ table: !type:GroupSelector children: - id: WeaponCrusherDagger - #- id: LavalandWeaponKineticClaws -Euphoria - #- id: LavalandWeaponKineticMachete -Euphoria + - id: LavalandWeaponKineticClaws + - id: LavalandWeaponKineticMachete + +- type: entity + parent: [BaseItem, ClothingHandsBase, BaseSecurityCargoContraband] + id: LavalandWeaponKineticClaws + name: kinetic claws + description: Unleash your inner edgelord with this one-handed claw small enough to fit in your backpack. + components: + - type: Appearance + - type: Sprite + sprite: _Lavaland/Objects/Weapons/Secondary/kinetic_claws.rsi + state: icon + - type: Clothing + sprite: _Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi + - type: Item + size: Normal + sprite: _Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi + - type: MeleeWeapon + attackRate: 2.5 # "We have northstars at home" + wideAnimationRotation: -135 + damage: + types: + Slash: 7 + soundHit: + collection: AlienClaw + angle: 30 + animation: WeaponArcClaw + range: 1.1 # Awful range + mustBeEquippedToUse: true + - type: Sharp + - type: Prying + - type: UseDelay + delay: 1 + - type: Fiber + fiberMaterial: fibers-kinetic + fiberColor: fibers-purple + - type: Execution + doAfterDuration: 4.0 + - type: Tool + qualities: + - Slicing + useSound: + path: /Audio/Items/Culinary/chop.ogg + - type: Scalpel # Shitmed + speed: 0.3 # awful + +- type: entity + parent: [BaseItem, BaseSecurityCargoContraband] + id: LavalandWeaponKineticMachete + name: kinetic machete + description: A smaller, one-handed variant of the crusher which allows you to attack from afar and block incoming attacks. + components: + - type: Sprite + sprite: _Lavaland/Objects/Weapons/Secondary/kinetic_machete.rsi + state: icon + - type: UseDelay + delay: 1 + - type: Appearance + - type: Sharp + - type: Execution + doAfterDuration: 4.0 + - type: DisarmMalus + - type: Prying + - type: MeleeWeapon + attackRate: 1.0 + damage: + types: + Slash: 15 + soundHit: + collection: MetalThud + angle: 0 + animation: WeaponArcThrust + range: 2 # Like a crusher, makes it possible to hit enemies without them hitting you + # TODO make it wearable on a belt/back slot + - type: Item + size: Normal + sprite: _Lavaland/Objects/Weapons/Secondary/kinetic_machete-inhands.rsi + - type: Tool + qualities: + - Slicing + useSound: + path: /Audio/Items/Culinary/chop.ogg + - type: Scalpel # Shitmed + speed: 0.55 diff --git a/Resources/Prototypes/_Lavaland/Entities/Spawners/Random/lavaland_loot.yml b/Resources/Prototypes/_Lavaland/Entities/Spawners/Random/lavaland_loot.yml new file mode 100644 index 00000000000..590e459a017 --- /dev/null +++ b/Resources/Prototypes/_Lavaland/Entities/Spawners/Random/lavaland_loot.yml @@ -0,0 +1,29 @@ +- type: entity + id: LavalandCursedHeart + parent: BaseHumanOrgan + name: heart + description: "I feel bad for the heartless bastard who lost this." + components: + - type: Sprite + sprite: _Lavaland/Objects/Specific/loot.rsi + state: cursed_heart + - type: Item + size: Small + - type: CursedHeartGrant + +- type: entity + id: LavalandVampirismCrystal + parent: BasePKAUpgrade + name: Vamprisim Crystal + components: + - type: Sprite + sprite: _Lavaland/Objects/Specific/loot.rsi + state: crystal + - type: GunUpgrade + examineText: gun-upgrade-vampirism-name + - type: GunUpgradeVampirism + damageOnHit: + types: + Slash: -1.5 + Piercing: -1.5 + Blunt: -1.5 diff --git a/Resources/Prototypes/_Lavaland/Recipies/Lathes/salvage.yml b/Resources/Prototypes/_Lavaland/Recipies/Lathes/salvage.yml new file mode 100644 index 00000000000..e762707d46e --- /dev/null +++ b/Resources/Prototypes/_Lavaland/Recipies/Lathes/salvage.yml @@ -0,0 +1,37 @@ +# pka variants +- type: latheRecipe + id: WeaponProtoKineticPistol + result: WeaponProtoKineticPistol + categories: + - Weapons + completetime: 5 + materials: + Steel: 1000 + Glass: 500 + Silver: 100 + Plasma: 500 + +- type: latheRecipe + id: WeaponProtoKineticRepeater # strongest one so most expensive + result: WeaponProtoKineticRepeater + categories: + - Weapons + completetime: 5 + materials: + Steel: 1000 + Glass: 500 + Silver: 100 + Plasma: 500 + Uranium: 500 + +- type: latheRecipe + id: WeaponProtoKineticShotgun + result: WeaponProtoKineticShotgun + categories: + - Weapons + completetime: 5 + materials: + Steel: 1000 + Glass: 500 + Silver: 100 + Plasma: 500 diff --git a/Resources/Textures/_Lavaland/Objects/Specific/loot.rsi/crystal.png b/Resources/Textures/_Lavaland/Objects/Specific/loot.rsi/crystal.png new file mode 100644 index 00000000000..1bc3a8555dc Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Specific/loot.rsi/crystal.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Specific/loot.rsi/cursed_heart.png b/Resources/Textures/_Lavaland/Objects/Specific/loot.rsi/cursed_heart.png new file mode 100644 index 00000000000..b0ce3d09398 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Specific/loot.rsi/cursed_heart.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Specific/loot.rsi/meta.json b/Resources/Textures/_Lavaland/Objects/Specific/loot.rsi/meta.json new file mode 100644 index 00000000000..b51d9292569 --- /dev/null +++ b/Resources/Textures/_Lavaland/Objects/Specific/loot.rsi/meta.json @@ -0,0 +1,24 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/tgstation/tgstation at at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "crystal" + }, + { + "name": "cursed_heart", + "delays": [ + [ + 0.1, + 0.1, + 0.2 + ] + ] + } + ] +} diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/inhand-left.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/inhand-left.png new file mode 100644 index 00000000000..3b15d9780df Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/inhand-left.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/inhand-right.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/inhand-right.png new file mode 100644 index 00000000000..5f9e55d21b7 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/inhand-right.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/meta.json b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/meta.json new file mode 100644 index 00000000000..c634ba82a37 --- /dev/null +++ b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "by alzore_ (discord) based on the proto-kinetic crusher", + "size": { + "x": 64, + "y": 64 + }, + "states": [ + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "wielded-inhand-left", + "directions": 4 + }, + { + "name": "wielded-inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/wielded-inhand-left.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/wielded-inhand-left.png new file mode 100644 index 00000000000..74cc6228d46 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/wielded-inhand-left.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/wielded-inhand-right.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/wielded-inhand-right.png new file mode 100644 index 00000000000..d2eef244261 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd-inhands.rsi/wielded-inhand-right.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/equipped-BACKPACK.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..2e8d6f03cf1 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..2e8d6f03cf1 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/flashlight.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/flashlight.png new file mode 100644 index 00000000000..a80d04c7b04 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/flashlight.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/icon-lit.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/icon-lit.png new file mode 100644 index 00000000000..54e91bfa703 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/icon-lit.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/icon-uncharged.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/icon-uncharged.png new file mode 100644 index 00000000000..d31cdbd5bac Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/icon-uncharged.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/icon.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/icon.png new file mode 100644 index 00000000000..77181f316c1 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/icon.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/meta.json b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/meta.json new file mode 100644 index 00000000000..7ed9edc7d8b --- /dev/null +++ b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/meta.json @@ -0,0 +1,89 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from fluffy frontier at commit https://github.com/Fluffy-Frontier/FluffySTG/pull/3293/commits/498811256ce8f64609c8c4195cec08801aed6147", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon-lit" + }, + { + "name": "icon-uncharged", + "delays": [ + [ + 0.3, + 0.3 + ] + ] + }, + { + "name": "flashlight" + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + }, + { + "name": "upgrade-marker", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "upgrade-rude-buster", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "upgrade-lava-aspect" + }, + { + "name": "upgrade-ice-frost" + }, + { + "name": "upgrade-sharpness", + "delays": [ + [ + 6, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "upgrade-handle-weights" + }, + { + "name": "upgrade-handle-range" + }, + { + "name": "upgrade-handle-lightweight" + } + ] +} diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-handle-lightweight.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-handle-lightweight.png new file mode 100644 index 00000000000..7b35b6129bd Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-handle-lightweight.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-handle-range.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-handle-range.png new file mode 100644 index 00000000000..ec4c6d97ea5 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-handle-range.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-handle-weights.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-handle-weights.png new file mode 100644 index 00000000000..93adba1c4ea Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-handle-weights.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-ice-frost.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-ice-frost.png new file mode 100644 index 00000000000..41e9c231acc Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-ice-frost.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-lava-aspect.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-lava-aspect.png new file mode 100644 index 00000000000..6026e27e635 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-lava-aspect.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-marker.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-marker.png new file mode 100644 index 00000000000..066144d799d Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-marker.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-rude-buster.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-rude-buster.png new file mode 100644 index 00000000000..b0b2e58f490 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-rude-buster.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-sharpness.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-sharpness.png new file mode 100644 index 00000000000..0ceb76f94cf Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_halberd.rsi/upgrade-sharpness.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/inhand-left.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/inhand-left.png new file mode 100644 index 00000000000..17fdb31c988 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/inhand-left.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/inhand-right.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/inhand-right.png new file mode 100644 index 00000000000..9d1fb0e632d Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/inhand-right.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/meta.json b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/meta.json new file mode 100644 index 00000000000..b90f854785c --- /dev/null +++ b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from fluffy frontier at commit https://github.com/Fluffy-Frontier/FluffySTG/pull/3293/commits/498811256ce8f64609c8c4195cec08801aed6147", + "size": { + "x": 64, + "y": 64 + }, + "states": [ + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "wielded-inhand-left", + "directions": 4 + }, + { + "name": "wielded-inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/wielded-inhand-left.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/wielded-inhand-left.png new file mode 100644 index 00000000000..8836f9f2b4a Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/wielded-inhand-left.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/wielded-inhand-right.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/wielded-inhand-right.png new file mode 100644 index 00000000000..061fa8888c1 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer-inhands.rsi/wielded-inhand-right.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/equipped-BACKPACK.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..ec98c966dda Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..ec98c966dda Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/flashlight.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/flashlight.png new file mode 100644 index 00000000000..7ca122e2d7f Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/flashlight.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/icon-lit.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/icon-lit.png new file mode 100644 index 00000000000..54e91bfa703 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/icon-lit.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/icon-uncharged.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/icon-uncharged.png new file mode 100644 index 00000000000..d31cdbd5bac Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/icon-uncharged.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/icon.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/icon.png new file mode 100644 index 00000000000..a40c3abed24 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/icon.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/meta.json b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/meta.json new file mode 100644 index 00000000000..12fe7280f69 --- /dev/null +++ b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/meta.json @@ -0,0 +1,88 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from fluffy frontier at commit https://github.com/Fluffy-Frontier/FluffySTG/pull/3293/commits/498811256ce8f64609c8c4195cec08801aed6147", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon-lit" + }, + { + "name": "icon-uncharged", + "delays": [ + [ + 0.3, + 0.3 + ] + ] + }, + { + "name": "flashlight" + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + }, + { + "name": "upgrade-marker", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "upgrade-rude-buster", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "upgrade-lava-aspect" + }, + { + "name": "upgrade-ice-frost" + }, + { + "name": "upgrade-sharpness", + "delays": [ + [ + 6, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "upgrade-handle-weights" + }, + { + "name": "upgrade-handle-range" + }, + { + "name": "upgrade-handle-lightweight" + } + ] +} diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-handle-lightweight.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-handle-lightweight.png new file mode 100644 index 00000000000..222019ae884 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-handle-lightweight.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-handle-range.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-handle-range.png new file mode 100644 index 00000000000..b9f57b57c2a Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-handle-range.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-handle-weights.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-handle-weights.png new file mode 100644 index 00000000000..10781e99d6b Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-handle-weights.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-ice-frost.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-ice-frost.png new file mode 100644 index 00000000000..c3b719cd860 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-ice-frost.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-lava-aspect.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-lava-aspect.png new file mode 100644 index 00000000000..b19b437b221 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-lava-aspect.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-marker.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-marker.png new file mode 100644 index 00000000000..f2382061e33 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-marker.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-rude-buster.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-rude-buster.png new file mode 100644 index 00000000000..928ba9b9a7e Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-rude-buster.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-sharpness.png b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-sharpness.png new file mode 100644 index 00000000000..9cffff7bcab Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Crushers/crusher_hammer.rsi/upgrade-sharpness.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/animation-icon.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/animation-icon.png new file mode 100644 index 00000000000..ca155989794 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/animation-icon.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/equipped-BELT.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/equipped-BELT.png new file mode 100644 index 00000000000..6b475a13994 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/equipped-BELT.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..6b475a13994 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/icon.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/icon.png new file mode 100644 index 00000000000..2a3a3155110 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/icon.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/inhand-left.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/inhand-left.png new file mode 100644 index 00000000000..e57f58242b8 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/inhand-left.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/inhand-right.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/inhand-right.png new file mode 100644 index 00000000000..8df62ab64ba Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/inhand-right.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/meta.json b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/meta.json new file mode 100644 index 00000000000..1bc6c55db0c --- /dev/null +++ b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/meta.json @@ -0,0 +1,42 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "bayonet and animation-icon taken from https://github.com/Bubberstation/Bubberstation/pull/1332/commits/712c86db77c96657cd2b8cfaf6203d76f85f9649, rest made by ratyyy(github), animation-icon, icon.png, inhand-right.png, inhand-left.png, equipped-BELT.png, equipped-SUITSTORAGE.png modified by mironium_adt | Edited by PuroSlavKing (Github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "animation-icon", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "equipped-BELT", + "directions": 4 + }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + }, + { + "name": "upgrade-space" + } + ] +} diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/upgrade-space.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/upgrade-space.png new file mode 100644 index 00000000000..e484ec8b17d Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_pistol.rsi/upgrade-space.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/animation-icon.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/animation-icon.png new file mode 100644 index 00000000000..85ed5fc7c60 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/animation-icon.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/bayonet.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/bayonet.png new file mode 100644 index 00000000000..a88994188d3 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/bayonet.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/equipped-BELT.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/equipped-BELT.png new file mode 100644 index 00000000000..3c97ef1604a Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/equipped-BELT.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..3c97ef1604a Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_repeater.rsi/flight-on.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/flight-on.png similarity index 100% rename from Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_repeater.rsi/flight-on.png rename to Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/flight-on.png diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_repeater.rsi/flight.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/flight.png similarity index 100% rename from Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_repeater.rsi/flight.png rename to Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/flight.png diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/icon.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/icon.png new file mode 100644 index 00000000000..9c80d709a35 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/icon.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/inhand-left.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/inhand-left.png new file mode 100644 index 00000000000..4a5d5c4c485 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/inhand-left.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/inhand-right.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/inhand-right.png new file mode 100644 index 00000000000..2ea6e402b8d Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/inhand-right.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/meta.json b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/meta.json new file mode 100644 index 00000000000..a8d0aa435e4 --- /dev/null +++ b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/meta.json @@ -0,0 +1,56 @@ +{ + "version": 2, + "license": "CC-BY-SA-3.0", + "copyright": "icon and animation-icon taken from https://github.com/Bubberstation/Bubberstation/pull/1332/commits/712c86db77c96657cd2b8cfaf6203d76f85f9649, rest made by ratyyy(github). equipped-BELT.png, equipped-SUITSTORAGE.png modified by mironium_adt, wielded-inhand-left/wielded-inhand-right sprited by orange6775 (discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "bayonet" + }, + { + "name": "flight" + }, + { + "name": "flight-on" + }, + { + "name": "animation-icon", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "equipped-BELT", + "directions": 4 + }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + }, + { + "name": "wielded-inhand-left", + "directions": 4 + }, + { + "name": "wielded-inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/wielded-inhand-left.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/wielded-inhand-left.png new file mode 100644 index 00000000000..70d17600c70 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/wielded-inhand-left.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/wielded-inhand-right.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/wielded-inhand-right.png new file mode 100644 index 00000000000..8c6313b6235 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_railgun.rsi/wielded-inhand-right.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_repeater.rsi/bayonet.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_repeater.rsi/bayonet.png deleted file mode 100644 index 28f96dcc283..00000000000 Binary files a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_repeater.rsi/bayonet.png and /dev/null differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_repeater.rsi/meta.json b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_repeater.rsi/meta.json index d6103834fc5..8e7fb4fbb44 100644 --- a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_repeater.rsi/meta.json +++ b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_repeater.rsi/meta.json @@ -10,15 +10,7 @@ { "name": "icon" }, - { - "name": "bayonet" - }, - { - "name": "flight" - }, - { - "name": "flight-on" - }, + { "name": "animation-icon", "delays": [ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/animation-icon.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/animation-icon.png new file mode 100644 index 00000000000..4c91c432b8f Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/animation-icon.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/equipped-BELT.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/equipped-BELT.png new file mode 100644 index 00000000000..9f4e6a63f1e Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/equipped-BELT.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..9f4e6a63f1e Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/icon.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/icon.png new file mode 100644 index 00000000000..7af9b7b08df Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/icon.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/inhand-left.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/inhand-left.png new file mode 100644 index 00000000000..650e56697c9 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/inhand-left.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/inhand-right.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/inhand-right.png new file mode 100644 index 00000000000..9eae37b784b Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/inhand-right.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/meta.json b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/meta.json new file mode 100644 index 00000000000..70f651953b8 --- /dev/null +++ b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/meta.json @@ -0,0 +1,50 @@ +{ + "version": 2, + "license": "CC-BY-SA-3.0", + "copyright": "icon and animation-icon taken from https://github.com/Bubberstation/Bubberstation/pull/1332/commits/712c86db77c96657cd2b8cfaf6203d76f85f9649, rest made by ratyyy(github), wielded-inhand-left/wielded-inhand-right sprited by orange6775 (discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "animation-icon", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "wielded-inhand-right", + "directions": 4 + }, + { + "name": "wielded-inhand-left", + "directions": 4 + }, + { + "name": "equipped-BELT", + "directions": 4 + }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + }, + { + "name": "upgrade-space" + } + ] +} diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/upgrade-space.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/upgrade-space.png new file mode 100644 index 00000000000..41495404645 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/upgrade-space.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/wielded-inhand-left.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/wielded-inhand-left.png new file mode 100644 index 00000000000..ac2a4987dbe Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/wielded-inhand-left.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/wielded-inhand-right.png b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/wielded-inhand-right.png new file mode 100644 index 00000000000..68b1764ceac Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Guns/Basic/kinetic_shotgun.rsi/wielded-inhand-right.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/equipped-HAND.png b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/equipped-HAND.png new file mode 100644 index 00000000000..bfb2234d08f Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/inhand-left.png b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/inhand-left.png new file mode 100644 index 00000000000..1cb891ff68f Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/inhand-left.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/inhand-right.png b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/inhand-right.png new file mode 100644 index 00000000000..6a1d6855c4a Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/inhand-right.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/meta.json b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/meta.json new file mode 100644 index 00000000000..005b3b90a63 --- /dev/null +++ b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/meta.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from fluffy frontier at commit https://github.com/Fluffy-Frontier/FluffySTG/pull/3293/commits/498811256ce8f64609c8c4195cec08801aed6147", + "size": { + "x": 64, + "y": 64 + }, + "states": [ + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "wielded-inhand-left", + "directions": 4 + }, + { + "name": "wielded-inhand-right", + "directions": 4 + }, + { + "name": "equipped-HAND", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/wielded-inhand-left.png b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/wielded-inhand-left.png new file mode 100644 index 00000000000..bfb2234d08f Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/wielded-inhand-left.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/wielded-inhand-right.png b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/wielded-inhand-right.png new file mode 100644 index 00000000000..bfb2234d08f Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws-inhands.rsi/wielded-inhand-right.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws.rsi/icon-lit.png b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws.rsi/icon-lit.png new file mode 100644 index 00000000000..f51d7d18e19 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws.rsi/icon-lit.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws.rsi/icon-uncharged.png b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws.rsi/icon-uncharged.png new file mode 100644 index 00000000000..cff3cfc6739 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws.rsi/icon-uncharged.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws.rsi/icon.png b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws.rsi/icon.png new file mode 100644 index 00000000000..3be7d73e8fc Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws.rsi/icon.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws.rsi/meta.json b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws.rsi/meta.json new file mode 100644 index 00000000000..bbb1ac9984a --- /dev/null +++ b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_claws.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from fluffy frontier at commit https://github.com/Fluffy-Frontier/FluffySTG/pull/3293/commits/498811256ce8f64609c8c4195cec08801aed6147", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon-lit" + }, + { + "name": "icon-uncharged", + "delays": [ + [ + 0.3, + 0.3 + ] + ] + } + ] +} diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_machete-inhands.rsi/inhand-left.png b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_machete-inhands.rsi/inhand-left.png new file mode 100644 index 00000000000..77eb2b41ea9 Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_machete-inhands.rsi/inhand-left.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_machete-inhands.rsi/inhand-right.png b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_machete-inhands.rsi/inhand-right.png new file mode 100644 index 00000000000..aae15dd777b Binary files /dev/null and b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_machete-inhands.rsi/inhand-right.png differ diff --git a/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_machete-inhands.rsi/meta.json b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_machete-inhands.rsi/meta.json new file mode 100644 index 00000000000..77e11bd954d --- /dev/null +++ b/Resources/Textures/_Lavaland/Objects/Weapons/Secondary/kinetic_machete-inhands.rsi/meta.json @@ -0,0 +1,19 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from fluffy frontier at commit https://github.com/Fluffy-Frontier/FluffySTG/pull/3293/commits/498811256ce8f64609c8c4195cec08801aed6147", + "size": { + "x": 64, + "y": 64 + }, + "states": [ + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} \ No newline at end of file