diff --git a/Content.Shared/Contraband/ContrabandComponent.cs b/Content.Shared/Contraband/ContrabandComponent.cs index 883f503ba6..a4ce652f2f 100644 --- a/Content.Shared/Contraband/ContrabandComponent.cs +++ b/Content.Shared/Contraband/ContrabandComponent.cs @@ -7,13 +7,14 @@ namespace Content.Shared.Contraband; /// /// This is used for marking entities that are considered 'contraband' IC and showing it clearly in examine. /// -[RegisterComponent, NetworkedComponent, Access(typeof(ContrabandSystem))] +[RegisterComponent, NetworkedComponent, Access(typeof(ContrabandSystem)), AutoGenerateComponentState] public sealed partial class ContrabandComponent : Component { /// /// The degree of contraband severity this item is considered to have. /// [DataField] + [AutoNetworkedField] public ProtoId Severity = "Restricted"; /// @@ -22,5 +23,6 @@ public sealed partial class ContrabandComponent : Component /// If null, no departments are allowed to use this. /// [DataField] + [AutoNetworkedField] public HashSet>? AllowedDepartments = ["Security"]; } diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml index 5520b6751a..44df034ee9 100644 --- a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml +++ b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml @@ -234,7 +234,7 @@ coverage: EYES - type: entity - parent: ClothingEyesBase + parent: [ClothingEyesBase, BaseMajorContraband] id: ClothingEyesVisorNinja name: ninja visor description: An advanced visor protecting a ninja's eyes from flashing lights. diff --git a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml index 684ef791ec..d5d3b64e0f 100644 --- a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml +++ b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml @@ -202,7 +202,7 @@ - type: FingerprintMask - type: entity - parent: [ClothingHandsBase, BaseToggleClothing] + parent: [ClothingHandsBase, BaseToggleClothing, BaseMajorContraband] id: ClothingHandsGlovesSpaceNinja name: space ninja gloves description: These black nano-enhanced gloves insulate from electricity and provide fire resistance. @@ -255,7 +255,7 @@ - type: CriminalRecordsHacker - type: entity - parent: [ClothingHandsGlovesColorBlack, BaseMinorContraband] + parent: [ClothingHandsGlovesColorBlack, BaseSecurityEngineeringContraband] id: ClothingHandsGlovesCombat name: combat gloves description: These tactical gloves are fireproof and shock resistant. diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml index 1d5fbb0119..a04bdde31f 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml @@ -127,7 +127,7 @@ slots: WITHOUT_POCKET - type: entity - parent: [ClothingOuterBaseLarge, AllowSuitStorageClothing, BaseToggleClothing] + parent: [ClothingOuterBaseLarge, AllowSuitStorageClothing, BaseToggleClothing, BaseMajorContraband] id: ClothingOuterSuitSpaceNinja name: space ninja suit description: This black technologically advanced, cybernetically-enhanced suit provides many abilities like invisibility or teleportation. diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml b/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml index 80d5eab249..c8a3e615f3 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml @@ -111,7 +111,7 @@ - type: NoSlip - type: entity - parent: ClothingShoesBaseButcherable + parent: [ClothingShoesBaseButcherable, BaseMajorContraband] id: ClothingShoesSpaceNinja name: space ninja shoes description: A pair of nano-enhanced boots with built-in magnetic suction cups. diff --git a/Resources/Prototypes/Entities/Objects/Misc/handy_flags.yml b/Resources/Prototypes/Entities/Objects/Misc/handy_flags.yml index 61162edf2c..6df1a39dc8 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/handy_flags.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/handy_flags.yml @@ -23,7 +23,7 @@ sprite: Objects/Misc/Handy_Flags/NT_handy_flag.rsi - type: entity - parent: BaseItem + parent: [BaseItem, BaseSyndicateContraband] id: SyndieHandyFlag name: syndicate handheld flag description: "For truly rebellious patriots. Death to NT!" diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index 478521bcfd..7d392e016d 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -566,7 +566,7 @@ stealGroup: BoxFolderQmClipboard - type: entity - parent: Paper + parent: [Paper, BaseSyndicateContraband] # eat or burn your damn piece of paper damn thieves id: TraitorCodePaper name: syndicate codeword description: A leaked codeword to possibly get in touch with the Syndicate. @@ -575,7 +575,7 @@ - type: TraitorCodePaper - type: entity - parent: Paper + parent: [Paper, BaseSyndicateContraband] id: AllTraitorCodesPaper name: syndicate codewords registry description: A registry of all active Syndicate codewords. diff --git a/Resources/Prototypes/Entities/Objects/Misc/pen.yml b/Resources/Prototypes/Entities/Objects/Misc/pen.yml index 2ff0a2258b..e5a96f26e3 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/pen.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/pen.yml @@ -57,10 +57,8 @@ heldPrefix: luxury_pen - type: entity - name: Cybersun pen - parent: [PenEmbeddable, BaseSyndicateContraband] - id: CyberPen - description: A high-tech pen straight from Cybersun's legal department, capable of refracting hard-light at impossible angles through its diamond tip in order to write. So powerful, it's even able to rewrite officially stamped documents should the need arise. + id: BaseAdvancedPen + parent: PenEmbeddable components: - type: Tag tags: @@ -68,10 +66,6 @@ - WriteIgnoreStamps - Pickaxe - Pen - - type: Sprite - state: overpriced_pen - - type: Item - heldPrefix: overpriced_pen - type: MeleeWeapon wideAnimationRotation: -45 damage: @@ -81,10 +75,32 @@ path: /Audio/Weapons/bladeslice.ogg - type: Tool qualities: - - Screwing + - Screwing useSound: collection: Screwdriver +- type: entity + name: Cybersun pen + parent: [BaseAdvancedPen, BaseSyndicateContraband] + id: CyberPen + description: A high-tech pen straight from Cybersun's legal department, capable of refracting hard-light at impossible angles through its diamond tip in order to write. So powerful, it's even able to rewrite officially stamped documents should the need arise. + components: + - type: Sprite + state: overpriced_pen + - type: Item + heldPrefix: overpriced_pen + +- type: entity + name: CentComm pen + parent: [BaseAdvancedPen, BaseCommandContraband] + id: PenCentcom + description: In an attempt to keep up with the "power" of the cybersun bureaucracy, NT made a replica of cyber pen, in their corporate style. + components: + - type: Sprite + state: pen_centcom + - type: Item + heldPrefix: pen_centcom + - type: entity name: captain's fountain pen parent: PenEmbeddable @@ -94,17 +110,6 @@ - type: Sprite state: pen_cap -- type: entity - name: CentComm pen - parent: CyberPen - id: PenCentcom - description: In an attempt to keep up with the "power" of the cybersun bureaucracy, NT made a replica of cyber pen, in their corporate style. - components: - - type: Sprite - state: pen_centcom - - type: Item - heldPrefix: pen_centcom - - type: entity name: hop's fountain pen parent: PenEmbeddable diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index e60c955f4e..4aa7ae7ba1 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -199,10 +199,10 @@ - type: Appearance - type: entity - name: laser rifle - parent: [BaseWeaponBattery, BaseGunWieldable, BaseRestrictedContraband] - id: WeaponLaserCarbine - description: Favoured by Nanotrasen Security for being cheap and easy to use. + name: practice laser rifle + parent: [BaseWeaponBattery, BaseGunWieldable] + id: WeaponLaserCarbinePractice + description: This modified laser rifle fires nearly harmless beams in the 40-watt range, for target practice. components: - type: Sprite sprite: Objects/Weapons/Guns/Battery/laser_gun.rsi @@ -214,28 +214,28 @@ shader: unshaded - type: Clothing sprite: Objects/Weapons/Guns/Battery/laser_gun.rsi - - type: StaticPrice - price: 420 - type: Gun selectedMode: SemiAuto availableModes: - SemiAuto - - type: HitscanBatteryAmmoProvider - proto: RedLaser - fireCost: 62.5 - -- type: entity - name: practice laser rifle - parent: WeaponLaserCarbine - id: WeaponLaserCarbinePractice - description: This modified laser rifle fires nearly harmless beams in the 40-watt range, for target practice. - components: - type: HitscanBatteryAmmoProvider proto: RedLaserPractice fireCost: 62.5 - type: StaticPrice price: 300 +- type: entity + name: laser rifle + parent: [WeaponLaserCarbinePractice, BaseGunWieldable, BaseRestrictedContraband] + id: WeaponLaserCarbine + description: Favoured by Nanotrasen Security for being cheap and easy to use. + components: + - type: StaticPrice + price: 420 + - type: HitscanBatteryAmmoProvider + proto: RedLaser + fireCost: 62.5 + - type: entity name: pulse pistol parent: BaseWeaponBatterySmall @@ -406,46 +406,71 @@ zeroVisible: true - type: Appearance +- type: entity + name: practice disabler + parent: BaseWeaponBatterySmall + 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: + - type: Sprite + sprite: Objects/Weapons/Guns/Battery/practice_disabler.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-unshaded-0 + map: ["enum.GunVisualLayers.MagUnshaded"] + shader: unshaded + - type: Clothing + sprite: Objects/Weapons/Guns/Battery/practice_disabler.rsi + quickEquip: false + slots: + - Belt + - type: Appearance + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: true + - type: StaticPrice + price: 100 + - type: Gun + fireRate: 2 + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/taser2.ogg + - type: ProjectileBatteryAmmoProvider + proto: BulletDisablerPractice + fireCost: 100 + - type: Tag + tags: + - Taser + - Sidearm + - type: entity name: disabler - parent: [ BaseWeaponBatterySmall, BaseSecurityCommandContraband ] + parent: [ WeaponDisablerPractice, BaseSecurityCommandContraband ] id: WeaponDisabler description: A self-defense weapon that exhausts organic targets, weakening them until they collapse. components: - - type: Tag - tags: - - Taser - - Sidearm - - type: Sprite - sprite: Objects/Weapons/Guns/Battery/disabler.rsi - layers: - - state: base - map: ["enum.GunVisualLayers.Base"] - - state: mag-unshaded-0 - map: ["enum.GunVisualLayers.MagUnshaded"] - shader: unshaded - - 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: ProjectileBatteryAmmoProvider - proto: BulletDisabler - fireCost: 100 - - type: MagazineVisuals - magState: mag - steps: 5 - zeroVisible: true - - type: Appearance - - type: GuideHelp - guides: - - Security - - Antagonists + - type: Sprite + sprite: Objects/Weapons/Guns/Battery/disabler.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-unshaded-0 + map: ["enum.GunVisualLayers.MagUnshaded"] + shader: unshaded + - type: Clothing + sprite: Objects/Weapons/Guns/Battery/disabler.rsi + quickEquip: false + slots: + - suitStorage + - Belt + - type: ProjectileBatteryAmmoProvider + proto: BulletDisabler + fireCost: 100 + - type: GuideHelp + guides: + - Security + - Antagonists - type: entity name: disabler SMG @@ -485,31 +510,6 @@ - type: StaticPrice price: 260 -- type: entity - name: practice disabler - parent: WeaponDisabler - 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: - - type: Sprite - sprite: Objects/Weapons/Guns/Battery/practice_disabler.rsi - layers: - - state: base - map: ["enum.GunVisualLayers.Base"] - - state: mag-unshaded-0 - map: ["enum.GunVisualLayers.MagUnshaded"] - shader: unshaded - - type: Clothing - sprite: Objects/Weapons/Guns/Battery/practice_disabler.rsi - quickEquip: false - slots: - - Belt - - type: StaticPrice - price: 100 - - type: ProjectileBatteryAmmoProvider - proto: BulletDisablerPractice - fireCost: 100 - - type: entity name: taser parent: [ BaseWeaponBatterySmall, BaseRestrictedContraband ] diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml index d16afb5478..64280542db 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml @@ -53,7 +53,7 @@ - type: entity name: AKMS - parent: [BaseWeaponRifle, BaseMinorContraband] + parent: [BaseWeaponRifle, BaseMajorContraband] id: WeaponRifleAk description: An iconic weapon of war. Uses .30 rifle ammo. components: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml index 53ddd96178..e364809b50 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml @@ -1,8 +1,7 @@ - type: entity - name: energy sword - parent: [BaseItem, BaseSyndicateContraband] - id: EnergySword - description: A very loud & dangerous sword with a beam made of pure, concentrated plasma. Cuts through unarmored targets like butter. + id: BaseMeleeWeaponEnergy # more generic naming in case someone makes like, idk, an energy axe + parent: BaseItem + abstract: true components: - type: EnergySword - type: ItemToggle @@ -38,19 +37,10 @@ params: variation: 0.125 activatedDamage: - types: - Slash: 15 - Heat: 15 - Structural: 20 - - type: Sprite - sprite: Objects/Weapons/Melee/e_sword.rsi - layers: - - state: e_sword - - state: e_sword_blade - color: "#FFFFFF" - visible: false - shader: unshaded - map: [ "blade" ] + types: + Slash: 15 + Heat: 15 + Structural: 20 - type: MeleeWeapon wideAnimationRotation: -135 attackRate: 1 @@ -59,7 +49,6 @@ Blunt: 4.5 - type: Item size: Small - sprite: Objects/Weapons/Melee/e_sword-inhands.rsi - type: UseDelay delay: 1.0 - type: PointLight @@ -82,9 +71,27 @@ - type: IgnitionSource temperature: 700 +- type: entity + name: energy sword + parent: [BaseMeleeWeaponEnergy, BaseSyndicateContraband] + id: EnergySword + description: A very loud & dangerous sword with a beam made of pure, concentrated plasma. Cuts through unarmored targets like butter. + components: + - type: Sprite + sprite: Objects/Weapons/Melee/e_sword.rsi + layers: + - state: e_sword + - state: e_sword_blade + color: "#FFFFFF" + visible: false + shader: unshaded + map: [ "blade" ] + - type: Item + sprite: Objects/Weapons/Melee/e_sword-inhands.rsi + - type: entity name: energy dagger - parent: EnergySword + parent: [BaseMeleeWeaponEnergy, BaseSyndicateContraband] id: EnergyDaggerLoud description: A not as loud and dangerous dagger with a beam made of pure, concentrated plasma. This one is completely undisguised. components: @@ -139,30 +146,16 @@ - type: Item size: Tiny sprite: Objects/Weapons/Melee/e_dagger_loud.rsi - - type: UseDelay - delay: 1.0 - type: PointLight enabled: false radius: 1.5 energy: 1.5 color: white netsync: false - - type: Appearance - - type: ToggleableLightVisuals - spriteLayer: blade - inhandVisuals: - left: - - state: inhand-left-blade - shader: unshaded - right: - - state: inhand-right-blade - shader: unshaded - - type: DisarmMalus - malus: 0 - type: entity name: pen - parent: EnergyDaggerLoud + parent: BaseMeleeWeaponEnergy id: EnergyDagger suffix: E-Dagger description: 'A dark ink pen.' @@ -181,6 +174,26 @@ path: /Audio/Weapons/ebladehum.ogg params: volume: -6 + - type: ItemToggleMeleeWeapon + activatedSoundOnSwing: + path: /Audio/Weapons/eblademiss.ogg + params: + volume: -3 + variation: 0.250 + activatedDamage: + types: + Slash: 10 + Heat: 10 + - type: ComponentToggler + components: + - type: Sharp + - type: DisarmMalus + malus: 0.4 + - type: Execution + doAfterDuration: 4.0 + - type: Contraband + severity: Syndicate + allowedDepartments: null - type: Sprite sprite: Objects/Weapons/Melee/e_dagger.rsi layers: @@ -193,6 +206,19 @@ - type: Item size: Tiny sprite: Objects/Weapons/Melee/e_dagger.rsi + - type: PointLight + enabled: false + radius: 1.5 + energy: 1.5 + color: white + netsync: false + - type: MeleeWeapon + wideAnimationRotation: 145 + attackRate: 1 + hidden: true + damage: + types: + Blunt: 1 - type: Tag tags: - Write @@ -217,7 +243,7 @@ - type: entity name: energy cutlass - parent: EnergySword + parent: [BaseMeleeWeaponEnergy, BaseMajorContraband] id: EnergyCutlass description: An exotic energy weapon. components: @@ -237,21 +263,11 @@ shader: unshaded map: [ "blade" ] - type: Item - size: Small sprite: Objects/Weapons/Melee/e_cutlass.rsi - - type: ToggleableLightVisuals - spriteLayer: blade - inhandVisuals: - left: - - state: inhand-left-blade - shader: unshaded - right: - - state: inhand-right-blade - shader: unshaded - type: entity name: double-bladed energy sword - parent: EnergySword + parent: [BaseMeleeWeaponEnergy, BaseSyndicateContraband] id: EnergySwordDouble description: Syndicate Command Interns thought that having one blade on the energy sword was not enough. This can be stored in pockets. components: @@ -312,17 +328,6 @@ - type: Reflect reflectProb: .75 spread: 75 - - type: UseDelay - delay: 1 - - type: ToggleableLightVisuals - spriteLayer: blade - inhandVisuals: - left: - - state: inhand-left-blade - shader: unshaded - right: - - state: inhand-right-blade - shader: unshaded - type: entity suffix: One-Handed, For Borgs diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml index dd00c2054a..586247bb3a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml @@ -43,7 +43,7 @@ - type: entity name: katana - parent: [ BaseSword, BaseMinorContraband ] + parent: [ BaseSword, BaseMajorContraband ] id: Katana description: Ancient craftwork made with not so ancient plasteel. components: @@ -93,7 +93,7 @@ - type: entity name: machete - parent: [ BaseSword, BaseMinorContraband ] + parent: [ BaseSword, BaseMajorContraband ] id: Machete description: A large, vicious looking blade. components: @@ -114,7 +114,7 @@ - type: entity name: claymore - parent: [ BaseSword, BaseMinorContraband ] + parent: [ BaseSword, BaseMajorContraband ] id: Claymore description: An ancient war blade. components: @@ -136,7 +136,7 @@ - type: entity name: cutlass - parent: [ BaseSword, BaseMinorContraband ] + parent: [ BaseSword, BaseMajorContraband ] id: Cutlass description: A wickedly curved blade, often seen in the hands of space pirates. components: @@ -157,7 +157,7 @@ - type: entity name: Throngler - parent: [ BaseSword, BaseMinorContraband ] + parent: [ BaseSword, BaseMajorContraband ] id: Throngler description: Why would you make this? components: diff --git a/Resources/Prototypes/Entities/Objects/base_contraband.yml b/Resources/Prototypes/Entities/Objects/base_contraband.yml index 84783ccf7d..fffa4b506c 100644 --- a/Resources/Prototypes/Entities/Objects/base_contraband.yml +++ b/Resources/Prototypes/Entities/Objects/base_contraband.yml @@ -60,6 +60,14 @@ - type: Contraband allowedDepartments: [ Security, Science, Command ] +- type: entity + id: BaseSecurityEngineeringContraband + parent: BaseRestrictedContraband + abstract: true + components: + - type: Contraband + allowedDepartments: [ Security, Engineering ] + - type: entity id: BaseEngineeringContraband parent: BaseRestrictedContraband