Модули, Батареи, Баффы и Дебаффы

This commit is contained in:
BIGZi0348
2024-12-08 17:33:08 +03:00
parent 249f755a95
commit f29ba4c800
115 changed files with 956 additions and 132 deletions

View File

@@ -3,8 +3,13 @@ using Content.Shared._White.Telescope;
using Content.Shared._White.WeaponModules;
using Content.Shared.Weapons.Ranged.Components;
using Content.Shared.Weapons.Ranged.Systems;
using Content.Shared.Verbs;
using Content.Shared.Tag;
using Robust.Server.GameObjects;
using Robust.Shared.Containers;
using Robust.Shared.Utility;
using Robust.Shared.Audio;
using Robust.Shared.Audio.Systems;
namespace Content.Server._White.WeaponModules;
@@ -18,6 +23,8 @@ public sealed class WeaponModulesSystem : EntitySystem
[Dependency] private readonly PointLightSystem _lightSystem = default!;
[Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!;
[Dependency] private readonly SharedGunSystem _gunSystem = default!;
[Dependency] private readonly TagSystem _tagSystem = default!;
[Dependency] private readonly SharedAudioSystem _audioSystem = default!;
public override void Initialize()
{
@@ -43,6 +50,8 @@ public sealed class WeaponModulesSystem : EntitySystem
SubscribeLocalEvent<ShutterModuleComponent, EntGotInsertedIntoContainerMessage>(ShutterModuleOnInsert);
SubscribeLocalEvent<ShutterModuleComponent, EntGotRemovedFromContainerMessage>(ShutterModuleOnEject);
SubscribeLocalEvent<WeaponModulesComponent, GetVerbsEvent<AlternativeVerb>>(AddSwitchLightVerd);
}
private bool TryInsertModule(EntityUid module, EntityUid weapon, BaseModuleComponent component,
@@ -56,7 +65,7 @@ public sealed class WeaponModulesSystem : EntitySystem
return false;
}
if(!weaponModulesComponent.Modules.Contains(module))
if (!weaponModulesComponent.Modules.Contains(module))
weaponModulesComponent.Modules.Add(module);
if (!Slots.TryGetValue(containerId, out var value))
@@ -77,7 +86,7 @@ public sealed class WeaponModulesSystem : EntitySystem
}
if(weaponModulesComponent.Modules.Contains(module))
if (weaponModulesComponent.Modules.Contains(module))
weaponModulesComponent.Modules.Remove(module);
if (!Slots.TryGetValue(containerId, out var value))
@@ -88,12 +97,43 @@ public sealed class WeaponModulesSystem : EntitySystem
return true;
}
private void AddSwitchLightVerd(EntityUid uid, WeaponModulesComponent component, GetVerbsEvent<AlternativeVerb> args)
{
if (!args.CanInteract || !args.CanAccess)
return;
if (!_tagSystem.HasTag(args.Target, "HasLightModule"))
return;
AlternativeVerb verb = new()
{
Act = () =>
{
SetLight(args.Target);
},
Text = Loc.GetString("toggle-flashlight-verb-get-data-text"),
Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/light.svg.192dpi.png")),
Priority = 0
};
args.Verbs.Add(verb);
}
private void SetLight(EntityUid weapon)
{
_lightSystem.TryGetLight(weapon, out var light);
if (light == null)
return;
_lightSystem.SetEnabled(weapon, !light.Enabled, light);
_audioSystem.PlayPredicted(new SoundPathSpecifier("/Audio/Items/flashlight_pda.ogg"), weapon, weapon);
}
#region InsertModules
private void LightModuleOnInsert(EntityUid module, LightModuleComponent component, EntGotInsertedIntoContainerMessage args)
{
EntityUid weapon = args.Container.Owner;
if(!TryInsertModule(module, weapon, component, args.Container.ID, out var weaponModulesComponent))
if (!TryInsertModule(module, weapon, component, args.Container.ID, out var weaponModulesComponent))
return;
TryComp<AppearanceComponent>(weapon, out var appearanceComponent);
@@ -104,6 +144,8 @@ public sealed class WeaponModulesSystem : EntitySystem
_lightSystem.SetRadius(weapon, component.Radius, light);
_lightSystem.SetEnabled(weapon, true, light);
_tagSystem.AddTag(weapon, "HasLightModule");
}
private void LaserModuleOnInsert(EntityUid module, LaserModuleComponent component, EntGotInsertedIntoContainerMessage args)
@@ -112,7 +154,7 @@ public sealed class WeaponModulesSystem : EntitySystem
if (!TryComp<GunComponent>(weapon, out var gunComp)) return;
if(!TryInsertModule(module, weapon, component, args.Container.ID, out var weaponModulesComponent))
if (!TryInsertModule(module, weapon, component, args.Container.ID, out var weaponModulesComponent))
return;
component.OldProjectileSpeed = gunComp.ProjectileSpeed;
@@ -124,7 +166,7 @@ public sealed class WeaponModulesSystem : EntitySystem
{
EntityUid weapon = args.Container.Owner;
if(!TryInsertModule(module, weapon, component, args.Container.ID, out var weaponModulesComponent))
if (!TryInsertModule(module, weapon, component, args.Container.ID, out var weaponModulesComponent))
return;
weaponModulesComponent.WeaponFireEffect = true;
@@ -137,7 +179,7 @@ public sealed class WeaponModulesSystem : EntitySystem
if (!TryComp<GunComponent>(weapon, out var gunComp)) return;
if(!TryInsertModule(module, weapon, component, args.Container.ID, out var weaponModulesComponent))
if (!TryInsertModule(module, weapon, component, args.Container.ID, out var weaponModulesComponent))
return;
component.OldSoundGunshot = gunComp.SoundGunshot;
@@ -154,7 +196,7 @@ public sealed class WeaponModulesSystem : EntitySystem
if (!TryComp<GunComponent>(weapon, out var gunComp)) return;
if(!TryInsertModule(module, weapon, component, args.Container.ID, out var weaponModulesComponent))
if (!TryInsertModule(module, weapon, component, args.Container.ID, out var weaponModulesComponent))
return;
component.OldFireRate = gunComp.FireRate;
@@ -168,7 +210,7 @@ public sealed class WeaponModulesSystem : EntitySystem
if (!TryComp<GunComponent>(weapon, out var gunComp)) return;
if(!TryInsertModule(module, weapon, component, args.Container.ID, out var weaponModulesComponent))
if (!TryInsertModule(module, weapon, component, args.Container.ID, out var weaponModulesComponent))
return;
EnsureComp<TelescopeComponent>(weapon).Divisor = component.Divisor;
@@ -180,7 +222,7 @@ public sealed class WeaponModulesSystem : EntitySystem
if (!TryComp<GunComponent>(weapon, out var gunComp)) return;
if(!TryInsertModule(module, weapon, component, args.Container.ID, out var weaponModulesComponent))
if (!TryInsertModule(module, weapon, component, args.Container.ID, out var weaponModulesComponent))
return;
if (!TryComp<BallisticAmmoProviderComponent>(weapon, out var ballisticAmmo))
@@ -196,21 +238,23 @@ public sealed class WeaponModulesSystem : EntitySystem
{
EntityUid weapon = args.Container.Owner;
if(!TryEjectModule(module, weapon, args.Container.ID, out var weaponModulesComponent))
if (!TryEjectModule(module, weapon, args.Container.ID, out var weaponModulesComponent))
return;
if(!_lightSystem.TryGetLight(weapon, out var light))
if (!_lightSystem.TryGetLight(weapon, out var light))
return;
_lightSystem.SetRadius(weapon, 0F, light);
_lightSystem.SetEnabled(weapon, false, light);
_tagSystem.RemoveTag(weapon, "HasLightModule");
}
private void LaserModuleOnEject(EntityUid module, LaserModuleComponent component, EntGotRemovedFromContainerMessage args)
{
EntityUid weapon = args.Container.Owner;
if(!TryEjectModule(module, weapon, args.Container.ID, out var weaponModulesComponent))
if (!TryEjectModule(module, weapon, args.Container.ID, out var weaponModulesComponent))
return;
_gunSystem.SetProjectileSpeed(weapon, component.OldProjectileSpeed);
@@ -220,7 +264,7 @@ public sealed class WeaponModulesSystem : EntitySystem
{
EntityUid weapon = args.Container.Owner;
if(!TryEjectModule(module, weapon, args.Container.ID, out var weaponModulesComponent))
if (!TryEjectModule(module, weapon, args.Container.ID, out var weaponModulesComponent))
return;
weaponModulesComponent.WeaponFireEffect = false;
@@ -231,7 +275,7 @@ public sealed class WeaponModulesSystem : EntitySystem
{
EntityUid weapon = args.Container.Owner;
if(!TryEjectModule(module, weapon, args.Container.ID, out var weaponModulesComponent))
if (!TryEjectModule(module, weapon, args.Container.ID, out var weaponModulesComponent))
return;
weaponModulesComponent.WeaponFireEffect = false;
@@ -243,7 +287,7 @@ public sealed class WeaponModulesSystem : EntitySystem
{
EntityUid weapon = args.Container.Owner;
if(!TryEjectModule(module, weapon, args.Container.ID, out var weaponModulesComponent))
if (!TryEjectModule(module, weapon, args.Container.ID, out var weaponModulesComponent))
return;
_gunSystem.SetFireRate(weapon, component.OldFireRate);
@@ -253,7 +297,7 @@ public sealed class WeaponModulesSystem : EntitySystem
{
EntityUid weapon = args.Container.Owner;
if(!TryEjectModule(module, weapon, args.Container.ID, out var weaponModulesComponent))
if (!TryEjectModule(module, weapon, args.Container.ID, out var weaponModulesComponent))
return;
RemComp<TelescopeComponent>(weapon);
@@ -263,7 +307,7 @@ public sealed class WeaponModulesSystem : EntitySystem
{
EntityUid weapon = args.Container.Owner;
if(!TryEjectModule(module, weapon, args.Container.ID, out var weaponModulesComponent))
if (!TryEjectModule(module, weapon, args.Container.ID, out var weaponModulesComponent))
return;
if (!TryComp<BallisticAmmoProviderComponent>(weapon, out var ballisticAmmo))

View File

@@ -7,7 +7,7 @@ ent-FlameHiderModule = пламегаситель
ent-SilencerModule = глушитель
.desc = Скрывает пламя огня и приглушает звук во время выстрела.
ent-AcceleratorModule = продвинутый модуль
.desc = Разработка НаноТрейзен специально для отдела Службы Безопасности. Меняет затворную раму без видимых изменений, за счет этого увеличивает скорострельность оружия.
.desc = Разработка НаноТрейзен специально для отдела Службы Безопасности. Меняет затворную раму, за счет этого увеличивает скорострельность оружия.
ent-HolographicSightModule = голографической прицел
.desc = Позоляет целиться, небольшое приближение.
ent-TelescopicSightModule = телескопический прицел

View File

@@ -20,6 +20,8 @@
SecurityWhistle: 5
CombatKnife: 2
RadioHandheldSecurity: 5
LightModule: 4
HolographicSightModule: 4
contrabandInventory:
FoodDonutHomer: 12
@@ -27,4 +29,5 @@
emaggedInventory:
ExGrenade: 1
Truncheon: 3 # WD edit end
Truncheon: 3
SilencerModule: 1 # WD edit end

View File

@@ -105,7 +105,7 @@
sprite: Clothing/OuterClothing/Coats/insp_coat.rsi
- type: entity
parent: ClothingOuterStorageToggleableBase
parent: [ ClothingOuterStorageToggleableBase, AllowSuitStorageClothing] # WD added AllowSuitStorageClothing
id: ClothingOuterCoatJensen
name: jensen coat
description: A jensen coat.
@@ -424,7 +424,7 @@
- type: entity
parent: ClothingOuterStorageBase
parent: [ClothingOuterStorageBase, AllowSuitStorageClothing] # WD added AllowSuitStorageClothing
id: ClothingOuterCoatAMG
name: armored medical gown
description: The version of the medical gown, with elements of a bulletproof vest, looks strange, but your heart is protected.
@@ -496,7 +496,7 @@
#WHITE START
- type: entity
parent: ClothingOuterStorageBase
parent: [ClothingOuterStorageBase, AllowSuitStorageClothing] # WD added AllowSuitStorageClothing
id: ClothingOuterTrenchCoatInspector
name: inspector's trenchcoat
description: A thick leather trench, specially designed for the inspector. For real badass guys!
@@ -517,7 +517,7 @@
Heat: 0.90
- type: entity
parent: ClothingOuterStorageBase
parent: [ClothingOuterStorageBase, AllowSuitStorageClothing] # WD added AllowSuitStorageClothing
id: ClothingOuterJacketInspector
name: inspector's jacket
description: Official station inspector's coat. Let the command respect you!

View File

@@ -52,7 +52,7 @@
containers:
ballistic-ammo: !type:Container
- type: Sprite
sprite: Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_high_capacity_mag.rsi
sprite: White/Objects/Weapons/Ammunition/Magazine/Pistol/pistol_high_capacity_mag.rsi
layers:
- state: base
map: ["enum.GunVisualLayers.Base"]
@@ -192,7 +192,7 @@
parent: BaseMagazinePistolHighCapacity
components:
- type: BallisticAmmoProvider
proto: CartridgePistol
proto: CartridgePistolPractice # WD Fix
- type: Sprite
layers:
- state: practice
@@ -206,7 +206,7 @@
parent: BaseMagazinePistolHighCapacity
components:
- type: BallisticAmmoProvider
proto: CartridgePistol
proto: CartridgePistolRubber # WD Fix
- type: Sprite
layers:
- state: rubber

View File

@@ -229,9 +229,9 @@
- type: Appearance
- type: entity
name: laser rifle
name: laser rifle old
parent: BaseWeaponBattery
id: WeaponLaserCarbine
id: WeaponLaserCarbineOld
description: Favoured by Nanotrasen Security for being cheap and easy to use.
components:
- type: Sprite
@@ -261,7 +261,7 @@
- type: entity
name: practice laser rifle
parent: WeaponLaserCarbine
parent: WeaponLaserCarbineOld
id: WeaponLaserCarbinePractice
description: This modified laser rifle fires nearly harmless beams in the 40-watt range, for target practice.
components:
@@ -478,9 +478,9 @@
- type: Appearance
- type: entity
name: disabler
name: disabler Old
parent: BaseWeaponBatterySmall
id: WeaponDisabler
id: WeaponDisablerOld
description: A self-defense weapon that exhausts organic targets, weakening them until they collapse.
components:
- type: Tag
@@ -518,9 +518,9 @@
- Security
- type: entity
name: disabler SMG
name: disabler SMG old
parent: BaseWeaponBattery
id: WeaponDisablerSMG
id: WeaponDisablerSMGOld
description: Advanced weapon that exhausts organic targets, weakening them until they collapse.
components:
- type: Item
@@ -557,7 +557,7 @@
- type: entity
name: practice disabler
parent: WeaponDisabler
parent: WeaponDisablerOld
id: WeaponDisablerPractice
description: A self-defense weapon that exhausts organic targets, weakening them until they collapse. This one has been undertuned for cadets making it mostly harmless.
components:

View File

@@ -174,6 +174,16 @@
map: ["enum.GunVisualLayers.Base"]
- state: mag-0
map: ["enum.GunVisualLayers.Mag"]
- state: barrel_module
visible: false
map: [ "enum.ModuleVisualState.BarrelModule" ]
- state: handguard_module
visible: false
map: [ "enum.ModuleVisualState.HandGuardModule" ]
- state: aim_module
visible: false
sprite: White/Objects/Weapons/modulesOnPistols.rsi
map: [ "enum.ModuleVisualState.AimModule" ]
- type: Clothing
sprite: White/Objects/Weapons/Guns/Pistols/mk58.rsi
- type: Gun
@@ -182,6 +192,61 @@
- SemiAuto
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/mk58.ogg
- type: WeaponModules
- type: ItemSlots
slots:
gun_magazine:
name: Magazine
startingItem: MagazinePistol
insertSound: /Audio/Weapons/Guns/MagIn/pistol_magin.ogg
ejectSound: /Audio/Weapons/Guns/MagOut/pistol_magout.ogg
priority: 4
whitelist:
tags:
- MagazinePistol
- MagazinePistolHighCapacity
gun_chamber:
name: Chamber
startingItem: CartridgePistol
priority: 1
whitelist:
tags:
- CartridgePistol
barrel_module:
name: Barrel Module
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
priority: 3
whitelist:
tags:
- BaseBarrelModule
handguard_module:
name: Handguard Module
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
priority: 3
whitelist:
tags:
- BaseHandGuardModule
aim_module:
name: Aim Module
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
priority: 3
whitelist:
tags:
- HolographicAimModule
- type: ContainerContainer
containers:
gun_magazine: !type:ContainerSlot
gun_chamber: !type:ContainerSlot
handguard_module: !type:ContainerSlot
barrel_module: !type:ContainerSlot
aim_module: !type:ContainerSlot
- type: PointLight
enabled: false
autoRot: true
- type: Appearance
- type: entity
id: WeaponPistolMk58Nonlethal

View File

@@ -104,16 +104,6 @@
map: ["enum.GunVisualLayers.Base"]
- state: mag-0
map: ["enum.GunVisualLayers.Mag"]
- state: barrel_module
visible: false
map: [ "enum.ModuleVisualState.BarrelModule" ]
- state: handguard_module
visible: false
map: [ "enum.ModuleVisualState.HandGuardModule" ]
- state: aim_module
visible: false
sprite: White/Objects/Weapons/modulesOnSMGs.rsi
map: [ "enum.ModuleVisualState.AimModule" ]
- type: Clothing
sprite: White/Objects/Weapons/Guns/SMG/c20r-inhands.rsi
- type: Item
@@ -130,7 +120,6 @@
path: /Audio/Weapons/Guns/Gunshots/c-20r.ogg
- type: ChamberMagazineAmmoProvider
autoEject: true
- type: WeaponModules
- type: ItemSlots
slots:
gun_magazine:
@@ -149,37 +138,10 @@
whitelist:
tags:
- CartridgePistol
barrel_module:
name: Barrel Module
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
priority: 2
whitelist:
tags:
- BaseBarrelModule
handguard_module:
name: Handguard Module
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
priority: 3
whitelist:
tags:
- BaseHandGuardModule
aim_module:
name: Aim Module
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
priority: 3
whitelist:
tags:
- BaseAimModule
- type: ContainerContainer
containers:
gun_magazine: !type:ContainerSlot
gun_chamber: !type:ContainerSlot
handguard_module: !type:ContainerSlot
barrel_module: !type:ContainerSlot
aim_module: !type:ContainerSlot
- type: MagazineVisuals
magState: mag
steps: 4
@@ -248,7 +210,7 @@
name: Barrel Module
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
priority: 2
priority: 3
whitelist:
tags:
- BaseBarrelModule
@@ -409,7 +371,7 @@
name: Handguard Module
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
priority: 2
priority: 3
whitelist:
tags:
- BaseHandGuardModule
@@ -417,7 +379,7 @@
name: Aim Module
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
priority: 2
priority: 3
whitelist:
tags:
- BaseAimModule
@@ -466,7 +428,7 @@
name: Barrel Module
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
priority: 2
priority: 3
whitelist:
tags:
- BaseBarrelModule

View File

@@ -240,6 +240,7 @@
- CartridgePistolRubber
- CartridgeMagnumRubber
- ShellShotgunBeanbag
- ShellShotgunRubberShot # WD
- CartridgeRifleRubber
- CartridgeLightRifleRubber
- MagazineBoxMagnumRubber
@@ -811,6 +812,16 @@
- LightModule
- FlameHiderModule
- ShinanoGrenadeBeanbagRecipe
- CartridgePistolRubber
- ShellShotgunRubberShot
- CartridgeRifleRubber
- CartridgeLightRifleRubber
- MagazineBoxPistolRubber
- MagazineBoxRifleRubber
- MagazineBoxLightRifleRubber
- MagazinePistolHighCapacity
- MagazinePistolHighCapacityPractice
- MagazinePistolHighCapacityRubber
dynamicRecipes:
- CartridgeLightRifleIncendiary
- CartridgeMagnumIncendiary
@@ -820,10 +831,7 @@
- CartridgeMagnumUranium
- CartridgePistolUranium
- CartridgeRifleUranium
- CartridgeLightRifleRubber
- CartridgeMagnumRubber
- CartridgePistolRubber
- CartridgeRifleRubber
- ExplosivePayload
- FlashPayload
- HoloprojectorSecurity
@@ -835,10 +843,7 @@
- MagazineBoxMagnumUranium
- MagazineBoxPistolUranium
- MagazineBoxRifleUranium
- MagazineBoxLightRifleRubber
- MagazineBoxMagnumRubber
- MagazineBoxPistolRubber
- MagazineBoxRifleRubber
- MagazineGrenadeEmpty
- GrenadeEMP
- GrenadeFlash

View File

@@ -64,6 +64,7 @@
CrateArmoryLaser: 1.0
CrateArmoryShotgun: 1.0
CrateArmoryPistols: 1.0
CrateArmoryKLMG: 1.0 # WD
# rare armor
ClothingOuterArmorRiot: 1.0
# rare chemicals

View File

@@ -138,6 +138,15 @@
Plastic: 200
Steel: 100
- type: latheRecipe
id: ShellShotgunRubberShot
result: ShellShotgunRubberShot
completetime: 2
category: Ammo
materials:
Plastic: 10
Steel: 10
- type: latheRecipe
id: ShellShotgunBeanbag
result: ShellShotgunBeanbag
@@ -274,6 +283,32 @@
materials:
Steel: 500
- type: latheRecipe
id: MagazinePistolHighCapacity
result: MagazinePistolHighCapacity
category: Ammo
completetime: 5
materials:
Steel: 200
- type: latheRecipe
id: MagazinePistolHighCapacityPractice
result: MagazinePistolHighCapacityPractice
category: Ammo
completetime: 5
materials:
Steel: 40
Plastic: 160
- type: latheRecipe
id: MagazinePistolHighCapacityRubber
result: MagazinePistolHighCapacityRubber
category: Ammo
completetime: 5
materials:
Steel: 120
Plastic: 80
- type: latheRecipe
id: MagazinePistol
result: MagazinePistol
@@ -700,9 +735,9 @@
completetime: 3
category: Modules
materials:
Steel: 200
Steel: 100
Plastic: 100
Glass: 200
Glass: 100
- type: latheRecipe
id: LaserModule
@@ -710,8 +745,8 @@
completetime: 6
category: Modules
materials:
Steel: 1500
Plastic: 1000
Steel: 500
Plastic: 300
Glass: 300
- type: latheRecipe
@@ -721,7 +756,6 @@
category: Modules
materials:
Steel: 200
Plastic: 200
- type: latheRecipe
id: SilencerModule
@@ -730,7 +764,7 @@
category: Modules
materials:
Steel: 400
Plastic: 300
Plastic: 100
- type: latheRecipe
id: AcceleratorModule
@@ -738,10 +772,10 @@
completetime: 12
category: Modules
materials:
Steel: 3500
Plastic: 1000
Glass: 500
Gold: 1000
Steel: 500
Plastic: 100
Gold: 500
Silver: 100
- type: latheRecipe
id: HolographicSightModule
@@ -749,9 +783,9 @@
completetime: 6
category: Modules
materials:
Steel: 500
Plastic: 700
Glass: 300
Steel: 400
Plastic: 200
Glass: 500
- type: latheRecipe
id: TelescopicSightModule
@@ -759,7 +793,7 @@
completetime: 12
category: Modules
materials:
Steel: 1000
Plastic: 1400
Steel: 500
Plastic: 400
Glass: 600
Silver: 800
Silver: 100

View File

@@ -54,17 +54,18 @@
state: beanbag
discipline: Arsenal
tier: 1
cost: 5000
cost: 4000 # WD edits
recipeUnlocks:
- ShellShotgunBeanbag
- CartridgePistolRubber
# - ShellShotgunBeanbag
# - ShellShotgunRubberShot
# - CartridgePistolRubber
- CartridgeMagnumRubber
- CartridgeLightRifleRubber
- CartridgeRifleRubber
- MagazineBoxPistolRubber
# - CartridgeLightRifleRubber
# - CartridgeRifleRubber
# - MagazineBoxPistolRubber
- MagazineBoxMagnumRubber
- MagazineBoxLightRifleRubber
- MagazineBoxRifleRubber
# - MagazineBoxLightRifleRubber
# - MagazineBoxRifleRubber
- ShinanoGrenadeFlashRecipe
- ShinanoGrenadeSmokeRecipe
- ShinanoGrenadeStingerRecipe

View File

@@ -0,0 +1,117 @@
- type: entity
id: BasePowerCellHonk
abstract: true
parent: BaseItem
components:
- type: Item
size: Tiny
- type: Battery
pricePerJoule: 0.15
- type: PowerCell
- type: Explosive
explosionType: Default
maxIntensity: 200
intensitySlope: 1.5
- type: Sprite
sprite: Objects/Power/power_cells.rsi
- type: SolutionContainerManager
solutions:
battery:
maxVol: 5
- type: InjectableSolution
solution: battery
- type: DrawableSolution
solution: battery
- type: Extractable
juiceSolution:
reagents:
- ReagentId: Licoxide
Quantity: 5
- type: Tag
tags:
- DroneUsable
- PowerCell
- type: Appearance
- type: PowerCellVisuals
- type: Riggable
- type: PointLight
enabled: false
color: "#7FC080"
radius: 1.05
energy: 0.3
- type: PointLightRealBattery
- type: entity
parent: BasePowerCellHonk
id: EnergyCellСarbine
suffix: Full
name: Энергитическая батарея карабина
description: Перезаряжаемый элемент питания. Модифицирован для работы с лазерной винтовкой.
components:
- type: ProjectileBatteryAmmoProvider
proto: BulletTrailLaser
fireCost: 50
- type: Sprite
sprite: White/_Honk/Objects/Power/carbine_energy_cells.rsi
layers:
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: battery
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
- type: Battery
maxCharge: 1000
startingCharge: 1000
- type: Tag
tags:
- EnergyCellСarbine
- type: entity
parent: BasePowerCellHonk
id: EnergyCellDisabler
suffix: Full
name: Энергитическая батарея дизейблера
description: Перезаряжаемый элемент питания. Модифицирован для работы с дизейблером.
components:
- type: Sprite
sprite: White/_Honk/Objects/Power/disabler_energy_cells.rsi
layers:
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: battery
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
- type: ProjectileBatteryAmmoProvider
proto: BulletDisabler
fireCost: 100
- type: Battery
maxCharge: 1000
startingCharge: 1000
- type: Tag
tags:
- EnergyCellDisabler
- type: entity
parent: BasePowerCellHonk
id: EnergyCellDisablerSmg
suffix: Full
name: Энергитическая батарея дизейблера пулемёта
description: Перезаряжаемый элемент питания. Модифицирован для работы с дизейблером-пулемётом.
components:
- type: Sprite
sprite: White/_Honk/Objects/Power/disabler_smg_energy_cells.rsi
layers:
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: battery
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
- type: ProjectileBatteryAmmoProvider
proto: BulletDisablerSmg
fireCost: 33
- type: Battery
maxCharge: 990
startingCharge: 990
- type: Tag
tags:
- EnergyCellDisablerSmg

View File

@@ -0,0 +1,231 @@
# Colors for pointlight
# BDC07F - yellow
# 7FC080 - green
# C07F7F - red
# 7F93C0 - blue
- type: entity
id: BaseWeaponPowerCellHonk
parent: BaseItem
abstract: true
components:
- type: Sprite
- type: Item
size: Huge
- type: AmmoCounter
- type: Gun
fireRate: 2
selectedMode: SemiAuto
availableModes:
- SemiAuto
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/laser.ogg
- type: MagazineAmmoProvider
- type: Appearance
- type: StaticPrice
price: 500
- type: ContainerContainer
containers:
gun_magazine: !type:ContainerSlot
- type: EmitSoundOnPickup
sound:
collection: LasersPickUp
- type: EmitSoundOnDrop
sound:
collection: LasersDrop
- type: EmitSoundOnLand
sound:
collection: LasersDrop
- type: entity
id: BaseWeaponPowerCellSmallHonk
parent: BaseWeaponPowerCellHonk
abstract: true
components:
- type: Item
size: Small
- type: Tag
tags:
- Sidearm
- type: Clothing
sprite: Objects/Weapons/Guns/Battery/taser.rsi
quickEquip: false
slots:
- Belt
- suitStorage
#- type: entity
# name: svalinn laser pistol
# parent: BaseWeaponPowerCellSmall
# id: WeaponLaserSvalinn
# description: A cheap and widely used laser pistol.
# components:
# - type: Sprite
# sprite: Objects/Weapons/Guns/Battery/svalinn.rsi
# layers:
# - state: base
# map: ["enum.GunVisualLayers.Base"]
# - state: mag-unshaded-4
# map: ["enum.GunVisualLayers.MagUnshaded"]
# shader: unshaded
# - type: Item
# sprite: Objects/Weapons/Guns/Battery/svalinn.rsi
# - type: MagazineVisuals
# magState: mag
# steps: 5
# zeroVisible: true
# - type: PointLightBattery
# - type: PointLight
# radius: 1.3
# energy: 0.15
# color: "#BDC07F"
- type: entity
name: laser rifle
id: WeaponLaserCarbine
parent: BaseWeaponPowerCellHonk
description: Favoured by Nanotrasen Security for being cheap and easy to use.
components:
- type: Clothing
sprite: White/_Honk/Objects/Weapons/Guns/Battery/laser_gun.rsi
quickEquip: false
slots:
- Back
- suitStorage
- type: WeaponModules
- type: Sprite
sprite: White/_Honk/Objects/Weapons/Guns/Battery/laser_gun.rsi
layers:
- state: base
map: ["enum.GunVisualLayers.Base"]
- state: mag-unshaded-4
map: ["enum.GunVisualLayers.MagUnshaded"]
shader: unshaded
- state: aim_module
visible: false
sprite: White/Objects/Weapons/modulesOnSMGs.rsi
map: [ "enum.ModuleVisualState.AimModule" ]
- type: ItemSlots
slots:
gun_magazine:
name: Magazine
startingItem: EnergyCellСarbine
priority: 4
insertSound: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
ejectSound: /Audio/Weapons/Guns/MagOut/batrifle_magout.ogg
whitelist:
tags:
- EnergyCellСarbine
aim_module:
name: Aim Module
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
priority: 3
whitelist:
tags:
- HolographicAimModule
- type: MagazineVisuals
magState: mag
steps: 6
zeroVisible: true
- type: PointLightBattery
- type: PointLight
radius: 1.3
energy: 0.15
color: "#7FC080"
- type: ContainerContainer
containers:
gun_magazine: !type:ContainerSlot
aim_module: !type:ContainerSlot
- type: entity
parent: BaseWeaponPowerCellSmallHonk
id: WeaponDisabler
name: disabler
description: A self-defense weapon that exhausts organic targets, weakening them until they collapse.
components:
- type: Tag
tags:
- Taser
- Sidearm
- type: Sprite
sprite: White/_Honk/Objects/Weapons/Guns/Battery/disabler.rsi
layers:
- state: base
map: ["enum.GunVisualLayers.Base"]
- state: mag-unshaded-0
map: ["enum.GunVisualLayers.MagUnshaded"]
shader: unshaded
- type: ItemSlots
slots:
gun_magazine:
name: Magazine
startingItem: EnergyCellDisabler
insertSound: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
ejectSound: /Audio/Weapons/Guns/MagOut/batrifle_magout.ogg
whitelist:
tags:
- EnergyCellDisabler
- type: Clothing
sprite: Objects/Weapons/Guns/Battery/disabler.rsi
quickEquip: false
slots:
- suitStorage
- Belt
- type: Gun
fireRate: 2
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/taser2.ogg
- type: MagazineVisuals
magState: mag
steps: 5
zeroVisible: true
- type: Appearance
- type: GuideHelp
guides:
- Security
- type: entity
name: disabler SMG
parent: BaseWeaponPowerCellHonk
id: WeaponDisablerSMG
description: Advanced weapon that exhausts organic targets, weakening them until they collapse.
components:
- type: Item
size: Large
- type: Tag
tags:
- Taser
- Sidearm
- type: Sprite
sprite: White/_Honk/Objects/Weapons/Guns/Battery/disabler_smg.rsi
layers:
- state: base
map: ["enum.GunVisualLayers.Base"]
- state: mag-unshaded-0
map: ["enum.GunVisualLayers.MagUnshaded"]
shader: unshaded
- type: Gun
selectedMode: FullAuto
fireRate: 4
availableModes:
- SemiAuto
- FullAuto
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/taser2.ogg
- type: ItemSlots
slots:
gun_magazine:
name: Magazine
startingItem: EnergyCellDisablerSmg
insertSound: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
ejectSound: /Audio/Weapons/Guns/MagOut/batrifle_magout.ogg
whitelist:
tags:
- EnergyCellDisablerSmg
- type: MagazineVisuals
magState: mag
steps: 5
zeroVisible: true
- type: StaticPrice
price: 260

View File

@@ -111,19 +111,23 @@
parent: BaseAimModule
id: HolographicSightModule
name: "holographic sight"
description: Holographic sight for rifles (lecter, CV, drozd, WT).
description: Holographic sight for rifles (lecter, CV, drozd, WT).
components:
- type: AimModule
value: "holographic"
module_type: "aim_module"
- type: Sprite
state: holographic
- type: Tag
tags:
- BaseAimModule
- HolographicAimModule
- type: entity
parent: BaseAimModule
id: TelescopicSightModule
name: "telescopic sight"
description: Telescopic sight for rifles (lecter, CV, drozd, WT).
description: Telescopic sight for rifles (lecter, CV, drozd, WT).
components:
- type: AimModule
divisor: 0.15

View File

@@ -79,9 +79,15 @@
- type: Tag
id: BaseAimModule
- type: Tag
id: HolographicAimModule
- type: Tag
id: BaseShutterModule
- type: Tag
id: HasLightModule
- type: Tag
id: DoorjackUsable
@@ -123,3 +129,24 @@
- type: Tag
id: MirrorShieldGhetto
- type: Tag
id: EnergyCellСarbine
- type: Tag
id: EnergyCellDisabler
- type: Tag
id: EnergyCellDisablerSmg
- type: Tag
id: EnergyCellLaserCannon
- type: Tag
id: EnergyCellLaserRetro
- type: Tag
id: EnergyCellMakeshift
- type: Tag
id: MagazineKalashLightRifleBox

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

View File

@@ -0,0 +1,45 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "https://github.com/tgstation/tgstation/pull/1684/commits/19e51caef09e78ca1122d26455b539ff5968d334, https://github.com/tgstation/tgstation/blob/master/icons/obj/weapons/guns/ammo.dmi",
"states": [
{
"name": "base"
},
{
"name": "practice"
},
{
"name": "red"
},
{
"name": "rubber"
},
{
"name": "uranium"
},
{
"name": "piercing"
},
{
"name": "mag-1"
},
{
"name": "mag-2"
},
{
"name": "mag-3"
},
{
"name": "mag-4"
},
{
"name": "mag-5"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 B

View File

@@ -31,9 +31,30 @@
"name": "equipped-BELT",
"directions": 4
},
{
{
"name": "equipped-SUITSTORAGE",
"directions": 4
},
{
"name": "silencer"
},
{
"name": "light"
},
{
"name": "laser"
},
{
"name": "flamehider"
},
{
"name": "accelerator"
},
{
"name": "barrel_module"
},
{
"name": "handguard_module"
}
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 B

View File

@@ -27,27 +27,6 @@
},
{
"name": "mag-3"
},
{
"name": "silencer"
},
{
"name": "light"
},
{
"name": "laser"
},
{
"name": "flamehider"
},
{
"name": "accelerator"
},
{
"name": "barrel_module"
},
{
"name": "handguard_module"
}
]
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

View File

@@ -0,0 +1,20 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "made by Aviu",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "holographic"
},
{
"name": "telescopic"
},
{
"name": "aim_module"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

View File

@@ -0,0 +1,20 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Bombinos Power Cells Inc.",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "battery"
},
{
"name": "o1"
},
{
"name": "o2"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 B

View File

@@ -0,0 +1,20 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Bombinos Power Cells Inc.",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "battery"
},
{
"name": "o1"
},
{
"name": "o2"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

View File

@@ -0,0 +1,20 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Bombinos Power Cells Inc.",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "battery"
},
{
"name": "o1"
},
{
"name": "o2"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 874 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 932 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -0,0 +1,81 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "taken from tg station at commit https://github.com/tgstation/tgstation/blob/832ae532766d491d91db53746d15b4b55be3f2b0",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "base"
},
{
"name": "mag-unshaded-4"
},
{
"name": "mag-unshaded-3"
},
{
"name": "mag-unshaded-2"
},
{
"name": "mag-unshaded-1"
},
{
"name": "mag-unshaded-0",
"delays": [
[
0.3,
0.3
]
]
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-left-0"
},
{
"name": "inhand-left-1"
},
{
"name": "inhand-left-2"
},
{
"name": "inhand-left-3"
},
{
"name": "inhand-left-4"
},
{
"name": "inhand-right",
"directions": 4
},
{
"name": "inhand-right-0"
},
{
"name": "inhand-right-1"
},
{
"name": "inhand-right-2"
},
{
"name": "inhand-right-3"
},
{
"name": "inhand-right-4"
},
{
"name": "equipped-BELT",
"directions": 4
},
{
"name": "equipped-SUITSTORAGE",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 872 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

View File

@@ -0,0 +1,73 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/26818af618762ff52319b3417be8cdc1279e99b7/icons/obj/weapons/guns/energy.dmi",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "base"
},
{
"name": "mag-unshaded-4"
},
{
"name": "mag-unshaded-3"
},
{
"name": "mag-unshaded-2"
},
{
"name": "mag-unshaded-1"
},
{
"name": "mag-unshaded-0",
"delays": [
[
0.4,
0.4
]
]
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-left-0"
},
{
"name": "inhand-left-1"
},
{
"name": "inhand-left-2"
},
{
"name": "inhand-left-3"
},
{
"name": "inhand-left-4"
},
{
"name": "inhand-right",
"directions": 4
},
{
"name": "inhand-right-0"
},
{
"name": "inhand-right-1"
},
{
"name": "inhand-right-2"
},
{
"name": "inhand-right-3"
},
{
"name": "inhand-right-4"
}
]
}

Some files were not shown because too many files have changed in this diff Show More