[Feat] Modules Update (#268)
* add new module slot * update priority * sprites + changes in system * sprites on SMGs + fix examine * sprite fix
@@ -16,12 +16,19 @@ public sealed partial class WeaponModulesVisuals : VisualizerSystem<WeaponModule
|
|||||||
if(args.Sprite == null)
|
if(args.Sprite == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
args.Sprite.LayerSetVisible(ModuleVisualState.Module, false);
|
args.Sprite.LayerSetVisible(ModuleVisualState.HandGuardModule, false);
|
||||||
|
args.Sprite.LayerSetVisible(ModuleVisualState.BarrelModule, false);
|
||||||
|
|
||||||
if (AppearanceSystem.TryGetData<string>(uid, ModuleVisualState.Module, out var module, args.Component) && module.Length != 0 && module != "none")
|
if (AppearanceSystem.TryGetData<string>(uid, ModuleVisualState.HandGuardModule, out var handguardModule, args.Component) && handguardModule.Length != 0 && handguardModule != "none")
|
||||||
{
|
{
|
||||||
args.Sprite.LayerSetState(ModuleVisualState.Module, module);
|
args.Sprite.LayerSetState(ModuleVisualState.HandGuardModule, handguardModule);
|
||||||
args.Sprite.LayerSetVisible(ModuleVisualState.Module, true);
|
args.Sprite.LayerSetVisible(ModuleVisualState.HandGuardModule, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AppearanceSystem.TryGetData<string>(uid, ModuleVisualState.BarrelModule, out var barrelModule, args.Component) && barrelModule.Length != 0 && barrelModule != "none")
|
||||||
|
{
|
||||||
|
args.Sprite.LayerSetState(ModuleVisualState.BarrelModule, barrelModule);
|
||||||
|
args.Sprite.LayerSetVisible(ModuleVisualState.BarrelModule, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AppearanceSystem.TryGetData(uid, Modules.Light, out var data, args.Component))
|
if (AppearanceSystem.TryGetData(uid, Modules.Light, out var data, args.Component))
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using Content.Shared._White.WeaponModules;
|
using Content.Shared._White.WeaponModules;
|
||||||
using Content.Shared.Weapons.Ranged.Components;
|
using Content.Shared.Weapons.Ranged.Components;
|
||||||
using Content.Shared.Weapons.Ranged.Events;
|
|
||||||
using Content.Shared.Weapons.Ranged.Systems;
|
using Content.Shared.Weapons.Ranged.Systems;
|
||||||
using Linguini.Syntax.Ast;
|
|
||||||
using Robust.Server.GameObjects;
|
using Robust.Server.GameObjects;
|
||||||
using Robust.Shared.Containers;
|
using Robust.Shared.Containers;
|
||||||
|
|
||||||
@@ -11,7 +9,11 @@ namespace Content.Server._White.WeaponModules;
|
|||||||
|
|
||||||
public sealed class WeaponModulesSystem : EntitySystem
|
public sealed class WeaponModulesSystem : EntitySystem
|
||||||
{
|
{
|
||||||
protected const string ModulesSlot = "gun_modules";
|
protected static readonly Dictionary<string, Enum> Slots = new()
|
||||||
|
{
|
||||||
|
{ "handguard_module", ModuleVisualState.HandGuardModule }, { "barrel_module", ModuleVisualState.BarrelModule }
|
||||||
|
};
|
||||||
|
|
||||||
[Dependency] private readonly PointLightSystem _lightSystem = default!;
|
[Dependency] private readonly PointLightSystem _lightSystem = default!;
|
||||||
[Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!;
|
[Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!;
|
||||||
[Dependency] private readonly SharedGunSystem _gunSystem = default!;
|
[Dependency] private readonly SharedGunSystem _gunSystem = default!;
|
||||||
@@ -40,7 +42,7 @@ public sealed class WeaponModulesSystem : EntitySystem
|
|||||||
string containerId, [NotNullWhen(true)] out WeaponModulesComponent? weaponModulesComponent)
|
string containerId, [NotNullWhen(true)] out WeaponModulesComponent? weaponModulesComponent)
|
||||||
{
|
{
|
||||||
if (!TryComp(weapon, out weaponModulesComponent) || !TryComp<AppearanceComponent>(weapon, out var appearanceComponent) ||
|
if (!TryComp(weapon, out weaponModulesComponent) || !TryComp<AppearanceComponent>(weapon, out var appearanceComponent) ||
|
||||||
containerId != ModulesSlot)
|
!Slots.ContainsKey(containerId))
|
||||||
{
|
{
|
||||||
weaponModulesComponent = null;
|
weaponModulesComponent = null;
|
||||||
appearanceComponent = null;
|
appearanceComponent = null;
|
||||||
@@ -49,23 +51,32 @@ public sealed class WeaponModulesSystem : EntitySystem
|
|||||||
|
|
||||||
if(!weaponModulesComponent.Modules.Contains(module))
|
if(!weaponModulesComponent.Modules.Contains(module))
|
||||||
weaponModulesComponent.Modules.Add(module);
|
weaponModulesComponent.Modules.Add(module);
|
||||||
_appearanceSystem.SetData(weapon, ModuleVisualState.Module, component.AppearanceValue, appearanceComponent);
|
|
||||||
|
if (!Slots.TryGetValue(containerId, out var value))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
_appearanceSystem.SetData(weapon, value, component.AppearanceValue, appearanceComponent);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool TryEjectModule(EntityUid module, EntityUid weapon, string containerId, [NotNullWhen(true)] out WeaponModulesComponent? weaponModulesComponent)
|
private bool TryEjectModule(EntityUid module, EntityUid weapon, string containerId, [NotNullWhen(true)] out WeaponModulesComponent? weaponModulesComponent)
|
||||||
{
|
{
|
||||||
if (!TryComp(weapon, out weaponModulesComponent) || !TryComp<AppearanceComponent>(weapon, out var appearanceComponent) || containerId != ModulesSlot)
|
if (!TryComp(weapon, out weaponModulesComponent) || !TryComp<AppearanceComponent>(weapon, out var appearanceComponent) || !Slots.ContainsKey(containerId))
|
||||||
{
|
{
|
||||||
weaponModulesComponent = null;
|
weaponModulesComponent = null;
|
||||||
appearanceComponent = null;
|
appearanceComponent = null;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(weaponModulesComponent.Modules.Contains(module))
|
if(weaponModulesComponent.Modules.Contains(module))
|
||||||
weaponModulesComponent.Modules.Remove(module);
|
weaponModulesComponent.Modules.Remove(module);
|
||||||
_appearanceSystem.SetData(weapon, ModuleVisualState.Module, "none", appearanceComponent);
|
|
||||||
|
if (!Slots.TryGetValue(containerId, out var value))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
_appearanceSystem.SetData(weapon, value, "none", appearanceComponent);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using System.Linq;
|
||||||
using Content.Shared._White.WeaponModules;
|
using Content.Shared._White.WeaponModules;
|
||||||
using Content.Shared.Actions;
|
using Content.Shared.Actions;
|
||||||
using Content.Shared.Examine;
|
using Content.Shared.Examine;
|
||||||
@@ -30,10 +31,9 @@ public abstract partial class SharedGunSystem
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var module in weaponModulesComponent.Modules)
|
var moduleNames = weaponModulesComponent.Modules.Select(module => Name(module)).ToArray();
|
||||||
{
|
|
||||||
args.PushMarkup(Loc.GetString("gun-modules", ("modules", Name(module))));
|
args.PushMarkup(Loc.GetString("gun-modules", ("modules", string.Join(", ", moduleNames))));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!TryComp<TwoModeEnergyAmmoProviderComponent>(uid, out var comp))
|
if (!TryComp<TwoModeEnergyAmmoProviderComponent>(uid, out var comp))
|
||||||
|
|||||||
@@ -8,4 +8,7 @@ public partial class BaseModuleComponent : Component
|
|||||||
{
|
{
|
||||||
[ViewVariables(VVAccess.ReadWrite), DataField("value")]
|
[ViewVariables(VVAccess.ReadWrite), DataField("value")]
|
||||||
public string AppearanceValue;
|
public string AppearanceValue;
|
||||||
|
|
||||||
|
[ViewVariables(VVAccess.ReadWrite), DataField("module_type")]
|
||||||
|
public string ModuleType;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ public partial class WeaponModulesComponent : Component
|
|||||||
[Serializable, NetSerializable]
|
[Serializable, NetSerializable]
|
||||||
public enum ModuleVisualState : byte
|
public enum ModuleVisualState : byte
|
||||||
{
|
{
|
||||||
Module
|
BarrelModule,
|
||||||
|
HandGuardModule
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable, NetSerializable]
|
[Serializable, NetSerializable]
|
||||||
|
|||||||
@@ -44,19 +44,10 @@
|
|||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- CartridgeLightRifle
|
- CartridgeLightRifle
|
||||||
gun_modules:
|
|
||||||
name: Modules
|
|
||||||
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
|
||||||
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
|
||||||
priority: 2
|
|
||||||
whitelist:
|
|
||||||
tags:
|
|
||||||
- BaseModule
|
|
||||||
- type: ContainerContainer
|
- type: ContainerContainer
|
||||||
containers:
|
containers:
|
||||||
gun_magazine: !type:ContainerSlot
|
gun_magazine: !type:ContainerSlot
|
||||||
gun_chamber: !type:ContainerSlot
|
gun_chamber: !type:ContainerSlot
|
||||||
gun_modules: !type:ContainerSlot
|
|
||||||
- type: StaticPrice
|
- type: StaticPrice
|
||||||
price: 500
|
price: 500
|
||||||
|
|
||||||
@@ -73,10 +64,14 @@
|
|||||||
map: [ "enum.GunVisualLayers.Base" ]
|
map: [ "enum.GunVisualLayers.Base" ]
|
||||||
- state: mag-0
|
- state: mag-0
|
||||||
map: [ "enum.GunVisualLayers.Mag" ]
|
map: [ "enum.GunVisualLayers.Mag" ]
|
||||||
- state: laser
|
- state: barrel_module
|
||||||
visible: false
|
visible: false
|
||||||
sprite: White/Objects/Weapons/modulesOnWeapon.rsi
|
sprite: White/Objects/Weapons/modulesOnWeapon.rsi
|
||||||
map: [ "enum.ModuleVisualState.Module" ]
|
map: [ "enum.ModuleVisualState.BarrelModule" ]
|
||||||
|
- state: handguard_module
|
||||||
|
visible: false
|
||||||
|
sprite: White/Objects/Weapons/modulesOnWeapon.rsi
|
||||||
|
map: [ "enum.ModuleVisualState.HandGuardModule" ]
|
||||||
- type: Gun
|
- type: Gun
|
||||||
fireRate: 5
|
fireRate: 5
|
||||||
soundGunshot:
|
soundGunshot:
|
||||||
@@ -91,7 +86,7 @@
|
|||||||
startingItem: MagazineLightRifle
|
startingItem: MagazineLightRifle
|
||||||
insertSound: /Audio/Weapons/Guns/MagIn/ltrifle_magin.ogg
|
insertSound: /Audio/Weapons/Guns/MagIn/ltrifle_magin.ogg
|
||||||
ejectSound: /Audio/Weapons/Guns/MagOut/ltrifle_magout.ogg
|
ejectSound: /Audio/Weapons/Guns/MagOut/ltrifle_magout.ogg
|
||||||
priority: 2
|
priority: 4
|
||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- MagazineLightRifle
|
- MagazineLightRifle
|
||||||
@@ -102,19 +97,28 @@
|
|||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- CartridgeLightRifle
|
- CartridgeLightRifle
|
||||||
gun_modules:
|
handguard_module:
|
||||||
name: Modules
|
name: Handguard Module
|
||||||
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
||||||
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
||||||
priority: 2
|
priority: 2
|
||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- BaseModule
|
- BaseHandGuardModule
|
||||||
|
barrel_module:
|
||||||
|
name: Barrel Module
|
||||||
|
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
||||||
|
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
||||||
|
priority: 3
|
||||||
|
whitelist:
|
||||||
|
tags:
|
||||||
|
- BaseBarrelModule
|
||||||
- type: ContainerContainer
|
- type: ContainerContainer
|
||||||
containers:
|
containers:
|
||||||
gun_magazine: !type:ContainerSlot
|
gun_magazine: !type:ContainerSlot
|
||||||
gun_chamber: !type:ContainerSlot
|
gun_chamber: !type:ContainerSlot
|
||||||
gun_modules: !type:ContainerSlot
|
handguard_module: !type:ContainerSlot
|
||||||
|
barrel_module: !type:ContainerSlot
|
||||||
- type: MagazineVisuals
|
- type: MagazineVisuals
|
||||||
magState: mag
|
magState: mag
|
||||||
steps: 1
|
steps: 1
|
||||||
@@ -180,10 +184,14 @@
|
|||||||
map: [ "enum.GunVisualLayers.Base" ]
|
map: [ "enum.GunVisualLayers.Base" ]
|
||||||
- state: mag-0
|
- state: mag-0
|
||||||
map: [ "enum.GunVisualLayers.Mag" ]
|
map: [ "enum.GunVisualLayers.Mag" ]
|
||||||
- state: laser
|
- state: barrel_module
|
||||||
visible: false
|
visible: false
|
||||||
sprite: White/Objects/Weapons/modulesOnWeapon.rsi
|
sprite: White/Objects/Weapons/modulesOnWeapon.rsi
|
||||||
map: [ "enum.ModuleVisualState.Module" ]
|
map: [ "enum.ModuleVisualState.BarrelModule" ]
|
||||||
|
- state: handguard_module
|
||||||
|
visible: false
|
||||||
|
sprite: White/Objects/Weapons/modulesOnWeapon.rsi
|
||||||
|
map: [ "enum.ModuleVisualState.HandGuardModule" ]
|
||||||
- type: Clothing
|
- type: Clothing
|
||||||
sprite: Objects/Weapons/Guns/Rifles/lecter.rsi
|
sprite: Objects/Weapons/Guns/Rifles/lecter.rsi
|
||||||
- type: Gun
|
- type: Gun
|
||||||
@@ -196,7 +204,7 @@
|
|||||||
startingItem: MagazineRifle
|
startingItem: MagazineRifle
|
||||||
insertSound: /Audio/Weapons/Guns/MagIn/ltrifle_magin.ogg
|
insertSound: /Audio/Weapons/Guns/MagIn/ltrifle_magin.ogg
|
||||||
ejectSound: /Audio/Weapons/Guns/MagOut/ltrifle_magout.ogg
|
ejectSound: /Audio/Weapons/Guns/MagOut/ltrifle_magout.ogg
|
||||||
priority: 2
|
priority: 4
|
||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- MagazineRifle
|
- MagazineRifle
|
||||||
@@ -207,19 +215,28 @@
|
|||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- CartridgeRifle
|
- CartridgeRifle
|
||||||
gun_modules:
|
handguard_module:
|
||||||
name: Modules
|
name: Handguard Module
|
||||||
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
||||||
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
||||||
priority: 2
|
priority: 2
|
||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- BaseModule
|
- BaseHandGuardModule
|
||||||
|
barrel_module:
|
||||||
|
name: Barrel Module
|
||||||
|
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
||||||
|
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
||||||
|
priority: 3
|
||||||
|
whitelist:
|
||||||
|
tags:
|
||||||
|
- BaseBarrelModule
|
||||||
- type: ContainerContainer
|
- type: ContainerContainer
|
||||||
containers:
|
containers:
|
||||||
gun_magazine: !type:ContainerSlot
|
gun_magazine: !type:ContainerSlot
|
||||||
gun_chamber: !type:ContainerSlot
|
gun_chamber: !type:ContainerSlot
|
||||||
gun_modules: !type:ContainerSlot
|
handguard_module: !type:ContainerSlot
|
||||||
|
barrel_module: !type:ContainerSlot
|
||||||
- type: MagazineVisuals
|
- type: MagazineVisuals
|
||||||
magState: mag
|
magState: mag
|
||||||
steps: 1
|
steps: 1
|
||||||
@@ -242,7 +259,7 @@
|
|||||||
startingItem: MagazineRifleRubber
|
startingItem: MagazineRifleRubber
|
||||||
insertSound: /Audio/Weapons/Guns/MagIn/ltrifle_magin.ogg
|
insertSound: /Audio/Weapons/Guns/MagIn/ltrifle_magin.ogg
|
||||||
ejectSound: /Audio/Weapons/Guns/MagOut/ltrifle_magout.ogg
|
ejectSound: /Audio/Weapons/Guns/MagOut/ltrifle_magout.ogg
|
||||||
priority: 2
|
priority: 4
|
||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- MagazineRifle
|
- MagazineRifle
|
||||||
@@ -253,11 +270,19 @@
|
|||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- CartridgeRifle
|
- CartridgeRifle
|
||||||
gun_modules:
|
handguard_module:
|
||||||
name: Modules
|
name: Handguard Module
|
||||||
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
||||||
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
||||||
priority: 2
|
priority: 2
|
||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- BaseModule
|
- BaseHandGuardModule
|
||||||
|
barrel_module:
|
||||||
|
name: Barrel Module
|
||||||
|
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
||||||
|
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
||||||
|
priority: 3
|
||||||
|
whitelist:
|
||||||
|
tags:
|
||||||
|
- BaseBarrelModule
|
||||||
|
|||||||
@@ -91,6 +91,14 @@
|
|||||||
map: ["enum.GunVisualLayers.Base"]
|
map: ["enum.GunVisualLayers.Base"]
|
||||||
- state: mag-0
|
- state: mag-0
|
||||||
map: ["enum.GunVisualLayers.Mag"]
|
map: ["enum.GunVisualLayers.Mag"]
|
||||||
|
- state: barrel_module
|
||||||
|
visible: false
|
||||||
|
sprite: White/Objects/Weapons/modulesOnSMGs.rsi
|
||||||
|
map: [ "enum.ModuleVisualState.BarrelModule" ]
|
||||||
|
- state: handguard_module
|
||||||
|
visible: false
|
||||||
|
sprite: White/Objects/Weapons/modulesOnSMGs.rsi
|
||||||
|
map: [ "enum.ModuleVisualState.HandGuardModule" ]
|
||||||
- type: Clothing
|
- type: Clothing
|
||||||
sprite: Objects/Weapons/Guns/SMGs/c20r.rsi
|
sprite: Objects/Weapons/Guns/SMGs/c20r.rsi
|
||||||
- type: Gun
|
- type: Gun
|
||||||
@@ -98,11 +106,55 @@
|
|||||||
path: /Audio/Weapons/Guns/Gunshots/c-20r.ogg
|
path: /Audio/Weapons/Guns/Gunshots/c-20r.ogg
|
||||||
- type: ChamberMagazineAmmoProvider
|
- type: ChamberMagazineAmmoProvider
|
||||||
autoEject: true
|
autoEject: true
|
||||||
|
- type: WeaponModules
|
||||||
|
- type: ItemSlots
|
||||||
|
slots:
|
||||||
|
gun_magazine:
|
||||||
|
name: Magazine
|
||||||
|
startingItem: MagazinePistolSubMachineGun
|
||||||
|
insertSound: /Audio/Weapons/Guns/MagIn/smg_magin.ogg
|
||||||
|
ejectSound: /Audio/Weapons/Guns/MagOut/smg_magout.ogg
|
||||||
|
priority: 4
|
||||||
|
whitelist:
|
||||||
|
tags:
|
||||||
|
- MagazinePistolSubMachineGun
|
||||||
|
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: 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
|
||||||
|
- type: ContainerContainer
|
||||||
|
containers:
|
||||||
|
gun_magazine: !type:ContainerSlot
|
||||||
|
gun_chamber: !type:ContainerSlot
|
||||||
|
handguard_module: !type:ContainerSlot
|
||||||
|
barrel_module: !type:ContainerSlot
|
||||||
- type: MagazineVisuals
|
- type: MagazineVisuals
|
||||||
magState: mag
|
magState: mag
|
||||||
steps: 6
|
steps: 6
|
||||||
zeroVisible: true
|
zeroVisible: true
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
|
- type: PointLight
|
||||||
|
enabled: false
|
||||||
|
autoRot: true
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
name: Drozd
|
name: Drozd
|
||||||
@@ -117,10 +169,14 @@
|
|||||||
map: ["enum.GunVisualLayers.Base"]
|
map: ["enum.GunVisualLayers.Base"]
|
||||||
- state: mag-0
|
- state: mag-0
|
||||||
map: ["enum.GunVisualLayers.Mag"]
|
map: ["enum.GunVisualLayers.Mag"]
|
||||||
- state: laser
|
- state: barrel_module
|
||||||
visible: false
|
visible: false
|
||||||
sprite: White/Objects/Weapons/modulesOnWeapon.rsi
|
sprite: White/Objects/Weapons/modulesOnWeapon.rsi
|
||||||
map: [ "enum.ModuleVisualState.Module" ]
|
map: [ "enum.ModuleVisualState.BarrelModule" ]
|
||||||
|
- state: handguard_module
|
||||||
|
visible: false
|
||||||
|
sprite: White/Objects/Weapons/modulesOnWeapon.rsi
|
||||||
|
map: [ "enum.ModuleVisualState.HandGuardModule" ]
|
||||||
- type: Clothing
|
- type: Clothing
|
||||||
sprite: Objects/Weapons/Guns/SMGs/drozd.rsi
|
sprite: Objects/Weapons/Guns/SMGs/drozd.rsi
|
||||||
- type: Gun
|
- type: Gun
|
||||||
@@ -138,7 +194,7 @@
|
|||||||
startingItem: MagazinePistolSubMachineGun
|
startingItem: MagazinePistolSubMachineGun
|
||||||
insertSound: /Audio/Weapons/Guns/MagIn/smg_magin.ogg
|
insertSound: /Audio/Weapons/Guns/MagIn/smg_magin.ogg
|
||||||
ejectSound: /Audio/Weapons/Guns/MagOut/smg_magout.ogg
|
ejectSound: /Audio/Weapons/Guns/MagOut/smg_magout.ogg
|
||||||
priority: 2
|
priority: 4
|
||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- MagazinePistolSubMachineGun
|
- MagazinePistolSubMachineGun
|
||||||
@@ -149,19 +205,28 @@
|
|||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- CartridgePistol
|
- CartridgePistol
|
||||||
gun_modules:
|
barrel_module:
|
||||||
name: Modules
|
name: Barrel Module
|
||||||
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
||||||
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
||||||
priority: 2
|
priority: 2
|
||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- BaseModule
|
- 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
|
||||||
- type: ContainerContainer
|
- type: ContainerContainer
|
||||||
containers:
|
containers:
|
||||||
gun_magazine: !type:ContainerSlot
|
gun_magazine: !type:ContainerSlot
|
||||||
gun_chamber: !type:ContainerSlot
|
gun_chamber: !type:ContainerSlot
|
||||||
gun_modules: !type:ContainerSlot
|
handguard_module: !type:ContainerSlot
|
||||||
|
barrel_module: !type:ContainerSlot
|
||||||
- type: MagazineVisuals
|
- type: MagazineVisuals
|
||||||
magState: mag
|
magState: mag
|
||||||
steps: 1
|
steps: 1
|
||||||
@@ -237,10 +302,14 @@
|
|||||||
- state: mag-unshaded-0
|
- state: mag-unshaded-0
|
||||||
map: ["enum.GunVisualLayers.MagUnshaded"]
|
map: ["enum.GunVisualLayers.MagUnshaded"]
|
||||||
shader: unshaded
|
shader: unshaded
|
||||||
- state: laser
|
- state: barrel_module
|
||||||
visible: false
|
visible: false
|
||||||
sprite: White/Objects/Weapons/modulesOnWeapon.rsi
|
sprite: White/Objects/Weapons/modulesOnWeapon.rsi
|
||||||
map: [ "enum.ModuleVisualState.Module" ]
|
map: [ "enum.ModuleVisualState.BarrelModule" ]
|
||||||
|
- state: handguard_module
|
||||||
|
visible: false
|
||||||
|
sprite: White/Objects/Weapons/modulesOnWeapon.rsi
|
||||||
|
map: [ "enum.ModuleVisualState.HandGuardModule" ]
|
||||||
- type: Clothing
|
- type: Clothing
|
||||||
sprite: Objects/Weapons/Guns/SMGs/wt550.rsi
|
sprite: Objects/Weapons/Guns/SMGs/wt550.rsi
|
||||||
- type: ChamberMagazineAmmoProvider
|
- type: ChamberMagazineAmmoProvider
|
||||||
@@ -258,7 +327,7 @@
|
|||||||
startingItem: MagazinePistolSubMachineGunTopMounted
|
startingItem: MagazinePistolSubMachineGunTopMounted
|
||||||
insertSound: /Audio/Weapons/Guns/MagIn/smg_magin.ogg
|
insertSound: /Audio/Weapons/Guns/MagIn/smg_magin.ogg
|
||||||
ejectSound: /Audio/Weapons/Guns/MagOut/smg_magout.ogg
|
ejectSound: /Audio/Weapons/Guns/MagOut/smg_magout.ogg
|
||||||
priority: 2
|
priority: 4
|
||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- MagazinePistolSubMachineGunTopMounted
|
- MagazinePistolSubMachineGunTopMounted
|
||||||
@@ -269,18 +338,28 @@
|
|||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- CartridgePistol
|
- CartridgePistol
|
||||||
gun_modules:
|
barrel_module:
|
||||||
name: Modules
|
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
|
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
||||||
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
||||||
priority: 2
|
priority: 2
|
||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- BaseModule
|
- BaseHandGuardModule
|
||||||
- type: ContainerContainer
|
- type: ContainerContainer
|
||||||
containers:
|
containers:
|
||||||
gun_magazine: !type:ContainerSlot
|
gun_magazine: !type:ContainerSlot
|
||||||
gun_chamber: !type:ContainerSlot
|
gun_chamber: !type:ContainerSlot
|
||||||
|
handguard_module: !type:ContainerSlot
|
||||||
|
barrel_module: !type:ContainerSlot
|
||||||
- type: MagazineVisuals
|
- type: MagazineVisuals
|
||||||
magState: mag
|
magState: mag
|
||||||
steps: 6
|
steps: 6
|
||||||
@@ -304,7 +383,7 @@
|
|||||||
startingItem: MagazinePistolSubMachineGunRubber
|
startingItem: MagazinePistolSubMachineGunRubber
|
||||||
insertSound: /Audio/Weapons/Guns/MagIn/smg_magin.ogg
|
insertSound: /Audio/Weapons/Guns/MagIn/smg_magin.ogg
|
||||||
ejectSound: /Audio/Weapons/Guns/MagOut/smg_magout.ogg
|
ejectSound: /Audio/Weapons/Guns/MagOut/smg_magout.ogg
|
||||||
priority: 2
|
priority: 4
|
||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- MagazinePistolSubMachineGun
|
- MagazinePistolSubMachineGun
|
||||||
@@ -315,14 +394,22 @@
|
|||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- CartridgePistol
|
- CartridgePistol
|
||||||
gun_modules:
|
barrel_module:
|
||||||
name: Modules
|
name: Barrel Module
|
||||||
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
insertSound: /Audio/White/Gun/Modules/insertmodule.ogg
|
||||||
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
ejectSound: /Audio/White/Gun/Modules/ejectmodule.ogg
|
||||||
priority: 2
|
priority: 2
|
||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- BaseModule
|
- 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
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
name: Vector
|
name: Vector
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: BaseModule
|
id: BaseHandGuardModule
|
||||||
parent: BaseItem
|
parent: BaseItem
|
||||||
abstract: true
|
abstract: true
|
||||||
components:
|
components:
|
||||||
@@ -7,17 +7,29 @@
|
|||||||
sprite: White/Objects/Weapons/modules.rsi
|
sprite: White/Objects/Weapons/modules.rsi
|
||||||
- type: Tag
|
- type: Tag
|
||||||
tags:
|
tags:
|
||||||
- BaseModule
|
- BaseHandGuardModule
|
||||||
|
- type: Item
|
||||||
|
sprite: White/Objects/Weapons/modules.rsi
|
||||||
|
size: Small
|
||||||
|
shape:
|
||||||
|
- 0,0,0,0
|
||||||
|
- type: Appearance
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: BaseBarrelModule
|
||||||
|
parent: BaseItem
|
||||||
|
abstract: true
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: White/Objects/Weapons/modules.rsi
|
||||||
|
- type: Tag
|
||||||
|
tags:
|
||||||
|
- BaseBarrelModule
|
||||||
- type: Item
|
- type: Item
|
||||||
sprite: White/Objects/Weapons/modules.rsi
|
sprite: White/Objects/Weapons/modules.rsi
|
||||||
size: Small
|
size: Small
|
||||||
shape:
|
shape:
|
||||||
- 0,0,0,0
|
- 0,0,0,0
|
||||||
layers:
|
|
||||||
- state: base
|
|
||||||
map: ["enum.GunVisualLayers.Base"]
|
|
||||||
- state: mag-1
|
|
||||||
map: ["enum.GunVisualLayers.Mag"]
|
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
|
|
||||||
# modules
|
# modules
|
||||||
@@ -25,10 +37,11 @@
|
|||||||
id: LightModule
|
id: LightModule
|
||||||
description: Light module for rifles (lecter, CV, drozd, WT).
|
description: Light module for rifles (lecter, CV, drozd, WT).
|
||||||
name: "light module"
|
name: "light module"
|
||||||
parent: BaseModule
|
parent: BaseHandGuardModule
|
||||||
components:
|
components:
|
||||||
- type: LightModule
|
- type: LightModule
|
||||||
value: "light"
|
value: "light"
|
||||||
|
module_type: "handguard_module"
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: light
|
state: light
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
@@ -37,10 +50,11 @@
|
|||||||
id: LaserModule
|
id: LaserModule
|
||||||
description: Laser module for rifles (lecter, CV, drozd, WT).
|
description: Laser module for rifles (lecter, CV, drozd, WT).
|
||||||
name: "laser module"
|
name: "laser module"
|
||||||
parent: BaseModule
|
parent: BaseHandGuardModule
|
||||||
components:
|
components:
|
||||||
- type: LaserModule
|
- type: LaserModule
|
||||||
value: "laser"
|
value: "laser"
|
||||||
|
module_type: "handguard_module"
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: laser
|
state: laser
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
@@ -49,10 +63,11 @@
|
|||||||
id: FlameHiderModule
|
id: FlameHiderModule
|
||||||
description: Flame Hider module for rifles (lecter, CV, drozd, WT).
|
description: Flame Hider module for rifles (lecter, CV, drozd, WT).
|
||||||
name: "flamehider module"
|
name: "flamehider module"
|
||||||
parent: BaseModule
|
parent: BaseBarrelModule
|
||||||
components:
|
components:
|
||||||
- type: FlameHiderModule
|
- type: FlameHiderModule
|
||||||
value: "flamehider"
|
value: "flamehider"
|
||||||
|
module_type: "barrel_module"
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: flamehider
|
state: flamehider
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
@@ -61,10 +76,11 @@
|
|||||||
id: SilencerModule
|
id: SilencerModule
|
||||||
description: Silencer module for rifles (lecter, CV, drozd, WT).
|
description: Silencer module for rifles (lecter, CV, drozd, WT).
|
||||||
name: "silencer module"
|
name: "silencer module"
|
||||||
parent: BaseModule
|
parent: BaseBarrelModule
|
||||||
components:
|
components:
|
||||||
- type: SilencerModule
|
- type: SilencerModule
|
||||||
value: "silencer"
|
value: "silencer"
|
||||||
|
module_type: "barrel_module"
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: silencer
|
state: silencer
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
@@ -73,10 +89,11 @@
|
|||||||
id: AcceleratorModule
|
id: AcceleratorModule
|
||||||
description: Accelerator module for rifles (lecter, CV, drozd, WT).
|
description: Accelerator module for rifles (lecter, CV, drozd, WT).
|
||||||
name: "accelerator module"
|
name: "accelerator module"
|
||||||
parent: BaseModule
|
parent: BaseHandGuardModule
|
||||||
components:
|
components:
|
||||||
- type: AcceleratorModule
|
- type: AcceleratorModule
|
||||||
value: "accelerator"
|
value: "accelerator"
|
||||||
|
module_type: "handguard_module"
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: accelerator
|
state: accelerator
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
|
|||||||
@@ -65,4 +65,10 @@
|
|||||||
id: InteractivePen
|
id: InteractivePen
|
||||||
|
|
||||||
- type: Tag
|
- type: Tag
|
||||||
id: InteractiveBoard
|
id: InteractiveBoard
|
||||||
|
|
||||||
|
- type: Tag
|
||||||
|
id: BaseBarrelModule
|
||||||
|
|
||||||
|
- type: Tag
|
||||||
|
id: BaseHandGuardModule
|
||||||
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
@@ -21,6 +21,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "accelerator"
|
"name": "accelerator"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "barrel_module"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "handguard_module"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
|
After Width: | Height: | Size: 178 B |
|
After Width: | Height: | Size: 152 B |
|
After Width: | Height: | Size: 151 B |
|
After Width: | Height: | Size: 152 B |
|
After Width: | Height: | Size: 152 B |
|
After Width: | Height: | Size: 154 B |
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "made by CaypenNow",
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "flamehider"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "silencer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "light"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "laser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "accelerator"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "handguard_module"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "barrel_module"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 145 B |
|
After Width: | Height: | Size: 152 B |
|
After Width: | Height: | Size: 152 B |
@@ -21,6 +21,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "accelerator"
|
"name": "accelerator"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "handguard_module"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "barrel_module"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||