diff --git a/Content.Server/Projectiles/ProjectileSystem.cs b/Content.Server/Projectiles/ProjectileSystem.cs index 21fde338c3..87b9c167ea 100644 --- a/Content.Server/Projectiles/ProjectileSystem.cs +++ b/Content.Server/Projectiles/ProjectileSystem.cs @@ -46,7 +46,9 @@ public sealed partial class ProjectileSystem : SharedProjectileSystem return; } - var ev = new ProjectileHitEvent(component.Damage * _damageableSystem.UniversalProjectileDamageModifier, target, component.Shooter); + var damageEv = new BeforeProjectileHitEvent(component.Damage, target, component.Shooter); + RaiseLocalEvent(uid, ref damageEv); + var ev = new ProjectileHitEvent(damageEv.Damage * _damageableSystem.UniversalProjectileDamageModifier, target, component.Shooter); RaiseLocalEvent(uid, ref ev); var otherName = ToPrettyString(target); diff --git a/Content.Shared/Projectiles/ComplexProjectileDamageComponent.cs b/Content.Shared/Projectiles/ComplexProjectileDamageComponent.cs new file mode 100644 index 0000000000..6e9cd4b99c --- /dev/null +++ b/Content.Shared/Projectiles/ComplexProjectileDamageComponent.cs @@ -0,0 +1,52 @@ +using Content.Shared.Damage; +using Content.Shared.Whitelist; +using Robust.Shared.GameStates; + +namespace Content.Shared.Projectiles; + +/// +/// A projectile with this component will not deal . +/// Instead, it will do damage based on the target if +/// said target passes the whitelist and blacklist of the options +/// +/// +/// If the target doesn't match any option, the projectile will deal . +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class ComplexProjectileDamageComponent : Component +{ + /// + /// Array of options of damage for specific entities. + /// + /// + /// Only one option will choosen, if a target fits 2 options, + /// it will receive damage only from the first option that matches. + /// + [DataField] + public DamageOption[] DamageOptions = []; +} + +/// +/// Specifies a amount of damage to deal to entities that fit the whitelist and are not blacklisted. +/// +[DataDefinition] +public partial struct DamageOption +{ + /// + /// The damage to deal to certain entities. + /// + [DataField] + public DamageSpecifier Damage; + + /// + /// The whitelist of entities to deal the damage to. + /// + [DataField] + public EntityWhitelist? Whitelist; + + /// + /// The blacklist of entities to not deal the damage to. + /// + [DataField] + public EntityWhitelist? Blacklist; +} diff --git a/Content.Shared/Projectiles/SharedProjectileSystem.cs b/Content.Shared/Projectiles/SharedProjectileSystem.cs index 32972c0f3d..a1be671fda 100644 --- a/Content.Shared/Projectiles/SharedProjectileSystem.cs +++ b/Content.Shared/Projectiles/SharedProjectileSystem.cs @@ -5,6 +5,7 @@ using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; using Content.Shared.Inventory; using Content.Shared.Throwing; +using Content.Shared.Whitelist; using Robust.Shared.Audio.Systems; using Robust.Shared.Map; using Robust.Shared.Network; @@ -26,6 +27,7 @@ public abstract partial class SharedProjectileSystem : EntitySystem [Dependency] private SharedHandsSystem _hands = default!; [Dependency] private SharedPhysicsSystem _physics = default!; [Dependency] private SharedTransformSystem _transform = default!; + [Dependency] private EntityWhitelistSystem _whitelist = null!; public override void Initialize() { @@ -39,6 +41,7 @@ public abstract partial class SharedProjectileSystem : EntitySystem SubscribeLocalEvent(OnEmbeddableCompShutdown); SubscribeLocalEvent(OnEmbeddableTermination); + SubscribeLocalEvent(OnBeforeComplexProjectileHit); } private void OnEmbedActivate(Entity embeddable, ref ActivateInWorldEvent args) @@ -188,6 +191,17 @@ public abstract partial class SharedProjectileSystem : EntitySystem DetachAllEmbedded(container); } + private void OnBeforeComplexProjectileHit(Entity ent, ref BeforeProjectileHitEvent args) + { + foreach (var option in ent.Comp.DamageOptions) + { + if (!_whitelist.CheckBoth(args.Target, option.Blacklist, option.Whitelist)) + continue; + args.Damage = option.Damage; + return; + } + } + public void DetachAllEmbedded(Entity container) { foreach (var embedded in container.Comp.EmbeddedObjects) @@ -250,3 +264,9 @@ public record struct ProjectileReflectAttemptEvent(EntityUid ProjUid, Projectile /// [ByRefEvent] public record struct ProjectileHitEvent(DamageSpecifier Damage, EntityUid Target, EntityUid? Shooter = null); + +/// +/// Raised before a projectile hits an entity +/// +[ByRefEvent] +public record struct BeforeProjectileHitEvent(DamageSpecifier Damage, EntityUid Target, EntityUid? Shooter = null); diff --git a/Resources/Audio/Weapons/Guns/Gunshots/attributions.yml b/Resources/Audio/Weapons/Guns/Gunshots/attributions.yml index 3ec7ac25bf..fff3b615e2 100644 --- a/Resources/Audio/Weapons/Guns/Gunshots/attributions.yml +++ b/Resources/Audio/Weapons/Guns/Gunshots/attributions.yml @@ -52,3 +52,8 @@ license: "CC-BY-4.0" copyright: "Created by simeonradivoev" source: "https://freesound.org/people/simeonradivoev/sounds/740218" + +- files: ["nanite_gun.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Created by sadiefei" + source: "https://freesound.org/people/torn.rugged.audio.35/sounds/45934/" diff --git a/Resources/Audio/Weapons/Guns/Gunshots/nanite_gun.ogg b/Resources/Audio/Weapons/Guns/Gunshots/nanite_gun.ogg new file mode 100644 index 0000000000..e3102d1536 Binary files /dev/null and b/Resources/Audio/Weapons/Guns/Gunshots/nanite_gun.ogg differ diff --git a/Resources/Audio/Weapons/Guns/Hits/attributions.yml b/Resources/Audio/Weapons/Guns/Hits/attributions.yml index 297fc9dcf2..aeebb22f3b 100644 --- a/Resources/Audio/Weapons/Guns/Hits/attributions.yml +++ b/Resources/Audio/Weapons/Guns/Hits/attributions.yml @@ -6,4 +6,9 @@ - files: ["ric1.ogg", "ric2.ogg", "ric3.ogg", "ric3.ogg", "ric5.ogg"] license: "CC-BY-SA-3.0" copyright: "Taken from tgstation" - source: "https://github.com/tgstation/tgstation/tree/7501504b0ea029d2cf1c0336d09db5c0959aa412/sound/weapons/effects" \ No newline at end of file + source: "https://github.com/tgstation/tgstation/tree/7501504b0ea029d2cf1c0336d09db5c0959aa412/sound/weapons/effects" + +- files: ["nanite_hit1.ogg", "nanite_hit2.ogg", "nanitehit_3.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Created by sadiefei" + source: "https://github.com/tgstation/tgstation/tree/7501504b0ea029d2cf1c0336d09db5c0959aa412/sound/weapons/effects" diff --git a/Resources/Audio/Weapons/Guns/Hits/nanite_hit1.ogg b/Resources/Audio/Weapons/Guns/Hits/nanite_hit1.ogg new file mode 100644 index 0000000000..93fb5d8102 Binary files /dev/null and b/Resources/Audio/Weapons/Guns/Hits/nanite_hit1.ogg differ diff --git a/Resources/Audio/Weapons/Guns/Hits/nanite_hit2.ogg b/Resources/Audio/Weapons/Guns/Hits/nanite_hit2.ogg new file mode 100644 index 0000000000..92129acfba Binary files /dev/null and b/Resources/Audio/Weapons/Guns/Hits/nanite_hit2.ogg differ diff --git a/Resources/Audio/Weapons/Guns/Hits/nanite_hit3.ogg b/Resources/Audio/Weapons/Guns/Hits/nanite_hit3.ogg new file mode 100644 index 0000000000..16227e37e9 Binary files /dev/null and b/Resources/Audio/Weapons/Guns/Hits/nanite_hit3.ogg differ diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index 4bef8defa9..ccaeae9fd7 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -1572,6 +1572,22 @@ - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-oil-gun-module } +- type: entity + parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ] + id: XenoborgModuleNaniteGun + name: nanite gun xenoborg module + description: Module that allows Xenoborgs to have a crystal firing nanite gun. + components: + - type: Sprite + layers: + - state: xenoborg_engi + - state: icon-xenoborg-nanite-gun + - type: ItemBorgModule + hands: + - item: WeaponNaniteGun + - type: BorgModuleIcon + icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-nanite-module } + - type: entity parent: [ BaseXenoborgModuleHeavy, BaseProviderBorgModule, BaseXenoborgContraband ] id: XenoborgModuleJammer diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/nanite.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/nanite.yml new file mode 100644 index 0000000000..5f5752f51d --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/nanite.yml @@ -0,0 +1,22 @@ +- type: entity + parent: [ BaseCartridge, BaseXenoborgContraband ] + id: CartridgeNanite + name: nanite crystal + description: A high-power nanite crystal used by xenoborgs. + components: + - type: CartridgeAmmo + muzzleFlash: MuzzleFlashEffectNanite + proto: BulletNanite + - type: Sprite + sprite: Objects/Weapons/Guns/Ammunition/Casings/nanite_casing.rsi + layers: + - map: ["NaniteCasing"] + state: base + - type: RandomSprite + available: + - NaniteCasing: + base: "" + base1: "" + base2: "" + - type: StaticPrice + price: 20 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/nanite.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/nanite.yml new file mode 100644 index 0000000000..e34d105baa --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/nanite.yml @@ -0,0 +1,69 @@ +- type: entity + id: MuzzleFlashEffectNanite + categories: [ HideSpawnMenu ] + components: + - type: TimedDespawn + lifetime: 0.4 + - type: Sprite + drawdepth: BelowMobs + offset: -.25, 0 + layers: + - shader: unshaded + map: ["enum.EffectLayers.Unshaded"] + sprite: Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi + state: muzzle_nanite + - type: EffectVisuals + - type: Tag + tags: + - HideContextMenu + - type: AnimationPlayer + +- type: entity + id: BulletImpactEffectNanite + categories: [ HideSpawnMenu ] + components: + - type: TimedDespawn + lifetime: 0.25 + - type: Sprite + drawdepth: Effects + layers: + - shader: unshaded + map: ["enum.EffectLayers.Unshaded"] + sprite: Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi + state: impact_nanite + - type: EffectVisuals + - type: Tag + tags: + - HideContextMenu + +- type: entity + parent: BaseBullet + id: BulletNanite + categories: [ HideSpawnMenu ] + name: nanite crystal + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi + layers: + - state: nanite + shader: unshaded + - type: Projectile + impactEffect: BulletImpactEffectNanite + damage: + types: + Piercing: 9 + Poison: 3 + soundHit: + collection: NaniteBulletImpact + - type: ComplexProjectileDamage + damageOptions: + - damage: + types: + Blunt: -10 + Piercing: -10 + Slash: -10 + Heat: -10 + Shock: -10 + whitelist: + components: + - BorgChassis diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/nanite_gun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/nanite_gun.yml new file mode 100644 index 0000000000..8950a40854 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/nanite_gun.yml @@ -0,0 +1,47 @@ +- type: entity + parent: [BaseItem, BaseXenoborgContraband] + id: WeaponNaniteGun + name: nanite gun + description: A strange gun that shoots nanites encased in crystal shards that heals borgs but hurts fleshy inferior beings. + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Rifles/nanite.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-unshaded-5 + map: ["enum.GunVisualLayers.Mag"] + - type: AmmoCounter + - type: Gun + fireRate: 0.9 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/nanite_gun.ogg + soundEmpty: + path: /Audio/Weapons/Guns/Empty/empty.ogg + - type: BallisticAmmoProvider + capacity: 5 + proto: CartridgeNanite + soundInsert: + path: /Audio/Weapons/Guns/MagIn/shotgun_insert.ogg + cycleable: false # No synthesizing ammo + - type: BallisticAmmoSelfRefiller + autoRefillRate: 9s + affectedByEmp: true + - type: StaticPrice + price: 5000 + - type: MagazineVisuals + magState: mag-unshaded + steps: 6 + zeroVisible: true + - type: CustomSpriteAmmoCounter + loadedAmmoSprite: Interface/ItemStatus/Crystals/not_spent.png + spentAmmoSprite: Interface/ItemStatus/Crystals/spent.png + numberOfRows: 1 + - type: Appearance + - type: ContainerContainer + containers: + ballistic-ammo: !type:Container + ents: [ ] diff --git a/Resources/Prototypes/SoundCollections/gun_impacts.yml b/Resources/Prototypes/SoundCollections/gun_impacts.yml index beec871215..d7dadc47ef 100644 --- a/Resources/Prototypes/SoundCollections/gun_impacts.yml +++ b/Resources/Prototypes/SoundCollections/gun_impacts.yml @@ -27,3 +27,9 @@ - "/Audio/Weapons/Guns/Hits/energy_metal1.ogg" - "/Audio/Weapons/Guns/Hits/energy_metal2.ogg" +- type: soundCollection + id: NaniteBulletImpact + files: + - "/Audio/Weapons/Guns/Hits/nanite_hit1.ogg" + - "/Audio/Weapons/Guns/Hits/nanite_hit2.ogg" + - "/Audio/Weapons/Guns/Hits/nanite_hit3.ogg" diff --git a/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json b/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json index f4468325f6..f0be086504 100644 --- a/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json +++ b/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/cdbcb1e858b11f083994a7a269ed67ef5b452ce9, inflatable module by FungiFellow (GitHub), Module actions by Scarky0. chem, adv-chem, and adv-mining by mubururu_, xenoborg actions by Samuka-C (github), advclown by ThatGuyUSA. c20r and esword by RedBookcase on Github, artistry-module by Kittygyat, with help from TiniestShark, xenoborg-laser3-module by august-sun(GitHub)", + "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/cdbcb1e858b11f083994a7a269ed67ef5b452ce9, inflatable module by FungiFellow (GitHub), Module actions by Scarky0. chem, adv-chem, and adv-mining by mubururu_, xenoborg actions by Samuka-C (github), advclown by ThatGuyUSA. c20r and esword by RedBookcase on Github, artistry-module by Kittygyat, with help from TiniestShark, xenoborg-laser3-module by august-sun(GitHub), Xenoborg Nanite action by YoungThugSS14 (Gihutb)", "size": { "x": 32, "y": 32 @@ -176,7 +176,10 @@ "name":"xenoborg-oil-gun-module" }, { - "name":"xenoborg-projector-module" + "name": "xenoborg-nanite-module" + }, + { + "name": "xenoborg-projector-module" }, { "name":"xenoborg-space-movement-module" diff --git a/Resources/Textures/Interface/Actions/actions_borg.rsi/xenoborg-nanite-module.png b/Resources/Textures/Interface/Actions/actions_borg.rsi/xenoborg-nanite-module.png new file mode 100644 index 0000000000..e9249460c2 Binary files /dev/null and b/Resources/Textures/Interface/Actions/actions_borg.rsi/xenoborg-nanite-module.png differ diff --git a/Resources/Textures/Interface/ItemStatus/Crystals/not_spent.png b/Resources/Textures/Interface/ItemStatus/Crystals/not_spent.png new file mode 100644 index 0000000000..9018edcf74 Binary files /dev/null and b/Resources/Textures/Interface/ItemStatus/Crystals/not_spent.png differ diff --git a/Resources/Textures/Interface/ItemStatus/Crystals/spent.png b/Resources/Textures/Interface/ItemStatus/Crystals/spent.png new file mode 100644 index 0000000000..9a23a89805 Binary files /dev/null and b/Resources/Textures/Interface/ItemStatus/Crystals/spent.png differ diff --git a/Resources/Textures/Interface/ItemStatus/attributions.yml b/Resources/Textures/Interface/ItemStatus/attributions.yml index a1e55fec54..7206a2fd60 100644 --- a/Resources/Textures/Interface/ItemStatus/attributions.yml +++ b/Resources/Textures/Interface/ItemStatus/attributions.yml @@ -22,3 +22,8 @@ license: "CC-BY-SA-3.0" copyright: "Created by Samuka-C" source: "https://github.com/space-wizards/space-station-14/pull/44389" + +- files: ["Crystals/*.png"] + license: "CC-BY-SA-3.0" + copyright: "Created by YoungThugSS14" + source: "https://github.com/space-wizards/space-station-14/pull/43120" diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-xenoborg-nanite-gun.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-xenoborg-nanite-gun.png new file mode 100644 index 0000000000..79d5884fc0 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-xenoborg-nanite-gun.png differ diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json index fef79d58f9..a137206e79 100644 --- a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC0-1.0", - "copyright": "Created by EmoGarbage404 (github) for Space Station 14. icon-construction.png created by deltanedas (github). syndicateborgbomb.png created by Mangohydra (github). icon-chem.png & icon-mining-adv.png created by mubururu_ (github) icon-inflatable.png made by FungiFellow (GitHub), Xenoborg modules sprites by Samuka-C (github), icon-xenoborg-laser3 by august-sun(github), icon-artistry by Kittygyat", + "copyright": "Created by EmoGarbage404 (github) for Space Station 14. icon-construction.png created by deltanedas (github). syndicateborgbomb.png created by Mangohydra (github). icon-chem.png & icon-mining-adv.png created by mubururu_ (github) icon-inflatable.png made by FungiFellow (GitHub), Xenoborg modules sprites by Samuka-C (github), icon-xenoborg-laser3 by august-sun(github), Nanite gun module sprite made by YoungThugSS14 (Github), icon-artistry by Kittygyat", "size": { "x": 32, "y": 32 @@ -160,6 +160,9 @@ { "name": "icon-xenoborg-sword" }, + { + "name": "icon-xenoborg-nanite-gun" + }, { "name": "icon-xenoborg-sword2" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/nanite_casing.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/nanite_casing.rsi/base.png new file mode 100644 index 0000000000..00d41e51ba Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/nanite_casing.rsi/base.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/nanite_casing.rsi/base1.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/nanite_casing.rsi/base1.png new file mode 100644 index 0000000000..a7531bd79b Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/nanite_casing.rsi/base1.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/nanite_casing.rsi/base2.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/nanite_casing.rsi/base2.png new file mode 100644 index 0000000000..36f72ce356 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/nanite_casing.rsi/base2.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/nanite_casing.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/nanite_casing.rsi/meta.json new file mode 100644 index 0000000000..2df1169af1 --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/nanite_casing.rsi/meta.json @@ -0,0 +1,20 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprites made by YoungThugSS14 (Github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "base" + }, + { + "name": "base1" + }, + { + "name": "base2" + } + ] +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi/impact_nanite.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi/impact_nanite.png new file mode 100644 index 0000000000..a1a558379d Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi/impact_nanite.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi/meta.json new file mode 100644 index 0000000000..efdf75e257 --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi/meta.json @@ -0,0 +1,44 @@ +{ + "version": 1, + "license": "CC-BY-NC-4.0", + "copyright": "Sprites by YoungThugSS14 (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "nanite", + "delays": [ + [ + 0.05, + 0.05 + ] + ] + }, + { + "name": "muzzle_nanite", + "delays": [ + [ + 0.05, + 0.05, + 0.05, + 0.05, + 0.05 + ] + ] + }, + { + "name": "impact_nanite", + "delays": [ + [ + 0.05, + 0.05, + 0.05, + 0.05, + 0.05 + ] + ] + } + ] +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi/muzzle_nanite.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi/muzzle_nanite.png new file mode 100644 index 0000000000..37f16cd154 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi/muzzle_nanite.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi/nanite.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi/nanite.png new file mode 100644 index 0000000000..b272ecf3ba Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Projectiles/nanite_crystal.rsi/nanite.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/base.png new file mode 100644 index 0000000000..e7b43c5c99 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/base.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/icon.png b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/icon.png new file mode 100644 index 0000000000..e1ebee46a4 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-0.png b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-0.png new file mode 100644 index 0000000000..5e7eed9852 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-0.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-1.png b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-1.png new file mode 100644 index 0000000000..3ef44b6838 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-1.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-2.png b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-2.png new file mode 100644 index 0000000000..895a00e746 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-2.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-3.png b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-3.png new file mode 100644 index 0000000000..574a45e173 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-3.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-4.png b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-4.png new file mode 100644 index 0000000000..9524379057 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-4.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-5.png b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-5.png new file mode 100644 index 0000000000..aa3fa178d5 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/mag-unshaded-5.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/meta.json new file mode 100644 index 0000000000..f1b3904539 --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/Rifles/nanite.rsi/meta.json @@ -0,0 +1,35 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "YoungThugSS14, SAMUKA-C(github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "base" + }, + { + "name": "mag-unshaded-0" + }, + { + "name": "mag-unshaded-1" + }, + { + "name": "mag-unshaded-2" + }, + { + "name": "mag-unshaded-3" + }, + { + "name": "mag-unshaded-4" + }, + { + "name": "mag-unshaded-5" + } + ] +}