From 1a27c7a647b8ecc120507e1d78fd3f57961ef8b9 Mon Sep 17 00:00:00 2001 From: AndresE55 <80334192+Leander-0@users.noreply.github.com> Date: Thu, 13 Jun 2024 18:56:14 -0400 Subject: [PATCH 01/16] Uplink bundles and tracking dart (#1429) Co-authored-by: Dvir <39403717+dvir001@users.noreply.github.com> --- .../Locale/en-US/_NF/store/uplink-catalog.ftl | 12 ++- .../_NF/Catalog/Fills/Backpacks/duffelbag.yml | 23 ++++ .../_NF/Catalog/security_uplink_catalog.yml | 100 ++++++++++++++---- .../Entities/Objects/Misc/traking_dart.yml | 69 ++++++++++++ .../Objects/Weapons/Ammunition/Boxes/nfsd.yml | 21 ++++ .../Weapons/Guns/Launchers/launchers.yml | 28 +++++ Resources/Prototypes/_NF/Store/categories.yml | 4 +- Resources/Prototypes/_NF/Store/presets.yml | 1 + Resources/Prototypes/_NF/tags.yml | 3 + .../Launchers/nfsd_lake.rsi/bolt-open.png | Bin 0 -> 3742 bytes .../nfsd_lake.rsi/equipped-BACKPACK.png | Bin 0 -> 3883 bytes .../nfsd_lake.rsi/equipped-SUITSTORAGE.png | Bin 0 -> 3883 bytes .../Guns/Launchers/nfsd_lake.rsi/icon.png | Bin 0 -> 3742 bytes .../Launchers/nfsd_lake.rsi/inhand-left.png | Bin 0 -> 3803 bytes .../Launchers/nfsd_lake.rsi/inhand-right.png | Bin 0 -> 3778 bytes .../Guns/Launchers/nfsd_lake.rsi/meta.json | 33 ++++++ .../Projectiles/tracking_dart.rsi/icon.png | Bin 0 -> 483 bytes .../tracking_dart.rsi/inhand-left.png | Bin 0 -> 260 bytes .../tracking_dart.rsi/inhand-right.png | Bin 0 -> 273 bytes .../Projectiles/tracking_dart.rsi/meta.json | 28 +++++ .../tracking_dart.rsi/unshaded.png | Bin 0 -> 515 bytes 21 files changed, 301 insertions(+), 21 deletions(-) create mode 100644 Resources/Prototypes/_NF/Entities/Objects/Misc/traking_dart.yml create mode 100644 Resources/Prototypes/_NF/Entities/Objects/Weapons/Ammunition/Boxes/nfsd.yml create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/bolt-open.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/equipped-BACKPACK.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/equipped-SUITSTORAGE.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/icon.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/inhand-left.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/inhand-right.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Projectiles/tracking_dart.rsi/icon.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Projectiles/tracking_dart.rsi/inhand-left.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Projectiles/tracking_dart.rsi/inhand-right.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Projectiles/tracking_dart.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Projectiles/tracking_dart.rsi/unshaded.png diff --git a/Resources/Locale/en-US/_NF/store/uplink-catalog.ftl b/Resources/Locale/en-US/_NF/store/uplink-catalog.ftl index 9ff0cb4f2cd..f097436a231 100644 --- a/Resources/Locale/en-US/_NF/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/_NF/store/uplink-catalog.ftl @@ -6,6 +6,7 @@ store-category-secweapons = Weapons store-category-secutility = Utility store-category-secammo = Ammunition store-category-secexplosives = Explosives +store-category-secbundles = Bundles uplink-security-hardsuit-name = Security HardSuit @@ -141,4 +142,13 @@ uplink-security-stingergrenade-box-desc = A box containing 4 stinger grenades. uplink-security-breachingcharge-box-name = Breaching Charge Box uplink-security-breachingcharge-box-desc = A box containing 4 breaching charges. uplink-security-hoverbike-name = NFSD Hoverbike Flatpack -uplink-security-hoverbike-desc = Flatpack containing NFSD issued turbine with bike handles. Keys already slotted in the ignition. Very safe. \ No newline at end of file +uplink-security-hoverbike-desc = Flatpack containing NFSD issued turbine with bike handles. Keys already slotted in the ignition. Very safe. +uplink-security-trackingdart-bundle-name = Tracking Darts Bundle +uplink-security-trackingdart-bundle-desc = A bundle containing a Lake type launcher 5 tracking darts and 5 pinpointers. +uplink-security-emp-bundle-name = EMP Bundle +uplink-security-emp-bundle-desc = A bundle containing a Lake type launcher and 12 EMP grenades. +uplink-security-emp-ammo-name = EMP Projectile Ammo +uplink-security-emp-ammo-desc = A a box containing 4 EMP projectile grenades. +uplink-security-trackingdart-ammo-name = Tracking Darts Ammo +uplink-security-trackingdart-ammo-desc = A a box containing 4 tracking darts. + diff --git a/Resources/Prototypes/_NF/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/_NF/Catalog/Fills/Backpacks/duffelbag.yml index 041642d541e..00edc7085fe 100644 --- a/Resources/Prototypes/_NF/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/_NF/Catalog/Fills/Backpacks/duffelbag.yml @@ -46,3 +46,26 @@ - id: Drill - id: Hemostat - id: Retractor + +- type: entity + parent: ClothingBackpackDuffelNfsdBrown + id: ClothingBackpackDuffelNfsdTrackingBundle + name: tracking bundle + description: "All the equipment needed to track almost anything, careful tracking people" + components: + - type: StorageFill + contents: + - id: WeaponLauncherNfsdLake + - id: BoxTrackingDarts + +- type: entity + parent: ClothingBackpackDuffelNfsdBrown + id: ClothingBackpackDuffelNfsdEmpBundle + name: NFSD Lake EMP bundle + description: "An old repainted China-Lake grenade launcher bundled with 10 rounds of EMP." + components: + - type: StorageFill + contents: + - id: WeaponLauncherNfsdLake + - id: GrenadeEmp + amount: 12 diff --git a/Resources/Prototypes/_NF/Catalog/security_uplink_catalog.yml b/Resources/Prototypes/_NF/Catalog/security_uplink_catalog.yml index 7604e146c11..5057a87f2fd 100644 --- a/Resources/Prototypes/_NF/Catalog/security_uplink_catalog.yml +++ b/Resources/Prototypes/_NF/Catalog/security_uplink_catalog.yml @@ -1,18 +1,18 @@ -- type: listing - id: UplinkReinforcementRadioSyndicateCyborgAssault1 - name: uplink-reinforcement-radio-cyborg-assault-name - description: uplink-reinforcement-radio-cyborg-assault-desc - productEntity: ReinforcementRadioSyndicateCyborgAssault - icon: { sprite: Mobs/Silicon/chassis.rsi, state: synd_sec } - cost: - FrontierUplinkCoin: 1 - categories: - - UplinkSecurityBundles - conditions: - - !type:StoreWhitelistCondition - whitelist: - tags: - - SecurityUplink +#- type: listing -->[TODO NFSD BORG] + # id: UplinkReinforcementRadioSyndicateCyborgAssault1 + # name: uplink-reinforcement-radio-cyborg-assault-name + # description: uplink-reinforcement-radio-cyborg-assault-desc + # productEntity: ReinforcementRadioSyndicateCyborgAssault + # icon: { sprite: Mobs/Silicon/chassis.rsi, state: synd_sec } + # cost: + # FrontierUplinkCoin: 1 + # categories: + # - UplinkSecurityBundles + # conditions: + # - !type:StoreWhitelistCondition + # whitelist: + # tags: + # - SecurityUplink - type: listing id: UplinkSecurityHardsuit @@ -552,7 +552,7 @@ cost: FrontierUplinkCoin: 4 categories: - - UplinkSecurityUtility + - UplinkSecurityBundles conditions: - !type:StoreWhitelistCondition whitelist: @@ -1195,7 +1195,7 @@ cost: FrontierUplinkCoin: 15 categories: - - UplinkSecurityUtility + - UplinkSecurityBundles conditions: - !type:StoreWhitelistCondition whitelist: @@ -1207,6 +1207,38 @@ - SeniorOfficer - Sheriff +- type: listing + id: UplinkSecurityTrackingBundle + name: uplink-security-trackingdart-bundle-name + description: uplink-security-trackingdart-bundle-desc + productEntity: ClothingBackpackDuffelNfsdTrackingBundle + icon: { sprite: _NF/Clothing/Back/Duffels/nfsd_brown.rsi, state: icon } + cost: + FrontierUplinkCoin: 4 + categories: + - UplinkSecurityBundles + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - SecurityUplink + +- type: listing + id: UplinkSecurityEmpBundle + name: uplink-security-emp-bundle-name + description: uplink-security-emp-bundle-desc + productEntity: ClothingBackpackDuffelNfsdEmpBundle + icon: { sprite: _NF/Clothing/Back/Duffels/nfsd_brown.rsi, state: icon } + cost: + FrontierUplinkCoin: 4 + categories: + - UplinkSecurityBundles + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - SecurityUplink + # - type: listing # id: UplinkSecurityNonLethalArmory # name: uplink-security-nonlethalarmory-name @@ -1226,4 +1258,36 @@ # whitelist: # - Bailiff # - SeniorOfficer - # - Sheriff \ No newline at end of file + # - Sheriff + +- type: listing + id: UplinkSecurityEmpGrenadeAmmo + name: uplink-security-emp-ammo-name + description: uplink-security-emp-ammo-desc + productEntity: BoxEmpGrenadesAmmo + icon: { sprite: Objects/Storage/boxes.rsi, state: box } + cost: + FrontierUplinkCoin: 1 + categories: + - UplinkSecurityAmmo + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - SecurityUplink + +- type: listing + id: UplinkSecurityTrackingDartsAmmo + name: uplink-security-trackingdart-ammo-name + description: uplink-security-trackingdart-ammo-desc + productEntity: BoxTrackingDartsAmmo + icon: { sprite: Objects/Storage/boxes.rsi, state: box } + cost: + FrontierUplinkCoin: 1 + categories: + - UplinkSecurityAmmo + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - SecurityUplink diff --git a/Resources/Prototypes/_NF/Entities/Objects/Misc/traking_dart.yml b/Resources/Prototypes/_NF/Entities/Objects/Misc/traking_dart.yml new file mode 100644 index 00000000000..f2de19d67d0 --- /dev/null +++ b/Resources/Prototypes/_NF/Entities/Objects/Misc/traking_dart.yml @@ -0,0 +1,69 @@ +- type: entity + name: tracking dart + id: TrackingDart + parent: BaseItem + components: + - type: ThrowingAngle + angle: 315 + - type: EmbeddableProjectile + embedOnThrow: false + sound: /Audio/Weapons/star_hit.ogg + removalTime: 3 + - type: Projectile + deleteOnCollide: false + onlyCollideWhenShot: true + damage: + types: + Piercing: 20 + - type: Tag + tags: + - TrackingDart + - Trash + - type: Ammo + muzzleFlash: null + - type: Sprite + sprite: _NF/Objects/Weapons/Guns/Projectiles/tracking_dart.rsi + layers: + - state: icon + map: [ base ] + - state: unshaded + shader: unshaded + - type: Fixtures + fixtures: + fix1: + shape: !type:PhysShapeCircle + radius: 0.2 + density: 5 + mask: + - ItemMask + restitution: 0.3 + friction: 0.2 + projectile: + shape: + !type:PhysShapeAabb + bounds: "-0.1,-0.1,0.1,0.1" + hard: false + mask: + - Impassable + - BulletImpassable + - type: Appearance + - type: Dumpable + +- type: entity + name: tracking kit box + parent: BoxCardboard + id: BoxTrackingDarts + description: A box of tracking darts and pinpointers. + components: + - type: Storage + grid: + - 0,0,4,3 + - type: StorageFill + contents: + - id: TrackingDart + amount: 5 + - id: PinpointerUniversal + amount: 5 + - type: Sprite + layers: + - state: box diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Ammunition/Boxes/nfsd.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Ammunition/Boxes/nfsd.yml new file mode 100644 index 00000000000..c56109ae747 --- /dev/null +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Ammunition/Boxes/nfsd.yml @@ -0,0 +1,21 @@ +- type: entity + name: emp projectiles box + parent: BoxMagazine + id: BoxEmpGrenadesAmmo + description: A box of EMP projectile grenades. + components: + - type: StorageFill + contents: + - id: GrenadeEmp + amount: 4 + +- type: entity + name: tracking darts box + parent: BoxMagazine + id: BoxTrackingDartsAmmo + description: A box of tracking darts. + components: + - type: StorageFill + contents: + - id: TrackingDart + amount: 4 diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Launchers/launchers.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Launchers/launchers.yml index 2850feca162..31bdb1848ee 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Launchers/launchers.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Launchers/launchers.yml @@ -89,3 +89,31 @@ capacity: 4 - type: StaticPrice price: 50 + +- type: entity + name: nfsd grenade launcher + parent: WeaponLauncherChinaLake + id: WeaponLauncherNfsdLake + description: nfsd rapid grenade delivery system + components: + - type: Sprite + sprite: _NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi + layers: + - state: icon + map: ["enum.GunVisualLayers.Base"] + - type: Clothing + sprite: _NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi + quickEquip: false + slots: + - Back + - Belt + - suitStorage + - type: BallisticAmmoProvider + proto: null + whitelist: + tags: + - TrackingDart + - Grenade + capacity: 4 + - type: StaticPrice + price: 50 diff --git a/Resources/Prototypes/_NF/Store/categories.yml b/Resources/Prototypes/_NF/Store/categories.yml index 4ed53144bec..45e2c8ac983 100644 --- a/Resources/Prototypes/_NF/Store/categories.yml +++ b/Resources/Prototypes/_NF/Store/categories.yml @@ -1,7 +1,7 @@ #security - type: storeCategory id: UplinkSecurityBundles - name: store-category-bundles + name: store-category-secbundles - type: storeCategory id: UplinkSecurityHardsuits @@ -21,5 +21,5 @@ - type: storeCategory id: UplinkSecurityExplosives - name: store-category-explosives + name: store-category-secexplosives diff --git a/Resources/Prototypes/_NF/Store/presets.yml b/Resources/Prototypes/_NF/Store/presets.yml index 7f43f074571..a432360dfed 100644 --- a/Resources/Prototypes/_NF/Store/presets.yml +++ b/Resources/Prototypes/_NF/Store/presets.yml @@ -25,5 +25,6 @@ - UplinkSecurityAmmo - UplinkSecurityUtility - UplinkSecurityExplosives + - UplinkSecurityBundles currencyWhitelist: - FrontierUplinkCoin diff --git a/Resources/Prototypes/_NF/tags.yml b/Resources/Prototypes/_NF/tags.yml index b23491c0e51..45b82f32cfd 100644 --- a/Resources/Prototypes/_NF/tags.yml +++ b/Resources/Prototypes/_NF/tags.yml @@ -76,5 +76,8 @@ - type: Tag id: HoverbikeKeys +- type: Tag + id: TrackingDart + - type: Tag id: SpeedLoaderRifleHeavy diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/bolt-open.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/bolt-open.png new file mode 100644 index 0000000000000000000000000000000000000000..df3b329ff6fee1537587afcbb6fbba82a32cc58a GIT binary patch literal 3742 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 IM6N<$f+!;i`v3p{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/equipped-BACKPACK.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000000000000000000000000000000000..6ec82c7abda0b3ae7b3339215adbafe6931423a0 GIT binary patch literal 3883 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 0000000000000000000000000000000000000000..6ec82c7abda0b3ae7b3339215adbafe6931423a0 GIT binary patch literal 3883 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/icon.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6db0bb26203f13d50c53f2012542b9cc45eb72c9 GIT binary patch literal 3742 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 IM6N<$f_$I{LjV8( literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/inhand-left.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Launchers/nfsd_lake.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf47240586f362cdf90cda0b17a877ea5d9e4b2 GIT binary patch literal 3803 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 Z;3t*to1KtWpzQzv002ovPDHLkV1jvr+d}{V literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Projectiles/tracking_dart.rsi/inhand-left.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Projectiles/tracking_dart.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..c640cdc4fdd5c54dc2802c28c2a0ed9ee34ddb97 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|mUy~2hE&XX zd+Q*VqoV}tgNME@lLE}b?%kR8=4s}S?x~aBy%lQSzc1hZ@=KH5mP>&;816)_NuM5{ zUUA&`=kM6|<*PkU3FYnF?UkYXV1wZ^tn83$AgZfXEK+*(o>9o`r!X<;iB?8Q_k}MwJ|U# zT>M!k^FQ)`ck8OcTHBtqkIp`&!SbRvS${luwm15AN$8S&xw}qPo6Fl&o9z9YI{jDH z?aOZeL@%v*JvAjF^nS?q8>ECdr$9TV{`-i$(r^=Q^ zqEqEhgt_E7wC({Zd$h0Qw^?84nctUy9KO^D&op0O1}z|)10)Lsmx3pQC{I^Emvv4F FO#sE6XygC@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Projectiles/tracking_dart.rsi/meta.json b/Resources/Textures/_NF/Objects/Weapons/Guns/Projectiles/tracking_dart.rsi/meta.json new file mode 100644 index 00000000000..bfc105ae601 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Weapons/Guns/Projectiles/tracking_dart.rsi/meta.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by @GentleButter on the frontier station discord", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "icon" + }, + { + "name": "unshaded", + "delays": [ + [ 0.5, 0.5, 0.5, 0.2 ] + ] + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Projectiles/tracking_dart.rsi/unshaded.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Projectiles/tracking_dart.rsi/unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..997bfd500b613259e9998f80557fafe25393420f GIT binary patch literal 515 zcmV+e0{s1nP)EX>4Tx04R}tkv&MmKpe$i(@I4v4ptC#$WWauh>AE$6^me@v=v%)FuC+YXws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;vxAeOi*kx9)Fhl#~v8_R9XN`^{2MI2F7jq-)8 z%L?Z$&T6^Jn)l={4CS@uG}mbkBaTHRkc0>sRcxRP3sG7%QcR?1Kjz^dbo@zj$>iDq zBgZ@{P$4;f@IUz7ty!3yaFaqYpyS21KSqGyF3_mi_V=-EH%pV2qvfWBLxYt`+oxsTHaAVXa(-2exN zz-W=O*F4_c+1}f~XPW)}07GtalnbDySpWb4IY~r8RCt{2+A$3PFbo4h^QTa-4uwpu zD%~OY!J`uZ004GQ)7K4Pi2wiq000000QY!m0002+mjMHh2h5!8?R5YE002ovPDHLk FV1n~==0pGh literal 0 HcmV?d00001 From 3aea3996b4b6e2c81ee96117964b38a5285ff177 Mon Sep 17 00:00:00 2001 From: FrontierATC Date: Thu, 13 Jun 2024 22:56:44 +0000 Subject: [PATCH 02/16] Automatic Changelog (#1429) --- Resources/Changelog/Changelog.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 22ecb8787cf..507716b412d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4987,3 +4987,17 @@ Entries: message: Fixed minor graphical error on long weapon case. id: 5030 time: '2024-06-12T22:22:04.0000000+00:00' +- author: Leander + changes: + - type: Add + message: >- + Nanotrasen has developed new tracking methods for the NFSD and packed it + all in a nice bundle. + - type: Add + message: >- + Nanotrasen has reverse engineered the china lake for the NFSD to deliver + high speed justice. + - type: Tweak + message: Organized the NFSD Uplink a little more into a bundles category. + id: 5031 + time: '2024-06-13T22:56:14.0000000+00:00' From bc562044624fb8edf7d0c16ad5847ab7dc29ad9c Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Thu, 13 Jun 2024 19:03:55 -0400 Subject: [PATCH 03/16] Revolvers can reload from boxes and magazines. (#1434) * RevolverAmmoProvider transfer, add TakeAmmo intent * SimulateInsertAmmo conditions, revolver cleanup * Speedloader fix * speedloader condition: add frontier comment * Remove unneeded changes, comment scope, container * Revolver fillDelay to 0.7s, use target delay --------- Co-authored-by: Dvir --- .../RevolverAmmoProviderComponent.cs | 14 + .../Weapons/Ranged/Events/TakeAmmoEvent.cs | 10 +- .../Systems/SharedGunSystem.Ballistic.cs | 76 ++++- .../Systems/SharedGunSystem.Revolver.cs | 284 ++++++++++++++---- .../Weapons/Ranged/Systems/SharedGunSystem.cs | 2 +- .../Weapons/Guns/Revolvers/revolvers.yml | 1 + 6 files changed, 316 insertions(+), 71 deletions(-) diff --git a/Content.Shared/Weapons/Ranged/Components/RevolverAmmoProviderComponent.cs b/Content.Shared/Weapons/Ranged/Components/RevolverAmmoProviderComponent.cs index d982dfcb104..4dc8447d4ef 100644 --- a/Content.Shared/Weapons/Ranged/Components/RevolverAmmoProviderComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/RevolverAmmoProviderComponent.cs @@ -48,4 +48,18 @@ public sealed partial class RevolverAmmoProviderComponent : AmmoProviderComponen [DataField("soundSpin")] public SoundSpecifier? SoundSpin = new SoundPathSpecifier("/Audio/Weapons/Guns/Misc/revolver_spin.ogg"); + + // Frontier: better revolver reloading + /// + /// Is it okay for this entity to directly transfer its valid ammunition into another provider? + /// + [ViewVariables(VVAccess.ReadWrite), DataField("mayTransfer")] + public bool MayTransfer; + + /// + /// DoAfter delay for filling a bullet into another ballistic ammo provider. + /// + [DataField("fillDelay")] + public TimeSpan FillDelay = TimeSpan.FromSeconds(0.7); // Assume revolvers are harder to reload, and so should take more time. + // End Frontier } diff --git a/Content.Shared/Weapons/Ranged/Events/TakeAmmoEvent.cs b/Content.Shared/Weapons/Ranged/Events/TakeAmmoEvent.cs index 50cd7871d62..27b1083cf36 100644 --- a/Content.Shared/Weapons/Ranged/Events/TakeAmmoEvent.cs +++ b/Content.Shared/Weapons/Ranged/Events/TakeAmmoEvent.cs @@ -21,11 +21,19 @@ public sealed class TakeAmmoEvent : EntityEventArgs /// public EntityCoordinates Coordinates; - public TakeAmmoEvent(int shots, List<(EntityUid? Entity, IShootable Shootable)> ammo, EntityCoordinates coordinates, EntityUid? user) + // Frontier: better revolver reloading + /// + /// Does this event represent an intent to fire, or to safely remove ammo from an entity? + /// + public bool WillBeFired; + // End Frontier + + public TakeAmmoEvent(int shots, List<(EntityUid? Entity, IShootable Shootable)> ammo, EntityCoordinates coordinates, EntityUid? user, bool willBeFired = false) // Frontier: add willBeFired { Shots = shots; Ammo = ammo; Coordinates = coordinates; User = user; + WillBeFired = willBeFired; // Frontier } } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs index 11cfc88470a..065ff53c893 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs @@ -5,6 +5,7 @@ using Content.Shared.Verbs; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; +using Content.Shared.Whitelist; using Robust.Shared.Containers; using Robust.Shared.Map; using Robust.Shared.Serialization; @@ -63,31 +64,62 @@ private void OnBallisticAfterInteract(EntityUid uid, BallisticAmmoProviderCompon !Timing.IsFirstTimePredicted || args.Target == null || args.Used == args.Target || - Deleted(args.Target) || - !TryComp(args.Target, out var targetComponent) || - targetComponent.Whitelist == null) + Deleted(args.Target)) { return; } - args.Handled = true; + // Frontier: better revolver reloading + // Ensure the target of interaction has a valid component. + var validComponent = false; + TimeSpan fillDelay = component.FillDelay; // Default value should not be used. + if (TryComp(args.Target, out var ballisticComponent) && ballisticComponent.Whitelist is not null) + { + validComponent = true; + fillDelay = ballisticComponent.FillDelay; + } + else if (TryComp(args.Target, out var revolverComponent) && revolverComponent.Whitelist is not null) + { + validComponent = true; + fillDelay = revolverComponent.FillDelay; + } - _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.FillDelay, new AmmoFillDoAfterEvent(), used: uid, target: args.Target, eventTarget: uid) + if (validComponent) // End Frontier { - BreakOnMove = true, - BreakOnDamage = false, - NeedHand = true - }); + args.Handled = true; + + _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, fillDelay, new AmmoFillDoAfterEvent(), used: uid, target: args.Target, eventTarget: uid) // Frontier: component.FillDelay(args.Target, out var target) || - target.Whitelist == null) + if (Deleted(args.Target)) return; - if (target.Entities.Count + target.UnspawnedCount == target.Capacity) + // Frontier: Better revolver reloading + BallisticAmmoProviderComponent? ballisticTarget; + RevolverAmmoProviderComponent? revolverTarget = null; + if (!TryComp(args.Target, out ballisticTarget) && !TryComp(args.Target, out revolverTarget)) + { + return; + } + if ((ballisticTarget is null || ballisticTarget.Whitelist is null) && + (revolverTarget is null || revolverTarget.Whitelist is null)) + { + // No supported component type with valid whitelist. + return; + } + + //Check capacity + if (ballisticTarget is not null && GetBallisticShots(ballisticTarget) >= ballisticTarget.Capacity || + revolverTarget is not null && GetRevolverCount(revolverTarget) >= revolverTarget.Capacity) { Popup( Loc.GetString("gun-ballistic-transfer-target-full", @@ -96,6 +128,7 @@ private void OnBallisticAmmoFillDoAfter(EntityUid uid, BallisticAmmoProviderComp args.User); return; } + // End Frontier if (component.Entities.Count + component.UnspawnedCount == 0) { @@ -117,12 +150,15 @@ void SimulateInsertAmmo(EntityUid ammo, EntityUid ammoProvider, EntityCoordinate var evTakeAmmo = new TakeAmmoEvent(1, ammo, Transform(uid).Coordinates, args.User); RaiseLocalEvent(uid, evTakeAmmo); + bool validAmmoType = true; // Frontier: do not repeat reload attempts with invalid ammo. + foreach (var (ent, _) in ammo) { if (ent == null) continue; - if (!target.Whitelist.IsValid(ent.Value)) + if (ballisticTarget is not null && ballisticTarget?.Whitelist?.IsValid(ent.Value) != true || // Frontier: better revolver reloading + revolverTarget is not null && revolverTarget?.Whitelist?.IsValid(ent.Value) != true) // Frontier: better revolver reloading { Popup( Loc.GetString("gun-ballistic-transfer-invalid", @@ -132,6 +168,8 @@ void SimulateInsertAmmo(EntityUid ammo, EntityUid ammoProvider, EntityCoordinate args.User); SimulateInsertAmmo(ent.Value, uid, Transform(uid).Coordinates); + + validAmmoType = false; // Frontier: do not retry reloading if the ammo type is different. } else { @@ -145,9 +183,15 @@ void SimulateInsertAmmo(EntityUid ammo, EntityUid ammoProvider, EntityCoordinate } // repeat if there is more space in the target and more ammo to fill it - var moreSpace = target.Entities.Count + target.UnspawnedCount < target.Capacity; + // Frontier: better revolver reloading + var moreSpace = false; + if (ballisticTarget is not null) + moreSpace = GetBallisticShots(ballisticTarget) < ballisticTarget.Capacity; + else if (revolverTarget is not null) + moreSpace = GetRevolverCount(revolverTarget) < revolverTarget.Capacity; + // End Frontier var moreAmmo = component.Entities.Count + component.UnspawnedCount > 0; - args.Repeat = moreSpace && moreAmmo; + args.Repeat = moreSpace && moreAmmo && validAmmoType; // Frontier: do not repeat reload attempts with invalid ammo. } private void OnBallisticVerb(EntityUid uid, BallisticAmmoProviderComponent component, GetVerbsEvent args) diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs index b8b00799c1b..fedc87a36c2 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs @@ -1,9 +1,11 @@ +using Content.Shared.DoAfter; using Content.Shared.Interaction; using Content.Shared.Verbs; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; using Robust.Shared.Containers; using Robust.Shared.GameStates; +using Robust.Shared.Map; using Robust.Shared.Serialization; using Robust.Shared.Utility; using System; @@ -25,6 +27,8 @@ protected virtual void InitializeRevolver() SubscribeLocalEvent(OnRevolverTakeAmmo); SubscribeLocalEvent>(OnRevolverVerbs); SubscribeLocalEvent(OnRevolverInteractUsing); + SubscribeLocalEvent(OnRevolverAfterInteract); // Frontier: better revolver reloading + SubscribeLocalEvent(OnRevolverAmmoFillDoAfter); // Frontier: better revolver reloading SubscribeLocalEvent(OnRevolverGetAmmoCount); SubscribeLocalEvent(OnRevolverUse); } @@ -47,13 +51,145 @@ private void OnRevolverGetAmmoCount(EntityUid uid, RevolverAmmoProviderComponent private void OnRevolverInteractUsing(EntityUid uid, RevolverAmmoProviderComponent component, InteractUsingEvent args) { - if (args.Handled) - return; + if (args.Handled || component?.Whitelist?.IsValid(args.Used, EntityManager) != true) // Frontier: better revolver reloading + return; // Frontier: better revolver reloading if (TryRevolverInsert(uid, component, args.Used, args.User)) args.Handled = true; } + // Frontier: better revolver reloading + private void OnRevolverAfterInteract(EntityUid uid, RevolverAmmoProviderComponent component, AfterInteractEvent args) + { + if (args.Handled || + !component.MayTransfer || + !Timing.IsFirstTimePredicted || + args.Target == null || + args.Used == args.Target || + Deleted(args.Target)) + return; + + // Ensure the target of interaction has a valid component. + var validComponent = false; + TimeSpan fillDelay = component.FillDelay; + if (TryComp(args.Target, out var ballisticComponent) && ballisticComponent.Whitelist is not null) + { + validComponent = true; + fillDelay = ballisticComponent.FillDelay; + } + else if (TryComp(args.Target, out var revolverComponent) && revolverComponent.Whitelist is not null) + { + validComponent = true; + fillDelay = revolverComponent.FillDelay; + } + + if (validComponent) + { + args.Handled = true; + + _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, fillDelay, new AmmoFillDoAfterEvent(), used: uid, target: args.Target, eventTarget: uid) + { + BreakOnMove = true, + BreakOnDamage = false, + NeedHand = true + }); + } + } + + // NOTE: closely resembles OnBallisticAmmoFillDoAfter except for bullet count check - redundancy could be removed. + private void OnRevolverAmmoFillDoAfter(EntityUid uid, RevolverAmmoProviderComponent component, AmmoFillDoAfterEvent args) + { + if (Deleted(args.Target)) + return; + + BallisticAmmoProviderComponent? ballisticTarget; + RevolverAmmoProviderComponent? revolverTarget = null; + if (!TryComp(args.Target, out ballisticTarget) && !TryComp(args.Target, out revolverTarget)) + { + return; + } + if ((ballisticTarget is null || ballisticTarget.Whitelist is null) && + (revolverTarget is null || revolverTarget.Whitelist is null)) + { + // No supported component type with valid whitelist. + return; + } + + if (ballisticTarget is not null && GetBallisticShots(ballisticTarget) >= ballisticTarget.Capacity || + revolverTarget is not null && GetRevolverCount(revolverTarget) >= revolverTarget.Capacity) + { + Popup( + Loc.GetString("gun-ballistic-transfer-target-full", + ("entity", args.Target)), + args.Target, + args.User); + return; + } + + if (GetRevolverUnspentCount(component) == 0) + { + // NOTE: the revolver hay be full of unspent cases. Is this considered "empty", or do we need a new string? + Popup( + Loc.GetString("gun-ballistic-transfer-empty", + ("entity", uid)), + uid, + args.User); + return; + } + + void SimulateInsertAmmo(EntityUid ammo, EntityUid ammoProvider, EntityCoordinates coordinates) + { + var evInsert = new InteractUsingEvent(args.User, ammo, ammoProvider, coordinates); + RaiseLocalEvent(ammoProvider, evInsert); + } + + List<(EntityUid? Entity, IShootable Shootable)> ammo = new(); + var evTakeAmmo = new TakeAmmoEvent(1, ammo, Transform(uid).Coordinates, args.User); + RaiseLocalEvent(uid, evTakeAmmo); + + bool validAmmoType = true; + + foreach (var (ent, _) in ammo) + { + if (ent == null) + continue; + + if (ballisticTarget is not null && ballisticTarget.Whitelist?.IsValid(ent.Value) != true || + revolverTarget is not null && revolverTarget.Whitelist?.IsValid(ent.Value) != true) + { + Popup( + Loc.GetString("gun-ballistic-transfer-invalid", + ("ammoEntity", ent.Value), + ("targetEntity", args.Target.Value)), + uid, + args.User); + + SimulateInsertAmmo(ent.Value, uid, Transform(uid).Coordinates); + + validAmmoType = false; + } + else + { + // play sound to be cool + Audio.PlayPredicted(component.SoundInsert, uid, args.User); + SimulateInsertAmmo(ent.Value, args.Target.Value, Transform(args.Target.Value).Coordinates); + } + + if (IsClientSide(ent.Value)) + Del(ent.Value); + } + + // repeat if there is more space in the target and more ammo to fill it + var moreSpace = false; + if (ballisticTarget is not null) + moreSpace = GetBallisticShots(ballisticTarget) < ballisticTarget.Capacity; + else if (revolverTarget is not null) + moreSpace = GetRevolverCount(revolverTarget) < revolverTarget.Capacity; + var moreAmmo = GetRevolverUnspentCount(component) > 0; + args.Repeat = moreSpace && moreAmmo && validAmmoType; + } + // End Frontier + private void OnRevolverGetState(EntityUid uid, RevolverAmmoProviderComponent component, ref ComponentGetState args) { args.State = new RevolverAmmoProviderComponentState @@ -89,7 +225,7 @@ private void OnRevolverHandleState(EntityUid uid, RevolverAmmoProviderComponent public bool TryRevolverInsert(EntityUid revolverUid, RevolverAmmoProviderComponent component, EntityUid uid, EntityUid? user) { - if (component.Whitelist?.IsValid(uid, EntityManager) == false) + if (component.Whitelist?.IsValid(uid, EntityManager) != true) // Frontier: no null, consistency with BallisticAmmoProvider return false; // If it's a speedloader try to get ammo from it. @@ -123,7 +259,8 @@ public bool TryRevolverInsert(EntityUid revolverUid, RevolverAmmoProviderCompone return false; } - for (var i = Math.Min(ev.Ammo.Count - 1, component.Capacity - 1); i >= 0; i--) + // Rotate around until we've covered the whole cylinder or there are no more unspent bullets to transfer. + for (var i = 0; i < component.Capacity && ev.Ammo.Count > 0; i++) // Frontier: speedloader partial reload fix { var index = (component.CurrentIndex + i) % component.Capacity; @@ -145,9 +282,6 @@ public bool TryRevolverInsert(EntityUid revolverUid, RevolverAmmoProviderCompone component.AmmoSlots[index] = ent.Value; Containers.Insert(ent.Value, component.AmmoContainer); SetChamber(index, component, uid); - - if (ev.Ammo.Count == 0) - break; } DebugTools.Assert(ammo.Count == 0); @@ -344,68 +478,112 @@ protected virtual void SpinRevolver(EntityUid revolverUid, RevolverAmmoProviderC private void OnRevolverTakeAmmo(EntityUid uid, RevolverAmmoProviderComponent component, TakeAmmoEvent args) { - var currentIndex = component.CurrentIndex; - Cycle(component, args.Shots); - - // Revolvers provide the bullets themselves rather than the cartridges so they stay in the revolver. - for (var i = 0; i < args.Shots; i++) + if (args.WillBeFired) // Frontier: fire the revolver { - var index = (currentIndex + i) % component.Capacity; - var chamber = component.Chambers[index]; - EntityUid? ent = null; + var currentIndex = component.CurrentIndex; + Cycle(component, args.Shots); - // Get contained entity if it exists. - if (component.AmmoSlots[index] != null) - { - ent = component.AmmoSlots[index]!; - component.Chambers[index] = false; - } - // Try to spawn a round if it's available. - else if (chamber != null) + // Revolvers provide the bullets themselves rather than the cartridges so they stay in the revolver. + for (var i = 0; i < args.Shots; i++) { - if (chamber == true) - { - // Pretend it's always been there. - ent = Spawn(component.FillPrototype, args.Coordinates); - - if (!_netManager.IsClient) - { - component.AmmoSlots[index] = ent; - Containers.Insert(ent.Value, component.AmmoContainer); - } + var index = (currentIndex + i) % component.Capacity; + var chamber = component.Chambers[index]; + EntityUid? ent = null; + // Get contained entity if it exists. + if (component.AmmoSlots[index] != null) + { + ent = component.AmmoSlots[index]!; component.Chambers[index] = false; } - } + // Try to spawn a round if it's available. + else if (chamber != null) + { + if (chamber == true) + { + // Pretend it's always been there. + ent = Spawn(component.FillPrototype, args.Coordinates); - // Chamber empty or spent - if (ent == null) - continue; + if (!_netManager.IsClient) + { + component.AmmoSlots[index] = ent; + Containers.Insert(ent.Value, component.AmmoContainer); + } - if (TryComp(ent, out var cartridge)) - { - if (cartridge.Spent) + component.Chambers[index] = false; + } + } + + // Chamber empty or spent + if (ent == null) continue; - // Mark cartridge as spent and if it's caseless delete from the chamber slot. - SetCartridgeSpent(ent.Value, cartridge, true); - var spawned = Spawn(cartridge.Prototype, args.Coordinates); - args.Ammo.Add((spawned, EnsureComp(spawned))); + if (TryComp(ent, out var cartridge)) + { + if (cartridge.Spent) + continue; + + // Mark cartridge as spent and if it's caseless delete from the chamber slot. + SetCartridgeSpent(ent.Value, cartridge, true); + var spawned = Spawn(cartridge.Prototype, args.Coordinates); + args.Ammo.Add((spawned, EnsureComp(spawned))); - if (cartridge.DeleteOnSpawn) + if (cartridge.DeleteOnSpawn) + component.Chambers[index] = null; + } + else + { component.Chambers[index] = null; + args.Ammo.Add((ent.Value, EnsureComp(ent.Value))); + } + + // Delete the cartridge entity on client + if (_netManager.IsClient) + { + QueueDel(ent); + } } - else - { - component.Chambers[index] = null; - args.Ammo.Add((ent.Value, EnsureComp(ent.Value))); - } + } + else + { + // Frontier: better revolver reloading + var currentIndex = component.CurrentIndex; + var shotsToRemove = Math.Min(args.Shots, GetRevolverUnspentCount(component)); + var removedShots = 0; - // Delete the cartridge entity on client - if (_netManager.IsClient) + // Rotate around until we've covered the whole cylinder or there are no more unspent bullets to transfer. + for (var i = 0; i < component.Capacity && removedShots < shotsToRemove; i++) { - QueueDel(ent); + // Remove the last rounds to be fired without cycling the action. + // If the gun had a live round to start, it should have a live round when finished if any unspent rounds remain. + var index = (currentIndex + (component.Capacity - 1) - i) % component.Capacity; + var chamber = component.Chambers[index]; + + // Only take live rounds, leave the empties where they are. + if (chamber == true) + { + // Get current cartridge, or spawn a new one if it doesn't exist. + EntityUid? ent = component.AmmoSlots[index]!; + if (ent == null) + { + ent = Spawn(component.FillPrototype, args.Coordinates); + + if (!_netManager.IsClient) + { + component.AmmoSlots[index] = ent; + Containers.Insert(ent.Value, component.AmmoContainer); + } + } + + // Add the cartridge to our set and remove the bullet from the gun. + args.Ammo.Add((ent.Value, EnsureComp(ent.Value))); + Containers.Remove(ent.Value, component.AmmoContainer); + component.AmmoSlots[index] = null; + component.Chambers[index] = null; + removedShots++; + } } + // End Frontier } UpdateAmmoCount(uid, prediction: false); diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index eb597467fdc..cf745bd88bb 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -306,7 +306,7 @@ private void AttemptShoot(EntityUid user, EntityUid gunUid, GunComponent gun) var fromCoordinates = Transform(user).Coordinates; // Remove ammo - var ev = new TakeAmmoEvent(shots, new List<(EntityUid? Entity, IShootable Shootable)>(), fromCoordinates, user); + var ev = new TakeAmmoEvent(shots, new List<(EntityUid? Entity, IShootable Shootable)>(), fromCoordinates, user, true); // Frontier: add intent to fire // Listen it just makes the other code around it easier if shots == 0 to do this. if (shots > 0) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml index ee65bb65491..bc79dfabf1a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml @@ -39,6 +39,7 @@ tags: - CartridgeMagnum - SpeedLoaderMagnum + mayTransfer: true # Frontier proto: CartridgeMagnum capacity: 6 chambers: [ True, True, True, True, True, True ] From 6358d48e00631a054a0ce0c5979d8620fdc69438 Mon Sep 17 00:00:00 2001 From: FrontierATC Date: Thu, 13 Jun 2024 23:04:19 +0000 Subject: [PATCH 04/16] Automatic Changelog (#1434) --- Resources/Changelog/Changelog.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 507716b412d..823adcbf1be 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5001,3 +5001,13 @@ Entries: message: Organized the NFSD Uplink a little more into a bundles category. id: 5031 time: '2024-06-13T22:56:14.0000000+00:00' +- author: whatston3 + changes: + - type: Add + message: >- + Revolvers can now reload from ammunition boxes and magazines, and can + provide ammunition for speedloaders. + - type: Fix + message: Speedloaders do not waste ammunition on partial reloads. + id: 5032 + time: '2024-06-13T23:03:55.0000000+00:00' From 411cad87d288f42316e1afa54fa0d3002b3029dd Mon Sep 17 00:00:00 2001 From: Dvir <39403717+dvir001@users.noreply.github.com> Date: Fri, 14 Jun 2024 02:06:43 +0300 Subject: [PATCH 05/16] Contraband Appraisal Gun (#1509) * Gun * More items to spawners * weapon case icon fix, diluted filled containers with empty * small fix * weapon spawners rework * weapon spawners * dungeon updates * salvage outpost theme * some tweaks * missing tag * fix * Update Resources/Prototypes/_NF/Catalog/Fills/Items/weapon_cases_expedition.yml Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * Update Resources/Prototypes/_NF/Entities/Markers/Spawners/Random/dungeon_items_weapons.yml Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * Update Resources/Prototypes/_NF/Entities/Markers/Spawners/Random/dungeon_items_general.yml Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * Update Resources/Prototypes/_NF/Catalog/Fills/Items/weapon_cases_expedition.yml Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * weapon cases touch up * Fixup * Update WeaponCaseInsertable.cs * A bit less syndicate stuff, but still keep some * ftl cleanp * sprite * Update contrabandappraisal.yml * Add to vending * Update bountyvend.yml * Update Resources/Locale/en-US/_NF/cargo/price-gun-component.ftl Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * Update Content.Server/_NF/Security/ContrabandGunSystem.cs Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * Update Content.Server/_NF/Security/ContrabandGunSystem.cs Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * Update Content.Server/_NF/Security/ContrabandGunSystem.cs Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * Whatstone's suggested changes --------- Co-authored-by: steinhauer.erhard Co-authored-by: ErhardSteinhauer <65374927+ErhardSteinhauer@users.noreply.github.com> Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> Co-authored-by: Whatstone --- .../Components/ContrabandPriceGunComponent.cs | 10 +++ .../_NF/Security/ContrabandPriceGunSystem.cs | 67 ++++++++++++++++++ .../en-US/_NF/cargo/price-gun-component.ftl | 4 ++ .../Prototypes/Catalog/Fills/Items/belt.yml | 1 + .../VendingMachines/Inventories/sec.yml | 59 +++++++-------- .../Entities/Clothing/Belt/belts.yml | 1 + .../Inventories/bountyvend.yml | 1 + .../VendingMachines/Inventories/nfsdtec.yml | 1 + .../Objects/Tools/contrabandappraisal.yml | 23 ++++++ .../appraisal-tool.rsi/equipped-BELT.png | Bin 0 -> 151 bytes .../Objects/Tools/appraisal-tool.rsi/icon.png | Bin 0 -> 262 bytes .../Tools/appraisal-tool.rsi/meta.json | 18 +++++ 12 files changed, 153 insertions(+), 32 deletions(-) create mode 100644 Content.Server/_NF/Security/Components/ContrabandPriceGunComponent.cs create mode 100644 Content.Server/_NF/Security/ContrabandPriceGunSystem.cs create mode 100644 Resources/Locale/en-US/_NF/cargo/price-gun-component.ftl create mode 100644 Resources/Prototypes/_NF/Entities/Objects/Tools/contrabandappraisal.yml create mode 100644 Resources/Textures/_NF/Objects/Tools/appraisal-tool.rsi/equipped-BELT.png create mode 100644 Resources/Textures/_NF/Objects/Tools/appraisal-tool.rsi/icon.png create mode 100644 Resources/Textures/_NF/Objects/Tools/appraisal-tool.rsi/meta.json diff --git a/Content.Server/_NF/Security/Components/ContrabandPriceGunComponent.cs b/Content.Server/_NF/Security/Components/ContrabandPriceGunComponent.cs new file mode 100644 index 00000000000..b0dc81a63d7 --- /dev/null +++ b/Content.Server/_NF/Security/Components/ContrabandPriceGunComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Server._NF.Security.Components; + +/// +/// This is used for the contraband appraisal gun, which checks the contraband turn-in value in FUCs of any object it appraises. +/// +[RegisterComponent] +public sealed partial class ContrabandPriceGunComponent : Component +{ + +} diff --git a/Content.Server/_NF/Security/ContrabandPriceGunSystem.cs b/Content.Server/_NF/Security/ContrabandPriceGunSystem.cs new file mode 100644 index 00000000000..bfd5e6d34a7 --- /dev/null +++ b/Content.Server/_NF/Security/ContrabandPriceGunSystem.cs @@ -0,0 +1,67 @@ +using Content.Server.Popups; +using Content.Shared._NF.Contraband.Components; +using Content.Server._NF.Security.Components; +using Content.Shared.IdentityManagement; +using Content.Shared.Interaction; +using Content.Shared.Timing; +using Content.Shared.Verbs; + +namespace Content.Server._NF.Security.Systems; + +/// +/// This system handles contraband appraisal messages and will inform a user of how much an item is worth for trade-in in FUCs. +/// +public sealed class ContrabandPriceGunSystem : EntitySystem +{ + [Dependency] private readonly UseDelaySystem _useDelay = default!; + [Dependency] private readonly PopupSystem _popupSystem = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnAfterInteract); + SubscribeLocalEvent>(OnUtilityVerb); + } + + private void OnUtilityVerb(EntityUid uid, ContrabandPriceGunComponent component, GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract || args.Using == null) + return; + + if (!TryComp(uid, out UseDelayComponent? useDelay) || _useDelay.IsDelayed((uid, useDelay))) + return; + + if (!TryComp(args.Target, out var contraband)) + return; + + var verb = new UtilityVerb() + { + Act = () => + { + _popupSystem.PopupEntity(Loc.GetString("contraband-price-gun-pricing-result", ("object", Identity.Entity(args.Target, EntityManager)), ("price", contraband.Value)), args.User, args.User); + _useDelay.TryResetDelay((uid, useDelay)); + }, + Text = Loc.GetString("contraband-price-gun-verb-text"), + Message = Loc.GetString("contraband-price-gun-verb-message", ("object", Identity.Entity(args.Target, EntityManager))) + }; + + args.Verbs.Add(verb); + } + + private void OnAfterInteract(EntityUid uid, ContrabandPriceGunComponent component, AfterInteractEvent args) + { + if (!args.CanReach || args.Target == null || args.Handled) + return; + + if (!TryComp(uid, out UseDelayComponent? useDelay) || _useDelay.IsDelayed((uid, useDelay))) + return; + + if (TryComp(args.Target, out var contraband)) + _popupSystem.PopupEntity(Loc.GetString("contraband-price-gun-pricing-result", ("object", Identity.Entity(args.Target.Value, EntityManager)), ("price", contraband.Value)), args.User, args.User); + else + _popupSystem.PopupEntity(Loc.GetString("contraband-price-gun-pricing-result-none", ("object", Identity.Entity(args.Target.Value, EntityManager))), args.User, args.User); + + _useDelay.TryResetDelay((uid, useDelay)); + args.Handled = true; + } +} diff --git a/Resources/Locale/en-US/_NF/cargo/price-gun-component.ftl b/Resources/Locale/en-US/_NF/cargo/price-gun-component.ftl new file mode 100644 index 00000000000..472e2608e9d --- /dev/null +++ b/Resources/Locale/en-US/_NF/cargo/price-gun-component.ftl @@ -0,0 +1,4 @@ +contraband-price-gun-pricing-result = The device deems {THE($object)} to be worth {$price} FUCs. +contraband-price-gun-verb-text = Appraisal +contraband-price-gun-verb-message = Appraise {THE($object)}. +contraband-price-gun-pricing-result-none = The device deems {THE($object)} to be worth no FUCs. diff --git a/Resources/Prototypes/Catalog/Fills/Items/belt.yml b/Resources/Prototypes/Catalog/Fills/Items/belt.yml index 4f176077c40..2dee18fad5a 100644 --- a/Resources/Prototypes/Catalog/Fills/Items/belt.yml +++ b/Resources/Prototypes/Catalog/Fills/Items/belt.yml @@ -53,6 +53,7 @@ - id: Stunbaton - id: Handcuffs - id: Handcuffs + - id: ContrabandAppraisalTool # Frontier - type: entity id: ClothingBeltSecurityWebbingFilled diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml index e532a0341c0..2c208a57cce 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml @@ -1,36 +1,31 @@ - type: vendingMachineInventory id: SecTechInventory startingInventory: - Handcuffs: 10 - Zipties: 10 - GrenadeFlashBang: 10 - SecurityWhistle: 5 - TearGasGrenade: 4 - ClusterBangFull: 2 - GrenadeStinger: 4 - Flash: 10 - FlashlightSeclite: 10 - Tourniquet: 5 - ClothingEyesGlassesSunglasses: 5 - ClothingEyesGlassesSecurity: 5 # Frontier - ClothingEyesHudSecurity: 10 - ClothingEyesEyepatchHudSecurity: 5 - ClothingBeltSecurityWebbing: 10 - ClothingBeltSecurity: 10 # Frontier - RiotShield: 3 - RiotLaserShield: 3 - RiotBulletShield: 3 -# RadioHandheldSecurity: 8 - Stunbaton: 10 - WeaponDisabler: 10 - CrowbarRed: 10 # Frontier - ForensicScanner: 3 # Frontier - BoxForensicPad: 3 # Frontier - LogProbeCartridge: 3 # Frontier - TrackingImplanter: 5 # Frontier -# MindShieldImplanter: 5 # Frontier + SecurityWhistle: 1 # Frontier 5<1 + Handcuffs: 3 # Frontier 8<3 + GrenadeFlashBang: 1 # Frontier 4<1 + TearGasGrenade: 1 # Frontier 4<1 + ClusterBangFull: 1 # Frontier 2<1 + GrenadeStinger: 1 # Frontier 4<1 + Flash: 1 # Frontier 5<1 + Tourniquet: 1 # Frontier 5<1 + FlashlightSeclite: 1 # Frontier 5<1 + ClothingEyesGlassesSunglasses: 1 # Frontier 2<1 + ClothingEyesHudSecurity: 1 # Frontier 2<1 + ClothingEyesEyepatchHudSecurity: 1 # Frontier 2<1 + ClothingBeltSecurityWebbing: 1 # Frontier 5<1 + CombatKnife: 1 # Frontier 3<1 + Zipties: 4 # Frontier 12<4 + RiotShield: 1 # Frontier 2<1 + RiotLaserShield: 1 # Frontier 2<1 + RiotBulletShield: 1 # Frontier 2<1 + LogProbeCartridge: 1 # Frontier + ForensicScanner: 1 # Frontier + BoxForensicPad: 1 # Frontier + ContrabandAppraisalTool: 1 # Frontier +# RadioHandheldSecurity: 5 # Frontier # security officers need to follow a diet regimen! - contrabandInventory: - FoodDonutHomer: 3 # Frontier - No more then 3 - FoodBoxDonut: 3 # Frontier - No more then 3 - #box evidence +# contrabandInventory: +# FoodDonutHomer: 12 # Frontier +# FoodBoxDonut: 2 # Frontier + #box evidence \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml index fbb528f4a11..c290413a6ac 100644 --- a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml +++ b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml @@ -477,6 +477,7 @@ - MagazineMagnum - CombatKnife - Truncheon + - AppraisalTool # Frontier components: - Stunbaton - FlashOnTrigger diff --git a/Resources/Prototypes/_NF/Catalog/VendingMachines/Inventories/bountyvend.yml b/Resources/Prototypes/_NF/Catalog/VendingMachines/Inventories/bountyvend.yml index f9fd0c5919d..85876fddcd5 100644 --- a/Resources/Prototypes/_NF/Catalog/VendingMachines/Inventories/bountyvend.yml +++ b/Resources/Prototypes/_NF/Catalog/VendingMachines/Inventories/bountyvend.yml @@ -12,6 +12,7 @@ ForensicScanner: 3 BoxForensicPad: 6 LogProbeCartridge: 3 + ContrabandAppraisalTool: 10 #Bounty hunter ClothingUniformJumpsuitBH: 3 ClothingUniformJumpskirtBH: 3 diff --git a/Resources/Prototypes/_NF/Catalog/VendingMachines/Inventories/nfsdtec.yml b/Resources/Prototypes/_NF/Catalog/VendingMachines/Inventories/nfsdtec.yml index 79a3c3da6da..c654da4f5e4 100644 --- a/Resources/Prototypes/_NF/Catalog/VendingMachines/Inventories/nfsdtec.yml +++ b/Resources/Prototypes/_NF/Catalog/VendingMachines/Inventories/nfsdtec.yml @@ -25,6 +25,7 @@ RiotBulletShield: 3 Stunbaton: 10 WeaponDisabler: 10 + ContrabandAppraisalTool: 5 # Frontier CrowbarRed: 10 # Frontier ForensicScanner: 3 # Frontier BoxForensicPad: 3 # Frontier diff --git a/Resources/Prototypes/_NF/Entities/Objects/Tools/contrabandappraisal.yml b/Resources/Prototypes/_NF/Entities/Objects/Tools/contrabandappraisal.yml new file mode 100644 index 00000000000..f3b54e1945e --- /dev/null +++ b/Resources/Prototypes/_NF/Entities/Objects/Tools/contrabandappraisal.yml @@ -0,0 +1,23 @@ +- type: entity + parent: BaseItem + id: ContrabandAppraisalTool + name: contraband appraisal tool + description: An officer's best friend, with a quantum connection to the NT database and the ability to appraise even the toughest items. + components: + - type: Sprite + sprite: _NF/Objects/Tools/appraisal-tool.rsi + state: icon + - type: Item + sprite: _NF/Objects/Tools/appraisal-tool.rsi + - type: ContrabandPriceGun + - type: UseDelay + delay: 1 + - type: Clothing + sprite: _NF/Objects/Tools/appraisal-tool.rsi + quickEquip: false + slots: + - Belt + - type: Tag + tags: + - AppraisalTool + - Sidearm diff --git a/Resources/Textures/_NF/Objects/Tools/appraisal-tool.rsi/equipped-BELT.png b/Resources/Textures/_NF/Objects/Tools/appraisal-tool.rsi/equipped-BELT.png new file mode 100644 index 0000000000000000000000000000000000000000..eb11395e067107a13f69709b309d3298bbb72f4a GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|0zF+ELn`LH zyCXh`Agp8Yi<_1JSnv| oRqpAK5i~u&{}ek&5&|Bin=Spq>w4Jl>Qaz^r>mdKI;Vst05xeM7+AXGCzN^wzh({gPev@h>D7hq~v6K`&4ahQ*rU2?ye4?M*fl@ zzhH*{DBx-Dyk$VC98VX=5R2Zo6Rd?A6nI#Z>ogX8w_nGvo1<{%#w)RaH$ozd=9}x- zd{mOE3^SBHpO8@X*j7I&M@@5Pq<%r8Lt|^ToU8RskHbvU*GrdO;5B)EsY&q1@mC_O t&Fkyg-k5&6-tb}WX&nXoz6 Date: Thu, 13 Jun 2024 23:07:10 +0000 Subject: [PATCH 06/16] Automatic Changelog (#1509) --- Resources/Changelog/Changelog.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 823adcbf1be..53a2a99f460 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5011,3 +5011,13 @@ Entries: message: Speedloaders do not waste ammunition on partial reloads. id: 5032 time: '2024-06-13T23:03:55.0000000+00:00' +- author: dvir01 + changes: + - type: Add + message: >- + Contraband appraisal guns are available to appraise contraband items' + value in FUCs. + - type: Add + message: The contraband appraisal gun is now included in the NFSD tool kit. + id: 5033 + time: '2024-06-13T23:06:44.0000000+00:00' From e4dfc0baf6f71bda1673819743a924b22c474537 Mon Sep 17 00:00:00 2001 From: Kill_Me_I_Noobs <118206719+Vonsant@users.noreply.github.com> Date: Fri, 14 Jun 2024 02:09:02 +0300 Subject: [PATCH 07/16] Add support for multiple grid paths in BluespaceErrorRule (#1508) * Add support for multiple grid paths in BluespaceErrorRule * Meh, it was needed for testing * fix * fix 2 --- .../Components/BluespaceErrorRuleComponent.cs | 10 ++++----- .../Events/BluespaceErrorRule.cs | 19 +++++++++-------- .../_NF/Events/events_bluespace.yml | 21 ++++++++++++------- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/Content.Server/StationEvents/Components/BluespaceErrorRuleComponent.cs b/Content.Server/StationEvents/Components/BluespaceErrorRuleComponent.cs index 1b0ff547dbe..97a7bb65ec9 100644 --- a/Content.Server/StationEvents/Components/BluespaceErrorRuleComponent.cs +++ b/Content.Server/StationEvents/Components/BluespaceErrorRuleComponent.cs @@ -7,13 +7,13 @@ namespace Content.Server.StationEvents.Components; public sealed partial class BluespaceErrorRuleComponent : Component { /// - /// Path to the grid that gets bluspaced in + /// List of paths to the grids that can be bluespaced in. /// - [DataField("gridPath")] - public string GridPath = ""; + [DataField("gridPaths")] + public List GridPaths = new(); /// - /// The color of your thing. the name should be set by the mapper when mapping. + /// The color of your thing. The name should be set by the mapper when mapping. /// [DataField("color")] public Color Color = new Color(225, 15, 155); @@ -31,7 +31,7 @@ public sealed partial class BluespaceErrorRuleComponent : Component public EntityUid? GridUid = null; /// - /// How much the grid is appraised at upon entering into existance, set after starting the event + /// How much the grid is appraised at upon entering into existence, set after starting the event /// [DataField("startingValue")] public double startingValue = 0; diff --git a/Content.Server/StationEvents/Events/BluespaceErrorRule.cs b/Content.Server/StationEvents/Events/BluespaceErrorRule.cs index c6e7a3757a8..2caf13f811f 100644 --- a/Content.Server/StationEvents/Events/BluespaceErrorRule.cs +++ b/Content.Server/StationEvents/Events/BluespaceErrorRule.cs @@ -31,39 +31,42 @@ public sealed class BluespaceErrorRule : StationEventSystem Entity, EntityUid MapUid, Vector2 LocalPosition)> _playerMobs = new(); - protected override void Started(EntityUid uid, BluespaceErrorRuleComponent component, GameRuleComponent gameRule, - GameRuleStartedEvent args) + protected override void Started(EntityUid uid, BluespaceErrorRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) { base.Started(uid, component, gameRule, args); + // Select a random grid path + var selectedGridPath = _random.Pick(component.GridPaths); var shuttleMap = _mapManager.CreateMap(); var options = new MapLoadOptions { LoadMap = true, }; - if (!_map.TryLoad(shuttleMap, component.GridPath, out var gridUids, options)) + if (!_map.TryLoad(shuttleMap, selectedGridPath, out var gridUids, options)) return; + component.GridUid = gridUids[0]; if (component.GridUid is not EntityUid gridUid) return; + component.startingValue = _pricing.AppraiseGrid(gridUid); _shuttle.SetIFFColor(gridUid, component.Color); var offset = _random.NextVector2(1350f, 2200f); var mapId = GameTicker.DefaultMap; var mapUid = _mapManager.GetMapEntityId(mapId); + if (TryComp(component.GridUid, out var shuttle)) { _shuttle.FTLToCoordinates(gridUid, shuttle, new EntityCoordinates(mapUid, offset), 0f, 0f, 30f); } - } protected override void Ended(EntityUid uid, BluespaceErrorRuleComponent component, GameRuleComponent gameRule, GameRuleEndedEvent args) { base.Ended(uid, component, gameRule, args); - if(!EntityManager.TryGetComponent(component.GridUid, out var gridTransform)) + if (!EntityManager.TryGetComponent(component.GridUid, out var gridTransform)) { Log.Error("bluespace error objective was missing transform component"); return; @@ -71,7 +74,7 @@ protected override void Ended(EntityUid uid, BluespaceErrorRuleComponent compone if (gridTransform.GridUid is not EntityUid gridUid) { - Log.Error( "bluespace error has no associated grid?"); + Log.Error("bluespace error has no associated grid?"); return; } @@ -98,12 +101,10 @@ protected override void Ended(EntityUid uid, BluespaceErrorRuleComponent compone _transform.SetCoordinates(mob.Entity.Owner, new EntityCoordinates(mob.MapUid, mob.LocalPosition)); } - var query = EntityQuery(); foreach (var account in query) { - _cargo.DeductFunds(account, (int) -(gridValue * component.RewardFactor)); + _cargo.DeductFunds(account, (int)-(gridValue * component.RewardFactor)); } } } - diff --git a/Resources/Prototypes/_NF/Events/events_bluespace.yml b/Resources/Prototypes/_NF/Events/events_bluespace.yml index 6e4057f52df..3c7ccb4714f 100644 --- a/Resources/Prototypes/_NF/Events/events_bluespace.yml +++ b/Resources/Prototypes/_NF/Events/events_bluespace.yml @@ -16,7 +16,8 @@ maxDuration: 1560 maxOccurrences: 1 # Only once per shift possible - type: BluespaceErrorRule - gridPath: /Maps/_NF/Bluespace/cache.yml + gridPaths: + - /Maps/_NF/Bluespace/cache.yml rewardFactor: 3.3 - type: entity @@ -37,7 +38,8 @@ maxDuration: 1350 maxOccurrences: 1 # Only once per shift possible - type: BluespaceErrorRule - gridPath: /Maps/_NF/Bluespace/vault.yml + gridPaths: + - /Maps/_NF/Bluespace/vault.yml rewardFactor: 0.7 - type: entity @@ -59,7 +61,8 @@ maxDuration: 780 maxOccurrences: 1 # Only once per shift possible - type: BluespaceErrorRule - gridPath: /Maps/_NF/Bluespace/vaultsmall.yml + gridPaths: + - /Maps/_NF/Bluespace/vaultsmall.yml rewardFactor: 3 # - type: entity # Need rework @@ -143,7 +146,8 @@ maxDuration: 1200 maxOccurrences: 1 # Only once per shift possible - type: BluespaceErrorRule - gridPath: /Maps/_NF/Bluespace/datacarrier.yml + gridPaths: + - /Maps/_NF/Bluespace/datacarrier.yml rewardFactor: 0.5 # Filler to make the bank go up - type: entity @@ -164,7 +168,8 @@ maxDuration: 2400 maxOccurrences: 1 # Only once per shift possible - type: BluespaceErrorRule - gridPath: /Maps/_NF/Bluespace/syndieftlintercept.yml + gridPaths: + - /Maps/_NF/Bluespace/syndieftlintercept.yml rewardFactor: 0.5 # Filler to make the bank go up - type: entity @@ -185,7 +190,8 @@ maxDuration: 1200 maxOccurrences: 1 # Only once per shift possible - type: BluespaceErrorRule - gridPath: /Maps/_NF/Bluespace/wizardprobealt.yml + gridPaths: + - /Maps/_NF/Bluespace/wizardprobealt.yml rewardFactor: 0.5 # Filler to make the bank go up - type: entity @@ -206,5 +212,6 @@ maxDuration: 2400 maxOccurrences: 1 # Only once per shift possible - type: BluespaceErrorRule - gridPath: /Maps/_NF/Bluespace/bloodmoon.yml + gridPaths: + - /Maps/_NF/Bluespace/bloodmoon.yml rewardFactor: 0.5 # Filler to make the bank go up From 5528647528d764227f479b02c8c4518b01572840 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Thu, 13 Jun 2024 19:18:43 -0400 Subject: [PATCH 08/16] Fix Oni accuracy with wielded weapons, and apply Oni accuracy to handguns. (#1498) * OniSystem: compensate for wield bonus * OniSystem: inaccuracy to a const, 10% buff * OniSystem: call RefreshModifiers (net consistency) * OniSystem: remove TODOs --- .../Abilities/Oni/HeldByOniComponent.cs | 6 +++ .../Nyanotrasen/Abilities/Oni/OniSystem.cs | 40 +++++++++++++++---- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/Content.Server/Nyanotrasen/Abilities/Oni/HeldByOniComponent.cs b/Content.Server/Nyanotrasen/Abilities/Oni/HeldByOniComponent.cs index 41ec3fa630e..50830a7a87d 100644 --- a/Content.Server/Nyanotrasen/Abilities/Oni/HeldByOniComponent.cs +++ b/Content.Server/Nyanotrasen/Abilities/Oni/HeldByOniComponent.cs @@ -4,5 +4,11 @@ namespace Content.Server.Abilities.Oni public sealed partial class HeldByOniComponent : Component { public EntityUid Holder = default!; + + // Frontier: wield accuracy fix + public double minAngleAdded = 0.0; + public double maxAngleAdded = 0.0; + public double angleIncreaseAdded = 0.0; + // End Frontier } } diff --git a/Content.Server/Nyanotrasen/Abilities/Oni/OniSystem.cs b/Content.Server/Nyanotrasen/Abilities/Oni/OniSystem.cs index b680788ff80..90bba75897b 100644 --- a/Content.Server/Nyanotrasen/Abilities/Oni/OniSystem.cs +++ b/Content.Server/Nyanotrasen/Abilities/Oni/OniSystem.cs @@ -4,12 +4,16 @@ using Content.Shared.Weapons.Melee.Events; using Content.Shared.Weapons.Ranged.Components; using Robust.Shared.Containers; +using Content.Shared.Weapons.Ranged.Systems; namespace Content.Server.Abilities.Oni { public sealed class OniSystem : EntitySystem { [Dependency] private readonly ToolSystem _toolSystem = default!; + [Dependency] private readonly SharedGunSystem _gunSystem = default!; + + private const double GunInaccuracyFactor = 17.0; // Frontier (20x<18x -> 10% buff) public override void Initialize() { @@ -28,21 +32,41 @@ private void OnEntInserted(EntityUid uid, OniComponent component, EntInsertedInt if (TryComp(args.Entity, out var gun)) { - gun.MinAngle *= 20f; - gun.AngleIncrease *= 20f; - gun.MaxAngle *= 20f; + // Frontier: adjust penalty for wielded malus + if (TryComp(args.Entity, out var bonus)) + { + //GunWieldBonus values are stored as negative. + heldComp.minAngleAdded = (gun.MinAngle + bonus.MinAngle) * GunInaccuracyFactor; + heldComp.angleIncreaseAdded = (gun.AngleIncrease + bonus.AngleIncrease) * GunInaccuracyFactor; + heldComp.maxAngleAdded = (gun.MaxAngle + bonus.MaxAngle) * GunInaccuracyFactor; + } + else + { + heldComp.minAngleAdded = gun.MinAngle * GunInaccuracyFactor; + heldComp.angleIncreaseAdded = gun.AngleIncrease * GunInaccuracyFactor; + heldComp.maxAngleAdded = gun.MaxAngle * GunInaccuracyFactor; + } + + gun.MinAngle += heldComp.minAngleAdded; + gun.AngleIncrease += heldComp.angleIncreaseAdded; + gun.MaxAngle += heldComp.maxAngleAdded; + _gunSystem.RefreshModifiers(args.Entity); // Make sure values propagate to modified values (this also dirties the gun for us) + // End Frontier } } private void OnEntRemoved(EntityUid uid, OniComponent component, EntRemovedFromContainerMessage args) { - - if (TryComp(args.Entity, out var gun)) + // Frontier: angle manipulation stored in HeldByOniComponent + if (TryComp(args.Entity, out var gun) && + TryComp(args.Entity, out var heldComp)) { - gun.MinAngle /= 20f; - gun.AngleIncrease /= 20f; - gun.MaxAngle /= 20f; + gun.MinAngle -= heldComp.minAngleAdded; + gun.AngleIncrease -= heldComp.angleIncreaseAdded; + gun.MaxAngle -= heldComp.maxAngleAdded; + _gunSystem.RefreshModifiers(args.Entity); // Make sure values propagate to modified values (this also dirties the gun for us) } + // End Frontier RemComp(args.Entity); } From 2ddc85d0af3675e15bc91c671a8cbf8c455b5e30 Mon Sep 17 00:00:00 2001 From: FrontierATC Date: Thu, 13 Jun 2024 23:19:10 +0000 Subject: [PATCH 09/16] Automatic Changelog (#1498) --- Resources/Changelog/Changelog.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 53a2a99f460..3d50b95d8c4 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5021,3 +5021,15 @@ Entries: message: The contraband appraisal gun is now included in the NFSD tool kit. id: 5033 time: '2024-06-13T23:06:44.0000000+00:00' +- author: whatston3 + changes: + - type: Tweak + message: >- + Oni accuracy penalty is now reduced from 20x normal spread to 18x normal + spread. + - type: Fix + message: >- + Oni accuracy penalty is now properly applied to handguns, and does not + compound on wielded penalty. + id: 5034 + time: '2024-06-13T23:18:43.0000000+00:00' From 3901104f8dc4a57608d27651f14530b97d401daf Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Thu, 13 Jun 2024 19:45:16 -0400 Subject: [PATCH 10/16] Add Pious trait, blessing water/blood requires faith (#1486) * faith injector, holywater reaction needs BibleUser * Curly brace on newline, not same line * Remove suffix from faith implanter * BibleUserImplantComponent: newline at EOF, comment * Add Pious trait, remove vendor/loadout faith impl. * Cleanup, remove PacifiedUser variable * Add bible to Contractor tools * tools.yml: fix faith implanter location * Bible: T2 contractor gear * tools.yml: add name, description, bible preview * Bible: name, description, preview, 5k spesos --- Content.Server/Bible/BibleSystem.cs | 38 +++++++++++++++++-- .../Bible/Components/BibleComponent.cs | 15 ++++++++ .../_NF/Implants/BibleUserImplantSystem.cs | 38 +++++++++++++++++++ .../_NF/Implants/BibleUserImplantComponent.cs | 11 ++++++ Resources/Locale/en-US/_NF/chapel/bible.ftl | 3 ++ Resources/Locale/en-US/_NF/traits/traits.ftl | 5 ++- .../Recipes/Reactions/single_reagent.yml | 2 +- .../_NF/Entities/Objects/Misc/implanters.yml | 8 ++++ .../Objects/Misc/subdermal_implants.yml | 11 ++++++ .../_NF/Loadouts/Jobs/Contractor/tools.yml | 21 +++++++++- .../Loadouts/contractor_loadout_groups.yml | 1 + .../Prototypes/_NF/Traits/disabilities.yml | 8 ++++ 12 files changed, 155 insertions(+), 6 deletions(-) create mode 100644 Content.Server/_NF/Implants/BibleUserImplantSystem.cs create mode 100644 Content.Shared/_NF/Implants/BibleUserImplantComponent.cs create mode 100644 Resources/Locale/en-US/_NF/chapel/bible.ftl create mode 100644 Resources/Prototypes/_NF/Traits/disabilities.yml diff --git a/Content.Server/Bible/BibleSystem.cs b/Content.Server/Bible/BibleSystem.cs index c845b17230a..6c906b97b3b 100644 --- a/Content.Server/Bible/BibleSystem.cs +++ b/Content.Server/Bible/BibleSystem.cs @@ -1,10 +1,13 @@ using Content.Server.Bible.Components; +using Content.Server.Chemistry.EntitySystems; using Content.Server.Ghost.Roles.Components; using Content.Server.Ghost.Roles.Events; using Content.Server.Popups; using Content.Shared.ActionBlocker; using Content.Shared.Actions; using Content.Shared.Bible; +using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Reaction; using Content.Shared.Damage; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; @@ -38,7 +41,8 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnAfterInteract); + SubscribeLocalEvent(OnMixingAttempt); // Frontier: restrict solution blessing to bible users + SubscribeLocalEvent(OnAfterInteract, before: [typeof(ReactionMixerSystem)]); // Frontier: add before parameter SubscribeLocalEvent>(AddSummonVerb); SubscribeLocalEvent(GetSummonAction); SubscribeLocalEvent(OnSummon); @@ -91,6 +95,19 @@ public override void Update(float frameTime) } } + // Frontier: only bible users can bless water/blood + private void OnMixingAttempt(EntityUid uid, BibleComponent component, ref MixingAttemptEvent args) + { + // Block water/blood blessing attempts by non-bible users + if (component.BlockMix) + { + _popupSystem.PopupEntity(Loc.GetString("bible-bless-solution-failed"), component.LastInteractingUser, component.LastInteractingUser, PopupType.Small); + args.Cancelled = true; + return; + } + } + // End Frontier + private void OnAfterInteract(EntityUid uid, BibleComponent component, AfterInteractEvent args) { if (!args.CanReach) @@ -99,12 +116,24 @@ private void OnAfterInteract(EntityUid uid, BibleComponent component, AfterInter if (!TryComp(uid, out UseDelayComponent? useDelay) || _delay.IsDelayed((uid, useDelay))) return; - if (args.Target == null || args.Target == args.User || !_mobStateSystem.IsAlive(args.Target.Value)) + // Frontier: only bible users can bless water/blood + if (args.Target == null) { return; } - if (!HasComp(args.User)) + // In case the user is trying to mix something, store who's using it and whether or not they're a bible user. + component.LastInteractingUser = args.User; + var hasBibleUserComponent = HasComp(args.User); + component.BlockMix = !hasBibleUserComponent; + + if (args.Target == args.User || !_mobStateSystem.IsAlive(args.Target.Value)) + { + return; + } + // End Frontier + + if (!hasBibleUserComponent) // Frontier: cache bible component lookup { _popupSystem.PopupEntity(Loc.GetString("bible-sizzle"), args.User, args.User); @@ -226,7 +255,10 @@ private void AttemptSummon(Entity ent, EntityUid user, Tran if (component.AlreadySummoned || component.SpecialItemPrototype == null) return; if (component.RequiresBibleUser && !HasComp(user)) + { + _popupSystem.PopupEntity(Loc.GetString("bible-summon-request-failed"), user, user, PopupType.Small); // Frontier: better summon feedback return; + } if (!Resolve(user, ref position)) return; if (component.Deleted || Deleted(uid)) diff --git a/Content.Server/Bible/Components/BibleComponent.cs b/Content.Server/Bible/Components/BibleComponent.cs index b7dc3db8e35..5d4e2a9d5b6 100644 --- a/Content.Server/Bible/Components/BibleComponent.cs +++ b/Content.Server/Bible/Components/BibleComponent.cs @@ -41,5 +41,20 @@ public sealed partial class BibleComponent : Component [DataField("locPrefix")] public string LocPrefix = "bible"; + + // Frontier: prevent non-bible users from blessing water/blood. + + /// + /// Whether or not a mixing attempt from this bible should be blocked. + /// + [ViewVariables] + public bool BlockMix = false; + + /// + /// The last user that interacted using the bible. + /// + [ViewVariables] + public EntityUid LastInteractingUser; + //End Frontier } } diff --git a/Content.Server/_NF/Implants/BibleUserImplantSystem.cs b/Content.Server/_NF/Implants/BibleUserImplantSystem.cs new file mode 100644 index 00000000000..01fb5582009 --- /dev/null +++ b/Content.Server/_NF/Implants/BibleUserImplantSystem.cs @@ -0,0 +1,38 @@ +using Content.Shared.Implants; +using Content.Shared.Implants.Components; +using Content.Server.Bible.Components; +using Robust.Shared.Containers; + +namespace Content.Server.Implants; + +public sealed class BibleUserImplantSystem : EntitySystem +{ + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInsert); + // We need to remove the BibleUserComponent from the owner before the implant + // is removed, so we need to execute before the SubdermalImplantSystem. + SubscribeLocalEvent(OnRemove, before: new[] { typeof(SubdermalImplantSystem) }); + } + + private void OnInsert(EntityUid uid, BibleUserImplantComponent component, ImplantImplantedEvent args) + { + if (!args.Implanted.HasValue) + return; + + var bibleUserComp = EnsureComp(args.Implanted.Value); + Dirty(args.Implanted.Value, bibleUserComp); + } + + // Currently permanent, but should support removal if/when a viable solution is found. + private void OnRemove(EntityUid uid, BibleUserImplantComponent component, EntGotRemovedFromContainerMessage args) + { + if (!TryComp(uid, out var implanted) || implanted.ImplantedEntity == null) + return; + + RemComp(implanted.ImplantedEntity.Value); + } +} diff --git a/Content.Shared/_NF/Implants/BibleUserImplantComponent.cs b/Content.Shared/_NF/Implants/BibleUserImplantComponent.cs new file mode 100644 index 00000000000..4f0e0e6ae6b --- /dev/null +++ b/Content.Shared/_NF/Implants/BibleUserImplantComponent.cs @@ -0,0 +1,11 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Implants.Components; + +/// +/// Implant to get BibleUser status (to pray, summon familiars, bless with bibles) +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class BibleUserImplantComponent : Component +{ +} diff --git a/Resources/Locale/en-US/_NF/chapel/bible.ftl b/Resources/Locale/en-US/_NF/chapel/bible.ftl new file mode 100644 index 00000000000..b85c4f3eb8e --- /dev/null +++ b/Resources/Locale/en-US/_NF/chapel/bible.ftl @@ -0,0 +1,3 @@ +bible-summon-request-failed = You don't feel worthy enough... + +bible-bless-solution-failed = You don't feel worthy enough... diff --git a/Resources/Locale/en-US/_NF/traits/traits.ftl b/Resources/Locale/en-US/_NF/traits/traits.ftl index 569153d67fc..f462ee8b97b 100644 --- a/Resources/Locale/en-US/_NF/traits/traits.ftl +++ b/Resources/Locale/en-US/_NF/traits/traits.ftl @@ -7,4 +7,7 @@ trait-stinky-in-range-others = {$target} smells foul! trait-stinky-in-range-self = Something smells foul! trait-goblin-accent-name = Goblin Cant -trait-goblin-accent-desc = You speak in secret language many find annoying and not that secretive. \ No newline at end of file +trait-goblin-accent-desc = You speak in secret language many find annoying and not that secretive. + +trait-pious-name = Pious +trait-pious-desc = You are in touch with the gods, but your vows keep you from striking in anger. \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Reactions/single_reagent.yml b/Resources/Prototypes/Recipes/Reactions/single_reagent.yml index 46fe35415f0..db040ed921b 100644 --- a/Resources/Prototypes/Recipes/Reactions/single_reagent.yml +++ b/Resources/Prototypes/Recipes/Reactions/single_reagent.yml @@ -33,7 +33,7 @@ products: Syrup: 0.1 #12:1 sap to syruop -# Holy - TODO: make it so only the chaplain can use the bible to start these reactions, not anyone with a bible +# Holy - type: reaction id: BloodToWine diff --git a/Resources/Prototypes/_NF/Entities/Objects/Misc/implanters.yml b/Resources/Prototypes/_NF/Entities/Objects/Misc/implanters.yml index 04b0b01ce79..821e7f22d11 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Misc/implanters.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Misc/implanters.yml @@ -25,3 +25,11 @@ components: - type: Implanter implant: DeathAcidifierImplantNF + +- type: entity + id: BibleUserImplanter + name: faith implanter + parent: BaseImplantOnlyImplanter + components: + - type: Implanter + implant: BibleUserImplant diff --git a/Resources/Prototypes/_NF/Entities/Objects/Misc/subdermal_implants.yml b/Resources/Prototypes/_NF/Entities/Objects/Misc/subdermal_implants.yml index 517d950ffbc..a02d43f69a5 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Misc/subdermal_implants.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Misc/subdermal_implants.yml @@ -77,3 +77,14 @@ - SubdermalImplant - HideContextMenu - DeathAcidifier + +- type: entity + parent: BaseSubdermalImplant + id: BibleUserImplant + name: faith implant + description: This implant binds the user to the gods. + noSpawn: true + components: + - type: SubdermalImplant + permanent: true + - type: BibleUserImplant diff --git a/Resources/Prototypes/_NF/Loadouts/Jobs/Contractor/tools.yml b/Resources/Prototypes/_NF/Loadouts/Jobs/Contractor/tools.yml index c76e3b45ff9..c23a4c4c577 100644 --- a/Resources/Prototypes/_NF/Loadouts/Jobs/Contractor/tools.yml +++ b/Resources/Prototypes/_NF/Loadouts/Jobs/Contractor/tools.yml @@ -180,4 +180,23 @@ - type: startingGear id: ContractorHypoMini inhand: - - HypoMini \ No newline at end of file + - HypoMini + +- type: loadout + id: ContractorBible + equipment: ContractorBible + name: bible and faith implanter + description: For the budding Chaplain. Perform miracles, proselytize, and grow your flock. + previewEntity: Bible + effects: + - !type:GroupLoadoutEffect + proto: ContractorT2 + price: 5000 + +- type: startingGear + id: ContractorBible + inhand: + - Bible + storage: + back: + - BibleUserImplanter diff --git a/Resources/Prototypes/_NF/Loadouts/contractor_loadout_groups.yml b/Resources/Prototypes/_NF/Loadouts/contractor_loadout_groups.yml index a624b718f63..6699d2d21cb 100644 --- a/Resources/Prototypes/_NF/Loadouts/contractor_loadout_groups.yml +++ b/Resources/Prototypes/_NF/Loadouts/contractor_loadout_groups.yml @@ -616,6 +616,7 @@ - ContractorShipyardRCD - ContractorHandheldCrewMonitor - ContractorHypoMini + - ContractorBible - type: loadoutGroup id: ContractorFun # Left Hand - 1 only diff --git a/Resources/Prototypes/_NF/Traits/disabilities.yml b/Resources/Prototypes/_NF/Traits/disabilities.yml new file mode 100644 index 00000000000..4bf604626d8 --- /dev/null +++ b/Resources/Prototypes/_NF/Traits/disabilities.yml @@ -0,0 +1,8 @@ +- type: trait + id: Pious + name: trait-pious-name + description: trait-pious-desc + traitGear: Bible + components: + - type: BibleUser + - type: Pacified # if this wasn't so debilitating, this trait would be elsewhere From 1cc4bb2355d28ac1a5b873556181e747673df845 Mon Sep 17 00:00:00 2001 From: FrontierATC Date: Thu, 13 Jun 2024 23:45:41 +0000 Subject: [PATCH 11/16] Automatic Changelog (#1486) --- Resources/Changelog/Changelog.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3d50b95d8c4..6040f7ac66b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5033,3 +5033,13 @@ Entries: compound on wielded penalty. id: 5034 time: '2024-06-13T23:18:43.0000000+00:00' +- author: whatston3 + changes: + - type: Add + message: >- + Characters can now select the Pious trait to start with a bible, the + ability to use it, and a vow of pacifism. + - type: Tweak + message: Water and blood can only be blessed with a bible if the user is Pious. + id: 5035 + time: '2024-06-13T23:45:16.0000000+00:00' From 52d8a014fb4ffaf841e4b91cd66caf527f08460e Mon Sep 17 00:00:00 2001 From: AndresE55 <80334192+Leander-0@users.noreply.github.com> Date: Thu, 13 Jun 2024 20:02:44 -0400 Subject: [PATCH 12/16] Dragon Egg Update (#1448) * new dragon egg * dragon omelette * new sprites * mind transfer and animations * port dragon's breath from wizden * dragon egg update * baby dragon update * fix JSONs * fix baby dragon YML * no clue how this broke * Update dragon.yml * fix issues * dragon update last fixes * dragon update last fixes v2 * dungeon dragon egg --------- Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: Dvir Co-authored-by: Dvir <39403717+dvir001@users.noreply.github.com> --- .../TransferMindOnDespawnComponent.cs | 17 ++ .../_NF/Transfer/TransferMindOnDespawn.cs | 37 ++++ .../_NF/ghost/roles/ghost-role-component.ftl | 4 + .../Entities/Mobs/Player/dragon.yml | 6 + .../_NF/Entities/Mobs/NPCs/baby_dragon.yml | 172 ++++++++++++++++++ .../Objects/Consumable/Food/meals.yml | 30 +++ .../Guns/Projectiles/baby_dragon_fire.yml | 46 +++++ Resources/Prototypes/_NF/Misc/dragon_egg.yml | 122 +++++++++++++ .../_NF/Recipes/Cooking/meal_recipes.yml | 15 +- .../_NF/Effects/bloodcultbeams.rsi/meta.json | 2 +- .../_NF/Effects/dragonspawn.rsi/dragon.png | Bin 0 -> 3961 bytes .../_NF/Effects/dragonspawn.rsi/meta.json | 38 ++++ .../Pets/baby_dragon.rsi/alive-unshaded.png | Bin 0 -> 324 bytes .../_NF/Mobs/Pets/baby_dragon.rsi/alive.png | Bin 0 -> 4403 bytes .../_NF/Mobs/Pets/baby_dragon.rsi/crit.png | Bin 0 -> 680 bytes .../Pets/baby_dragon.rsi/dead-unshaded.png | Bin 0 -> 109 bytes .../_NF/Mobs/Pets/baby_dragon.rsi/dead.png | Bin 0 -> 680 bytes .../_NF/Mobs/Pets/baby_dragon.rsi/meta.json | 80 ++++++++ .../Consumable/Food/dragon_egg.rsi/broken.png | Bin 0 -> 584 bytes .../Consumable/Food/dragon_egg.rsi/icon.png | Bin 0 -> 513 bytes .../Food/dragon_egg.rsi/inhand-left.png | Bin 0 -> 1010 bytes .../Food/dragon_egg.rsi/inhand-right.png | Bin 0 -> 1010 bytes .../Consumable/Food/dragon_egg.rsi/meta.json | 25 +++ .../Food/dragonomelette.rsi/icon.png | Bin 0 -> 1085 bytes .../Food/dragonomelette.rsi/meta.json | 14 ++ 25 files changed, 606 insertions(+), 2 deletions(-) create mode 100644 Content.Server/_NF/Transfer/Components/TransferMindOnDespawnComponent.cs create mode 100644 Content.Server/_NF/Transfer/TransferMindOnDespawn.cs create mode 100644 Resources/Prototypes/_NF/Entities/Mobs/NPCs/baby_dragon.yml create mode 100644 Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Projectiles/baby_dragon_fire.yml create mode 100644 Resources/Prototypes/_NF/Misc/dragon_egg.yml create mode 100644 Resources/Textures/_NF/Effects/dragonspawn.rsi/dragon.png create mode 100644 Resources/Textures/_NF/Effects/dragonspawn.rsi/meta.json create mode 100644 Resources/Textures/_NF/Mobs/Pets/baby_dragon.rsi/alive-unshaded.png create mode 100644 Resources/Textures/_NF/Mobs/Pets/baby_dragon.rsi/alive.png create mode 100644 Resources/Textures/_NF/Mobs/Pets/baby_dragon.rsi/crit.png create mode 100644 Resources/Textures/_NF/Mobs/Pets/baby_dragon.rsi/dead-unshaded.png create mode 100644 Resources/Textures/_NF/Mobs/Pets/baby_dragon.rsi/dead.png create mode 100644 Resources/Textures/_NF/Mobs/Pets/baby_dragon.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Consumable/Food/dragon_egg.rsi/broken.png create mode 100644 Resources/Textures/_NF/Objects/Consumable/Food/dragon_egg.rsi/icon.png create mode 100644 Resources/Textures/_NF/Objects/Consumable/Food/dragon_egg.rsi/inhand-left.png create mode 100644 Resources/Textures/_NF/Objects/Consumable/Food/dragon_egg.rsi/inhand-right.png create mode 100644 Resources/Textures/_NF/Objects/Consumable/Food/dragon_egg.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Consumable/Food/dragonomelette.rsi/icon.png create mode 100644 Resources/Textures/_NF/Objects/Consumable/Food/dragonomelette.rsi/meta.json diff --git a/Content.Server/_NF/Transfer/Components/TransferMindOnDespawnComponent.cs b/Content.Server/_NF/Transfer/Components/TransferMindOnDespawnComponent.cs new file mode 100644 index 00000000000..aa3502bab3e --- /dev/null +++ b/Content.Server/_NF/Transfer/Components/TransferMindOnDespawnComponent.cs @@ -0,0 +1,17 @@ +using Robust.Shared.Prototypes; + +namespace Content.Server._NF.Transfer.Components; +/// +/// Its not fancy but it works for an in-between animations used on +/// hatching animation of the baby dragon +/// + +[RegisterComponent] +public sealed partial class TransferMindOnDespawnComponent : Component +{ + /// + /// The entity prototype to move the mind to after the animation. + /// + [DataField(required: true)] + public EntProtoId EntityPrototype = default!; +} diff --git a/Content.Server/_NF/Transfer/TransferMindOnDespawn.cs b/Content.Server/_NF/Transfer/TransferMindOnDespawn.cs new file mode 100644 index 00000000000..2e9f06fd516 --- /dev/null +++ b/Content.Server/_NF/Transfer/TransferMindOnDespawn.cs @@ -0,0 +1,37 @@ +using Content.Shared.Mind; +using Robust.Shared.Spawners; +using Robust.Shared.Prototypes; +using Content.Server._NF.Transfer.Components; + +namespace Content.Server._NF.Transfer; + +/// +/// Meant to be used along "TimedDespawn" component to transfer the player mind +/// after the animation for a smooth transition between entities +/// +public sealed class TransferMindOnDespawnSystem : EntitySystem +{ + [Dependency] private readonly SharedMindSystem _mindSystem = default!; + [Dependency] private readonly IPrototypeManager _protoManager= default!; + + ///Subscribe to the despawn event + public override void Initialize() + { + SubscribeLocalEvent(OnDespawnTransfer); + } + + private void OnDespawnTransfer(EntityUid uid, TransferMindOnDespawnComponent component, TimedDespawnEvent args) + { + if (!_mindSystem.TryGetMind(uid, out var mindId, out var mind)) + return; + + if (!_protoManager.TryIndex(component.EntityPrototype, out var entityProto)) + return; + + ///Spawn new entity on the same place where the animation ends and transfer the mind to the new entity + var coords = Transform(uid).Coordinates; + var dragon = EntityManager.SpawnAtPosition(entityProto.ID, coords); + + _mindSystem.TransferTo(mindId, dragon, mind: mind); + } +} diff --git a/Resources/Locale/en-US/_NF/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/_NF/ghost/roles/ghost-role-component.ftl index e7fd2aff5a3..fe8111d8220 100644 --- a/Resources/Locale/en-US/_NF/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/_NF/ghost/roles/ghost-role-component.ftl @@ -22,3 +22,7 @@ ghost-role-information-ert-mailcarrier-description = Assist with paperworks effo ghost-role-information-jerma-name = Jerma ghost-role-information-jerma-description = Pog moment + +ghost-role-information-baby-dragon-name = Baby space dragon +ghost-role-information-baby-dragon-description = Hatch from your egg and go on incredible adventures with your mom and their crew! +ghost-role-information-baby-dragon-rules = You are about to hatch from your egg, make sure to know who is your mom, be loyal and protect their crew! diff --git a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml index 76260bb9e83..51e41e26077 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml @@ -190,11 +190,17 @@ spawned: - id: FoodMeatDragon amount: 3 + - id: DragonEgg #Frontier + amount: 1 #Frontier + prob: 0.3 #Frontier # half damage, spread evenly - type: MeleeWeapon damage: groups: Brute: 12 + - type: ActionGun #Frontier + action: ActionDragonsBreath #Frontier + gunProto: DragonsBreathGun #Frontier - type: SalvageMobRestrictionsNF # Frontier - type: entity diff --git a/Resources/Prototypes/_NF/Entities/Mobs/NPCs/baby_dragon.yml b/Resources/Prototypes/_NF/Entities/Mobs/NPCs/baby_dragon.yml new file mode 100644 index 00000000000..de669d89e6d --- /dev/null +++ b/Resources/Prototypes/_NF/Entities/Mobs/NPCs/baby_dragon.yml @@ -0,0 +1,172 @@ +- type: entity + parent: + - SimpleSpaceMobBase + - FlyingMobBase + id: MobDragonPet + name: baby space dragon + description: Even a flying leviathan starts off small and from an egg. + components: + - type: Body + prototype: Animal + - type: Climbing + - type: NameIdentifier + group: GenericNumber + - type: SlowOnDamage + speedModifierThresholds: + 60: 0.7 + 80: 0.5 + - type: MobPrice + price: 2000 + - type: Perishable + - type: Hunger + thresholds: + Overfed: 100 + Okay: 50 + Peckish: 25 + Starving: 10 + Dead: 0 + baseDecayRate: 0.00925925925926 # Guy needs to eat and drink + - type: Thirst + thresholds: + OverHydrated: 200 + Okay: 150 + Thirsty: 100 + Parched: 50 + Dead: 0 + baseDecayRate: 0.04 + - type: StatusEffects + allowed: + - Stun + - KnockedDown + - SlowedDown + - Stutter + - Electrocution + - ForcedSleep + - TemporaryBlindness + - Pacified + - StaminaModifier + - type: Bloodstream + bloodMaxVolume: 650 + - type: FloatingVisuals + - type: NpcFactionMember + factions: + - Dragon + - PetsNT + - type: Speech + speechVerb: SmallMob + - type: HTN + rootTask: + task: MouseCompound + - type: CombatMode + - type: MobMover + - type: InputMover + - type: MovementSpeedModifier + baseWalkSpeed: 3 + baseSprintSpeed: 5 + weightlessModifier: 1.5 + - type: RandomSprite + available: + - enum.DamageStateVisualLayers.Base: + alive: Rainbow + - type: Sprite + sprite: _NF/Mobs/Pets/baby_dragon.rsi + noRot: true + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: alive + - map: [ "enum.DamageStateVisualLayers.BaseUnshaded" ] + state: alive-unshaded + shader: unshaded + - type: Appearance + - type: DamageStateVisuals + states: + Alive: + Base: alive + BaseUnshaded: alive-unshaded + Critical: + Base: crit + Dead: + Base: dead + BaseUnshaded: dead-unshaded + - type: Physics + bodyType: KinematicController + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.40 + density: 100 + mask: + - FlyingMobMask + layer: + - FlyingMobLayer + - type: MobState + - type: MobStateActions + actions: + Critical: + - ActionCritSuccumb + - ActionCritLastWords + - type: MobThresholds + thresholds: + 0: Alive + 200: Critical + 300: Dead + - type: Metabolizer + solutionOnBody: false + metabolizerTypes: [ Dragon ] + groups: + - id: Medicine + - id: Poison + - type: Butcherable + spawned: + - id: FoodMeatDragon + amount: 1 + - type: InteractionPopup + successChance: 0.85 # It's no goose, but you better smell like carp. + interactSuccessString: petting-success-dragon + interactFailureString: petting-failure-dragon + interactFailureSound: + path: /Audio/Animals/space_dragon_roar.ogg + soundPerceivedByOthers: false # A 75% chance for a loud roar would get old fast. + - type: MeleeWeapon + altDisarm: false + angle: 0 + animation: WeaponArcBite + soundHit: + path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg + damage: + types: + Piercing: 5 + Slash: 5 + - type: Puller + needsHands: false + - type: ReplacementAccent + accent: genericAggressive + - type: Tag + tags: + - CannotSuicide + - DoorBumpOpener + - type: ActionGun + action: ActionDragonsBreath + gunProto: BabyDragonsSparkGun + +- type: entity + noSpawn: true + id: BabyDragonsSparkGun + name: baby dragon's spark + description: For dragon's breathing + components: + - type: RechargeBasicEntityAmmo + rechargeCooldown: 120 + rechargeSound: + path: /Audio/Animals/space_dragon_roar.ogg + - type: BasicEntityAmmoProvider + proto: BabyDragonSpark + capacity: 1 + count: 1 + - type: Gun + soundGunshot: + path: /Audio/Animals/space_dragon_roar.ogg + soundEmpty: null + projectileSpeed: 15 diff --git a/Resources/Prototypes/_NF/Entities/Objects/Consumable/Food/meals.yml b/Resources/Prototypes/_NF/Entities/Objects/Consumable/Food/meals.yml index d68d51dc773..abcb5740e4f 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Consumable/Food/meals.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Consumable/Food/meals.yml @@ -66,3 +66,33 @@ groups: Brute: 1 - type: FriedTrait + +- type: entity + name: dragon omelette + parent: FoodMealBase + id: FoodMealDragonOmelette + description: + components: + - type: FlavorProfile + flavors: + - egg + - fishy + - salty + - peppery + - type: Sprite + sprite: _NF/Objects/Consumable/Food/dragonomelette.rsi + state: icon + - type: SolutionContainerManager + solutions: + food: + maxVol: 40 + reagents: + - ReagentId: Nutriment + Quantity: 15 + - ReagentId: Flavorol + Quantity: 10 + - ReagentId: Ichor + Quantity: 12 + - type: Tag + tags: + - Meat diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Projectiles/baby_dragon_fire.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Projectiles/baby_dragon_fire.yml new file mode 100644 index 00000000000..8393ccb0ce3 --- /dev/null +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Projectiles/baby_dragon_fire.yml @@ -0,0 +1,46 @@ +- type: entity + id: BabyDragonSpark + name: dragon ember spark + noSpawn: true + components: + - type: Physics + bodyType: Dynamic + fixedRotation: false + - type: EmbeddableProjectile + deleteOnRemove: true + - type: Fixtures + fixtures: + projectile: + shape: + !type:PhysShapeAabb + bounds: "-0.1,-0.1,0.1,0.1" + mask: + - BulletImpassable + - type: Sprite + sprite: Objects/Weapons/Guns/Projectiles/projectiles2.rsi + state: buckshot-flare + - type: IgnitionSource + ignited: true + temperature: 1000 + - type: TimedDespawn + lifetime: 240 + - type: AmbientSound + enabled: true + volume: 0 + range: 7 + sound: + path: /Audio/Items/Flare/flare_burn.ogg + params: + loop: true + - type: IgniteOnCollide + fireStacks: 1 + - type: PointLight + enabled: true + color: "#E25822" + radius: 7.0 + energy: 5.0 + - type: Projectile + deleteOnCollide: false + damage: + types: + Heat: 5 diff --git a/Resources/Prototypes/_NF/Misc/dragon_egg.yml b/Resources/Prototypes/_NF/Misc/dragon_egg.yml new file mode 100644 index 00000000000..2a15f56aba1 --- /dev/null +++ b/Resources/Prototypes/_NF/Misc/dragon_egg.yml @@ -0,0 +1,122 @@ +- type: entity + parent: FoodEggBase + id: DragonEgg + name: dragon egg + description: How many did you kill just to get one of these eggs. + components: + - type: Sprite + sprite: _NF/Objects/Consumable/Food/dragon_egg.rsi + state: icon + - type: Item + sprite: _NF/Objects/Consumable/Food/dragon_egg.rsi + size: Large + - type: MultiHandedItem + - type: Food + trash: DragonEggshells + - type: DamageOnHighSpeedImpact + minimumSpeed: 0.1 + damage: + types: + Blunt: 1 + - type: Damageable + damageContainer: Biological + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 1 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: desecration + - !type:SpillBehavior + solution: food + - !type:SpawnEntitiesBehavior + spawn: + DragonEggshells: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: GhostRole + name: ghost-role-information-baby-dragon-name + description: ghost-role-information-baby-dragon-description + rules: ghost-role-information-baby-dragon-rules + requirements: + - !type:WhitelistRequirement + - type: GhostRoleMobSpawner + prototype: MobSpawnBabyDragon + - type: SolutionContainerManager + solutions: + food: + maxVol: 36 + reagents: + - data: null + ReagentId: Egg + Quantity: 12 + - data: null + ReagentId: Ichor + Quantity: 12 + - data: null + ReagentId: Vitamin + Quantity: 12 + - type: StaticPrice + price: 20000 + +- type: entity + name: dragon eggshells + parent: BaseItem + id: DragonEggshells + description: You're walkin' on 'em bud. + components: + - type: Sprite + sprite: _NF/Objects/Consumable/Food/dragon_egg.rsi + state: broken + - type: Food + - type: Item + sprite: Objects/Consumable/Food/egg.rsi + size: Large + - type: SolutionContainerManager + solutions: + food: + maxVol: 2 + reagents: + - ReagentId: Egg + Quantity: 1 + - type: Tag + tags: + - Egg + - Trash + - type: SpaceGarbage + +- type: entity #This is only for the hatching animation since this is an in between from picking the ghost role and becoming the dragon + id: MobSpawnBabyDragon + name: mobspawner dragon + noSpawn: true + components: + - type: Transform + anchored: True + - type: InteractionOutline + - type: Physics + bodyType: Static + - type: Sprite + sprite: _NF/Effects/dragonspawn.rsi + state: dragon + - type: EmitSoundOnSpawn + sound: + path: /Audio/Nyanotrasen/shogi_piece_clack.ogg + - type: Fixtures + fixtures: + portalFixture: + shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.48,0.25,0.48" + mask: + - FullTileMask + layer: + - WallLayer + hard: false + - type: TimedDespawn + lifetime: 3.5 + - type: TransferMindOnDespawn + entityPrototype: MobDragonPet diff --git a/Resources/Prototypes/_NF/Recipes/Cooking/meal_recipes.yml b/Resources/Prototypes/_NF/Recipes/Cooking/meal_recipes.yml index d9cc13c2299..7082b470887 100644 --- a/Resources/Prototypes/_NF/Recipes/Cooking/meal_recipes.yml +++ b/Resources/Prototypes/_NF/Recipes/Cooking/meal_recipes.yml @@ -17,10 +17,23 @@ name: cat crispy recipe result: MobCatCrispy time: 15 - reagents: + reagents: Cornoil: 10 Cognizine: 5 solids: FoodMealFries: 1 FoodOnionRings: 1 OrganAnimalHeart: 1 + +- type: microwaveMealRecipe + id: RecipeDragonOmelette + name: dragon omelette recipe + result: FoodMealDragonOmelette + time: 15 + solids: + FoodButter: 1 + reagents: + Ichor: 12 + Egg: 12 + TableSalt: 5 + Blackpepper: 5 diff --git a/Resources/Textures/_NF/Effects/bloodcultbeams.rsi/meta.json b/Resources/Textures/_NF/Effects/bloodcultbeams.rsi/meta.json index 66ac7d37049..5ff716ccfae 100644 --- a/Resources/Textures/_NF/Effects/bloodcultbeams.rsi/meta.json +++ b/Resources/Textures/_NF/Effects/bloodcultbeams.rsi/meta.json @@ -32,4 +32,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/_NF/Effects/dragonspawn.rsi/dragon.png b/Resources/Textures/_NF/Effects/dragonspawn.rsi/dragon.png new file mode 100644 index 0000000000000000000000000000000000000000..123828093d545bce3594f9c0f1f6076176dc5ef0 GIT binary patch literal 3961 zcmV-<4~FoGP)Px#1ZP1_K>z@;j|==^1pojK2}wjjRCr$Pojs^7M;U;>dkQP7AOtnJVk8hr1Wy@M zEHp)mn@GBd2*wM-RUu6p37Q14Ns~gspeR_FPBga^E0tSDFrp$Ra1;MPtOUCp_n9;A z=H2(q?9S}Y%${@ZJTQFwJMZtjyWgIj?;JXvPN&o9bUJq)SNvx(58ZdqiC=WQ{>Izc zeOwkUgD1X) z4=;V^xu(9*i2Ymql2idSx8Hi(eSYx12M&*a>1(6mwKAVRWyI}0+AOVop%K44@r9?{ z`dYutCV&V51c?v~|JxgXI^4c}+ZpagL3twogU#LVZuklNA z1-N?k>f!h^k4=)`>U;io_{ERE>oTr|;mCaE*>5!;ZI<)k3yoBwHGYXEfMon=%rN>M ze&9pyTB8kT9k}+CWNyT@9BnY?3!$bjG^PDAUjc^iwg~&#FMsU}q|`n9>CcWgJ<@7p zM;v9Z`Dlyyg7V9@R=&`b@JsehAck|(qqDy>DI>1MXj?*jA2mTQh& zR}d3Mc!(N7h&jBavn_l1LQ~o=NlGG=PbYY|?u-oAqnZXU zIlQ*BL+s@XO-a9GDJsTmS{Tdc#NiE{9b*q)XiE8I7w4_PI()CdpEtT+I-O3Z)9G|N zold9I>2x}sPN%a#e{P(~WqbC%N%=eN4-wcq`7`WY7k_&EYQ-<3Gv;vi^1hva*^+nv zV6Q3RrC6o39r=4WL+emmo+LXjf-)I{8NqJdzlFmaIs6^|BHEojF+`lftJ%W%Zd{`o zyP|_@!>Ft&kG{t@efmk-ykUw6M*P`d)uv^zNg z=A6NlZMM~%v5S0LeQeUzyq zB1^VwT}m@&Hw@nbHrt(E0Rqlox%K?`Q1xk9dAQuY`0eK>$=`y|CFt5GKEB!RO*erA zU*^Zxa{f~FA^B>SVfw~C9RJdfUU4>WnT?yulHJ4pB6epbfOdvli&{7%R(;R~SgwMZ ziHi=%mj*Z=yV+Nq1-naB-1G!6&X6Q%`qo#el6n_da))Q88vG9RD@JpnRMrMMc%(4*cx z@AvZoXv03gCk@-5r6<5Tsw4q{;!nNu=U(7>KY#Y+JpfuFqMz0?sPm=-knCE@vde(j zH+;G_z`C^JXn#r)7_@xb9O%hC1C3Y6b)UlO1fVmnPh)$q-2}~+V3XLIaxIqQ{pu#Z z`IRTfeh6Y93Fb)BVO0V+hxiu~X}qb@dX{brutiGp!nIgz*0yK)!TEGZGC^hn`6O_C z$!Jc6W6{&-Iw3m&L{a%~-Y~u!ND>VDIL2+LjF+QZb!M)`jQlZ3v635OIA`*;PR|7L zefd4<$jl*{ygXvbN&pPfqd|Tw;pT6DHzq+$P-(=u#xYHjz;beO;@VaQKfap;Y9^4p z`ga$}<8u)`AXJ5L7P@Rj2jltg|J0RWTathO*VAcRnpkC6QjBmNS(3EsJwae<`s08XAUHC2y84( zFe@yQl_&>{Is(BBn1FLY2Psr?*5VR?!1@Uh=)zn%^L*#qi=LIaYC^tzlNdO7B{dev-oc+KtBmD*kA0B1eE=2v2sAmqUoDM z3ss2yk_;r2TgYc?@PR&N`$A5#mFCrQ{M0X0(Q2{bo*Fy6TjH;?E; zlO&jf1R2f^zEi=o6_vMiL)LCX+GFp^CNUv3m- zyCj2p(K!dEFi&rAX5-o?$6UOC%;L+YGISGMBp{Lf8RIdI$HUF<0$DY`=nUZX(<8L z{xCENAm5AtU67@9y3h%*2R7+oa3~)WU&?Vg380ZnjynI0To>TsJpY(?vY$jH0d->0 zAM^y+KqLV+`_U%BQuW|?eGd{kRw|JYx+L`kI7jH@nhU-SEW{Ef$)*#JEW3@DjM={h@Uh%Vk)2;JEfvzB1b7d%-?$fOW&;gg_(5EG|oo(ly*l1(Bo}RRkG5GrH3H=-Svh0pE z4fJPdpWT*)k6RVIh*YdCa=!iy?X%mWj1|ED^~#>${+J+7kP6^N-XO=XzMFXJMuv5k zW6I0+(EixASYKyY5u_|K`i~ta+e7ov7 zd8EJEZGuy92fTQV)w5O`iIpJ&=N9HG)#-j~i(S`!49jkXBnV7an4VaVQEns<%@BWh zn%i#!AS5RMV1#v~Ue$eYtY5UW4usR=93{Xm_Q#$BIKASrnv&zhy&c|}5=?*+L6QVY zO`^^|9C0%?b5m9wC3}}l84~ooWaut>9Pt&9SB7{F;GfPlO$21Chd`aiOdQWhls8{% zGBfIGB%jE#eUCb{xGxc#tt{h<=JsphRU8pA+!(E?=>U-a&&aP~yGGkAvI2f+ZvW&a zFrd%`nG%Kmw1vZiEXdINSk`UwH-wdpeOa_#EL;4pBKR&ted=v2>sEs0zR1oL{EeGm zi*wrRW}GbDM1Dfsj5lR9zMCyrn{wJL!E8uTngm`tERyB9Eb21DX89!oxX}+)?GHW& zNKv?eUs6~j1l^_S^RxT9pux|we^$8?4uB0#$dPYlgw9RYV~g$DUiz6^U!c1Eu}8th zg1>>riYq$(=L<{qEOT%VzS8Oj2IHK zCq;j4q;^WC@n?nSBl2utvwCQqLsuGgx~baIQXo zOJ7lRz;lBS3+FVk-~E`u_`?Ku-|v2wME?p_Oh+5nxj>7dE0Q7GsRJXySuVu`U8_3Y{urm17$X3RV zoIL{x1T(RMjMPp-9sKha@F|DG{{boQ;o76N3O)b;01jnXNoGw=04e|g00;m800000 T0Mb*F00000NkvXXu0mjf)mD^7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Effects/dragonspawn.rsi/meta.json b/Resources/Textures/_NF/Effects/dragonspawn.rsi/meta.json new file mode 100644 index 00000000000..0cf0f642703 --- /dev/null +++ b/Resources/Textures/_NF/Effects/dragonspawn.rsi/meta.json @@ -0,0 +1,38 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-4.0", + "copyright": "Created by @Stagnation on frontier discord server", + "states": [ + { + "name": "dragon", + "delays": [ + [ + 0.1, + 0.5, + 0.1, + 0.5, + 0.1, + 0.5, + 0.1, + 0.5, + 0.1, + 0.5, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + + ] + ] + } + ] +} + + + diff --git a/Resources/Textures/_NF/Mobs/Pets/baby_dragon.rsi/alive-unshaded.png b/Resources/Textures/_NF/Mobs/Pets/baby_dragon.rsi/alive-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..1a1e06a7244083ace25201b781f0d78e043f584b GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|{&~7MhE&XX zdq=V9uz>*cfqg3f|0g$k_icH=x8?fOwUSbca#)!5?7It8$`H3^>$MWLe<%O$s{6a6 z-u6Emt4#$P*N)>neW^bfK16cXujQ1~FpE5J@zZ+wWJV{WfSgSYr}#lS!Qepk9Jkbx z$J=%`oPGaq$Vw1Uy~+T-G@yGywo0zjinP literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Mobs/Pets/baby_dragon.rsi/alive.png b/Resources/Textures/_NF/Mobs/Pets/baby_dragon.rsi/alive.png new file mode 100644 index 0000000000000000000000000000000000000000..a608ac61b215578a9623a04c0509325149000270 GIT binary patch literal 4403 zcmb_gX*d+z+n*VeLAFuJk|i2KgNS4qlg7TLMuTGPds2ABG$!jv(ZY<%7KtbOuEf~N zRw#_22U!Y(48lyt_|Nk^*Y*GKetF*y?{(eh-1l|Pea^Xm*SXI*zw4wp*qI9nNC^M{ z03k~Ylp|LY{w{pH+`1Ft(a%-DTaM-?fQo@*O8|iAswL|D<*4k{YXìk=%umta2 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 JDon6({{b9obz%Sj literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Mobs/Pets/baby_dragon.rsi/crit.png b/Resources/Textures/_NF/Mobs/Pets/baby_dragon.rsi/crit.png new file mode 100644 index 0000000000000000000000000000000000000000..071839f21e6657dd7790e168a99f9f58f95f3bae GIT binary patch literal 680 zcmV;Z0$2TsP)Px%Vo5|nR9J=WRy&T{FccgIn^q+&f=vV$s#UlYT=*1%52K^#Ac7CznuVcl1XV0~ z0jEeF^Y}<=Z9qke9l)?ieP%fCLjvFU#*Q$?JWKPXdq4IflmvXdEX$!J@URDY2}CU4 z;qz}hAnokB4qexQkB4DML>gnBN~z>~Z#iI$c@o*}b^`zm!+>d;u&!%(&U=rhX<)5| za}EGN6B8*J<0)&SHloB2%f1DvV^z@?|n2TVFd1i6p=VkQl1kcN#}Wn zQYw_7yid;*8&OVW-}hmz?|V4s!cU^EYdGgZxV-ntPbn2Ovmk)0qU`VcJ|q`ilLJaA z%<~*#Pydv(T&NVyT`cwiBDB`xa=CXRQjKLPy86YYj#EB+MoKX)enZ}1zb`0$-g99aJV O0000Ygr+ArY-_ z&pYxmFmN0(_%qwi<%2?F*ugMX28II9Njc_ke%79MVLsl^{`0cnCJCSx22WQ%mvv4F FO#rhiANv3R literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Mobs/Pets/baby_dragon.rsi/dead.png b/Resources/Textures/_NF/Mobs/Pets/baby_dragon.rsi/dead.png new file mode 100644 index 0000000000000000000000000000000000000000..071839f21e6657dd7790e168a99f9f58f95f3bae GIT binary patch literal 680 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 DJyzsE literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Consumable/Food/dragonomelette.rsi/meta.json b/Resources/Textures/_NF/Objects/Consumable/Food/dragonomelette.rsi/meta.json new file mode 100644 index 00000000000..273446cf5ee --- /dev/null +++ b/Resources/Textures/_NF/Objects/Consumable/Food/dragonomelette.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by @GentleButter on discord and edited by @Stagnation on discord", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + } + ] +} From de8386afdbe2fc02a681c022e026af1d699efbdf Mon Sep 17 00:00:00 2001 From: FrontierATC Date: Fri, 14 Jun 2024 00:03:09 +0000 Subject: [PATCH 13/16] Automatic Changelog (#1448) --- Resources/Changelog/Changelog.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 6040f7ac66b..2896745a500 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5043,3 +5043,17 @@ Entries: message: Water and blood can only be blessed with a bible if the user is Pious. id: 5035 time: '2024-06-13T23:45:16.0000000+00:00' +- author: Leander + changes: + - type: Add + message: >- + New dragon egg and baby dragon are now more easy to find on this dragon + hunting season, don't forget to butcher them! + - type: Add + message: >- + Dragon DNA evolved and there has been sights of them spitting walls of + flames. + - type: Add + message: New omelette recipe using expensive hard to find ingredients. + id: 5036 + time: '2024-06-14T00:02:44.0000000+00:00' From 4586a3479173869779386e35acb51b4b59669df6 Mon Sep 17 00:00:00 2001 From: Salvantrix <149609610+Salvantrix@users.noreply.github.com> Date: Thu, 13 Jun 2024 20:17:46 -0400 Subject: [PATCH 14/16] Pirate Uplink and New Drip. (#1476) * Pirate Uplink and New Drip. Adds in a fully operational pirate coconut uplink, as well as new drippy drip. Listed as draft as awaiting updated icon sprites. * Added fixed textures. Drip is good, uplink is FUBAR. * Fix? Added tags and currency yml? FIX * AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Uplink is working now. * aaaaaaaaaaaaaaaaaa * Test Test * test test * Fix? Fix? * AAAAAA AAAAAA fixed * Update Resources/Locale/en-US/_NF/store/uplink-catalog.ftl Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * Update Resources/Locale/en-US/_NF/store/uplink-catalog.ftl Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * Update Resources/Prototypes/Catalog/Fills/Crates/antag.yml Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * Update meta.json * Update meta.json * Update meta.json * Update pirate_uplink_catalog.yml * Update Resources/Prototypes/_NF/Entities/Clothing/Uniforms/jumpsuits.yml Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * Update Resources/Prototypes/_NF/Entities/Clothing/Neck/cloaks.yml Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * Update meta.json * Update meta.json * Update meta.json * Update meta.json * Blinky pirate uplink * Pirate HardSuit->Pirate Hardsuit * Mofuckin Yeet This ish is done. GG no RE * pirate cleanup (spelling, slugs, and s-grammar) * Pirate uplink: rework text, use lethal shells * Fix lethal shotgun entity ID --------- Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> Co-authored-by: Whatstone Co-authored-by: Whatstone --- Resources/Locale/en-US/_NF/store/currency.ftl | 1 + .../Locale/en-US/_NF/store/uplink-catalog.ftl | 42 +++ .../Prototypes/Catalog/Fills/Crates/antag.yml | 33 -- .../Structures/Storage/Crates/crates.yml | 4 +- .../_NF/Catalog/Fills/Crates/pirate.yml | 67 ++++ .../_NF/Catalog/pirate_uplink_catalog.yml | 302 ++++++++++++++++++ .../_NF/Entities/Clothing/Head/hats.yml | 30 ++ .../_NF/Entities/Clothing/Neck/cloaks.yml | 11 +- .../Entities/Clothing/OuterClothing/coats.yml | 11 + .../_NF/Entities/Clothing/Shoes/boots.yml | 26 +- .../Entities/Clothing/Uniforms/jumpsuits.yml | 22 ++ .../_NF/Entities/Objects/Specific/pirate.yml | 111 +++++++ .../Objects/Weapons/Melee/piratehook.yml | 14 + .../_NF/Stacks/Materials/crystals.yml | 7 + Resources/Prototypes/_NF/Store/categories.yml | 25 ++ Resources/Prototypes/_NF/Store/presets.yml | 12 + Resources/Prototypes/_NF/currency.yml | 7 + Resources/Prototypes/_NF/tags.yml | 3 + .../Hats/pirate_hat.rsi/equipped-HELMET.png | Bin 0 -> 867 bytes .../Head/Hats/pirate_hat.rsi/icon.png | Bin 0 -> 379 bytes .../Head/Hats/pirate_hat.rsi/inhand-left.png | Bin 0 -> 384 bytes .../Head/Hats/pirate_hat.rsi/inhand-right.png | Bin 0 -> 383 bytes .../Head/Hats/pirate_hat.rsi/meta.json | 26 ++ .../pirate_hat_luffy.rsi/equipped-HELMET.png | Bin 0 -> 498 bytes .../Head/Hats/pirate_hat_luffy.rsi/icon.png | Bin 0 -> 378 bytes .../Hats/pirate_hat_luffy.rsi/inhand-left.png | Bin 0 -> 474 bytes .../pirate_hat_luffy.rsi/inhand-right.png | Bin 0 -> 457 bytes .../Head/Hats/pirate_hat_luffy.rsi/meta.json | 26 ++ .../pirate_parrot.rsi/equipped-NECK.png | Bin 0 -> 409 bytes .../Neck/Cloaks/pirate_parrot.rsi/icon.png | Bin 0 -> 695 bytes .../Cloaks/pirate_parrot.rsi/inhand-left.png | Bin 0 -> 257 bytes .../Cloaks/pirate_parrot.rsi/inhand-right.png | Bin 0 -> 268 bytes .../Neck/Cloaks/pirate_parrot.rsi/meta.json | 26 ++ .../equipped-OUTERCLOTHING.png | Bin 0 -> 1524 bytes .../Misc/pirate_captain.rsi/icon.png | Bin 0 -> 622 bytes .../Misc/pirate_captain.rsi/inhand-left.png | Bin 0 -> 461 bytes .../Misc/pirate_captain.rsi/inhand-right.png | Bin 0 -> 460 bytes .../Misc/pirate_captain.rsi/meta.json | 26 ++ .../Shoes/Boots/pirate.rsi/equipped-FEET.png | Bin 0 -> 408 bytes .../Clothing/Shoes/Boots/pirate.rsi/icon.png | Bin 0 -> 716 bytes .../Shoes/Boots/pirate.rsi/inhand-left.png | Bin 0 -> 324 bytes .../Shoes/Boots/pirate.rsi/inhand-right.png | Bin 0 -> 332 bytes .../Clothing/Shoes/Boots/pirate.rsi/meta.json | 26 ++ .../Boots/pirate_luffy.rsi/equipped-FEET.png | Bin 0 -> 287 bytes .../Shoes/Boots/pirate_luffy.rsi/icon.png | Bin 0 -> 577 bytes .../Boots/pirate_luffy.rsi/inhand-left.png | Bin 0 -> 389 bytes .../Boots/pirate_luffy.rsi/inhand-right.png | Bin 0 -> 392 bytes .../Shoes/Boots/pirate_luffy.rsi/meta.json | 26 ++ .../equipped-INNERCLOTHING.png | Bin 0 -> 1187 bytes .../Jumpsuit/pirate_luffy.rsi/icon.png | Bin 0 -> 466 bytes .../Jumpsuit/pirate_luffy.rsi/inhand-left.png | Bin 0 -> 277 bytes .../pirate_luffy.rsi/inhand-right.png | Bin 0 -> 276 bytes .../Jumpsuit/pirate_luffy.rsi/meta.json | 26 ++ .../equipped-INNERCLOTHING.png | Bin 0 -> 1305 bytes .../Jumpsuit/pirate_slops.rsi/icon.png | Bin 0 -> 463 bytes .../Jumpsuit/pirate_slops.rsi/inhand-left.png | Bin 0 -> 441 bytes .../pirate_slops.rsi/inhand-right.png | Bin 0 -> 417 bytes .../Jumpsuit/pirate_slops.rsi/meta.json | 26 ++ .../pirate_uplink.rsi/icon-overlay.png | Bin 0 -> 231 bytes .../Devices/pirate_uplink.rsi/icon.png | Bin 0 -> 772 bytes .../Devices/pirate_uplink.rsi/inhand-left.png | Bin 0 -> 261 bytes .../pirate_uplink.rsi/inhand-right.png | Bin 0 -> 262 bytes .../Devices/pirate_uplink.rsi/meta.json | 32 ++ .../Pirate/pirate_doubloon.rsi/doubloon.png | Bin 0 -> 482 bytes .../pirate_doubloon.rsi/inhand-left.png | Bin 0 -> 150 bytes .../pirate_doubloon.rsi/inhand-right.png | Bin 0 -> 155 bytes .../Pirate/pirate_doubloon.rsi/meta.json | 22 ++ .../Weapons/Melee/pirate_hook.rsi/icon.png | Bin 0 -> 621 bytes .../Melee/pirate_hook.rsi/inhand-left.png | Bin 0 -> 447 bytes .../Melee/pirate_hook.rsi/inhand-right.png | Bin 0 -> 468 bytes .../Weapons/Melee/pirate_hook.rsi/meta.json | 22 ++ 71 files changed, 975 insertions(+), 37 deletions(-) create mode 100644 Resources/Prototypes/_NF/Catalog/Fills/Crates/pirate.yml create mode 100644 Resources/Prototypes/_NF/Catalog/pirate_uplink_catalog.yml create mode 100644 Resources/Prototypes/_NF/Entities/Objects/Specific/pirate.yml create mode 100644 Resources/Prototypes/_NF/Entities/Objects/Weapons/Melee/piratehook.yml create mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pirate_hat.rsi/equipped-HELMET.png create mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pirate_hat.rsi/icon.png create mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pirate_hat.rsi/inhand-left.png create mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pirate_hat.rsi/inhand-right.png create mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pirate_hat.rsi/meta.json create mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pirate_hat_luffy.rsi/equipped-HELMET.png create mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pirate_hat_luffy.rsi/icon.png create mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pirate_hat_luffy.rsi/inhand-left.png create mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pirate_hat_luffy.rsi/inhand-right.png create mode 100644 Resources/Textures/_NF/Clothing/Head/Hats/pirate_hat_luffy.rsi/meta.json create mode 100644 Resources/Textures/_NF/Clothing/Neck/Cloaks/pirate_parrot.rsi/equipped-NECK.png create mode 100644 Resources/Textures/_NF/Clothing/Neck/Cloaks/pirate_parrot.rsi/icon.png create mode 100644 Resources/Textures/_NF/Clothing/Neck/Cloaks/pirate_parrot.rsi/inhand-left.png create mode 100644 Resources/Textures/_NF/Clothing/Neck/Cloaks/pirate_parrot.rsi/inhand-right.png create mode 100644 Resources/Textures/_NF/Clothing/Neck/Cloaks/pirate_parrot.rsi/meta.json create mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/pirate_captain.rsi/equipped-OUTERCLOTHING.png create mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/pirate_captain.rsi/icon.png create mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/pirate_captain.rsi/inhand-left.png create mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/pirate_captain.rsi/inhand-right.png create mode 100644 Resources/Textures/_NF/Clothing/OuterClothing/Misc/pirate_captain.rsi/meta.json create mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/pirate.rsi/equipped-FEET.png create mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/pirate.rsi/icon.png create mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/pirate.rsi/inhand-left.png create mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/pirate.rsi/inhand-right.png create mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/pirate.rsi/meta.json create mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/pirate_luffy.rsi/equipped-FEET.png create mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/pirate_luffy.rsi/icon.png create mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/pirate_luffy.rsi/inhand-left.png create mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/pirate_luffy.rsi/inhand-right.png create mode 100644 Resources/Textures/_NF/Clothing/Shoes/Boots/pirate_luffy.rsi/meta.json create mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_luffy.rsi/equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_luffy.rsi/icon.png create mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_luffy.rsi/inhand-left.png create mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_luffy.rsi/inhand-right.png create mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_luffy.rsi/meta.json create mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_slops.rsi/equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_slops.rsi/icon.png create mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_slops.rsi/inhand-left.png create mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_slops.rsi/inhand-right.png create mode 100644 Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_slops.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Devices/pirate_uplink.rsi/icon-overlay.png create mode 100644 Resources/Textures/_NF/Objects/Devices/pirate_uplink.rsi/icon.png create mode 100644 Resources/Textures/_NF/Objects/Devices/pirate_uplink.rsi/inhand-left.png create mode 100644 Resources/Textures/_NF/Objects/Devices/pirate_uplink.rsi/inhand-right.png create mode 100644 Resources/Textures/_NF/Objects/Devices/pirate_uplink.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Specific/Pirate/pirate_doubloon.rsi/doubloon.png create mode 100644 Resources/Textures/_NF/Objects/Specific/Pirate/pirate_doubloon.rsi/inhand-left.png create mode 100644 Resources/Textures/_NF/Objects/Specific/Pirate/pirate_doubloon.rsi/inhand-right.png create mode 100644 Resources/Textures/_NF/Objects/Specific/Pirate/pirate_doubloon.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Weapons/Melee/pirate_hook.rsi/icon.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Melee/pirate_hook.rsi/inhand-left.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Melee/pirate_hook.rsi/inhand-right.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Melee/pirate_hook.rsi/meta.json diff --git a/Resources/Locale/en-US/_NF/store/currency.ftl b/Resources/Locale/en-US/_NF/store/currency.ftl index e6bb8966930..b09b85ff6a6 100644 --- a/Resources/Locale/en-US/_NF/store/currency.ftl +++ b/Resources/Locale/en-US/_NF/store/currency.ftl @@ -1 +1,2 @@ store-currency-display-security-telecrystal = FUC +store-currency-display-pirate-telecrystal = DB diff --git a/Resources/Locale/en-US/_NF/store/uplink-catalog.ftl b/Resources/Locale/en-US/_NF/store/uplink-catalog.ftl index f097436a231..2330732b66a 100644 --- a/Resources/Locale/en-US/_NF/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/_NF/store/uplink-catalog.ftl @@ -152,3 +152,45 @@ uplink-security-emp-ammo-desc = A a box containing 4 EMP projectile grenades. uplink-security-trackingdart-ammo-name = Tracking Darts Ammo uplink-security-trackingdart-ammo-desc = A a box containing 4 tracking darts. +store-category-piratehardsuits = EVA Suits +store-category-pirateweapons = Weapons +store-category-pirateutility = Utility +store-category-pirateammo = Ammunition +store-category-pirateexplosives = Explosives + +uplink-pirate-hardsuit-name = Pirate Hardsuit +uplink-pirate-hardsuit-desc = A heavy space suit that provides some basic protection from the cold harsh realities of deep space. +uplink-pirate-hardsuit-captain-name = Pirate Captain's Hardsuit +uplink-pirate-hardsuit-captain-desc = An ancient armored hardsuit, perfect for defending against space scurvy and toolbox-wielding scallywags. +uplink-pirate-crate-captain-name = Pirate Captain's Chest +uplink-pirate-crate-captain-desc = A chest filled with the necessary goodies for a pirate captain. +uplink-pirate-crate-name = Pirate Chest +uplink-pirate-crate-desc = A chest filled with the necessary goodies for a pirate. +uplink-pirate-magboots-name = Pirate Magboots +uplink-pirate-magboots-desc = Pirate magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle. +uplink-pirate-hoverbike-name = Pirate Hoverbike +uplink-pirate-hoverbike-desc = Yarr! Dis be me sovereign space shuttle. Now, whaur me rum? +uplink-pirate-blunderbuss-name = Blunderbuss +uplink-pirate-blunderbuss-desc = Deadly at close range, an illegal shotgun often found at the side of a pirate. +uplink-pirate-revolver-name = Pirate Revolver +uplink-pirate-revolver-desc = An odd, illegal, old-looking revolver, favoured by pirate crews. Uses .45 magnum ammo. +uplink-pirate-cannon-name = Pirate Cannon +uplink-pirate-cannon-desc = Kaboom! +uplink-pirate-cannonball-name = Cannonball Chest +uplink-pirate-cannonball-desc = A chest full of balls made to be shot from a cannon. +uplink-pirate-grapeshot-name = Grapeshot Chest +uplink-pirate-grapeshot-desc = A chest full of cluster balls made to shoot a wide spread of small projectiles. +uplink-pirate-glassshot-name = Glassshot Chest +uplink-pirate-glassshot-desc = A chest full of brittle glass balls that will fire multiple projectiles in a tight spread. +uplink-pirate-satchel-name = Pirate Satchel +uplink-pirate-satchel-desc = An inconspicuous satchel filled with pirate goodies. +uplink-pirate-flintlock-name = Flintlock Pistol +uplink-pirate-flintlock-desc = A pirate captain's companion. Yarrr! Uses .60 anti-materiel ammo. +uplink-pirate-shotgunammo-name = Blunderbuss Shell Box +uplink-pirate-shotgunammo-desc = A box of .50 shotgun shells, used in the blunderbuss. +uplink-pirate-revolverammo-name = Pirate Revolver Ammo Box +uplink-pirate-revolverammo-desc = A box of .45 magnum rounds, used in the pirate revolver. +uplink-pirate-flintlockammo-name = Flintlock Pistol Ammo Box +uplink-pirate-flintlockammo-desc = A box of .60 anti-materiel rounds, used in the flintlock pistol. +uplink-pirate-ecutlass-name = Energy Cutlass +uplink-pirate-ecutlass-desc = An energy cutlass! diff --git a/Resources/Prototypes/Catalog/Fills/Crates/antag.yml b/Resources/Prototypes/Catalog/Fills/Crates/antag.yml index fd1af8a3b98..8b137891791 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/antag.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/antag.yml @@ -1,34 +1 @@ -- type: entity - id: CratePirateChestCaptain - name: captains pirate chest - suffix: Filled - parent: CratePirate - components: - - type: StorageFill - contents: - - id: ClothingNeckCloakPirateCap - - id: Cutlass # Frontier EnergyCutlassPx&14%?dRCt{2n$K$*K@`W|1e1!%CZu~2dP8U{| zQ#=SeTDB7y%jh|dXnG-W@#Ap&gGhWCga-7+Uckle-4Xx*vb8PtpSX%5lJI$ zKv=+{R%F&hXRR3N?r?a*ljEa6tNQHxVy;gg>?BRsw|6Ab4HDb=SDwDH7Wv-4X(G(^?HvhM!YucA+|CgH zhKw*yrwcdMy_5lS{|hhyS|%OXJn^Gt$KD1ql@Vq*8pBr32*i}xEFpum0cYnIB>dnB z<8-?GeE;B(B=y&|e{e{?ef=WbAH)p tt&L}q0000EWmrjOO-%qQ00008000000002eQx~uJk;}FOp784mTT>eA zf3~>O^WL8K!uL2bOr(0B-7&nyG$m;3*6q_>a|4CaEc%M08jBvT^)XCLW^mXvwO;I{ ztkjQRe^$Jh(7?wzEt`=cqEkX!FnOogiSJj=Pk%J$|M~-e-nl(x{XX%1eSO>4eWn*~ zH7&nAb5bUo(TnDbf(!|Vj#d2cIPii)>1IM%X{3nw$z>L|7mK$&uRP9q$A7){cE#qp z-y*u!F#{kNM@7yE~NjHHb#rYk#z1rZaP1Y4W(71o;Ue(Wf;QiE-`#=-yZ zw`@pBo8jXp$q6(O1U?i`zIegT`hV$~^*iPq^lNW_wm0}geq#57P!@g9T|4G&Jy%*+ zmNO~j=n^e8&mf;=t8dm`t6J*AE5ZLu&GVk6t^Ty^^1Vtc#G6!JF01)tcK_tXM$b!H zZfjTVC<{L~f0Oxw6M`ulYckLM-hKNuXVdiWe)qPnuFX&PKIx+w`T1M+)0)pw_NQ)L zJeiSUxVJw?bn>2Jue4eBY`2^-Ln`LH zy=Cit#6hI>;pCY*KU$T_nifc;3W~BGJT^Z+`FXhF>J{||oHpD(6Vp9G>79U*hR=iA zRZrRu%-lIyE1U^vBnX)3_4DhN&fR=JO)u!^>dh-XgJc)I5>WM2oRws9_iWtc_fHXK@^0;f!>) zUp!oP-)1)2aerpiOr8%E-jSRgu!=?ENV+E5(fVYF<2NwSmGMrqD`UjX72ne$@DypdL zVd(h#a@Sg4{iH1=j7+&<91p)2?tS}mr}gg8=LhV=PY7Mfu}C|nb?o|Kg_Q40roN2b zKi9tW!og!*j5F3pe2m&H&#FXxflTz*WrL}Bz z9@~wj@-t4UKivFhVxRbvS@AB&;NLzU-XnXzKHXs|y>-=d?Q8wKo+i?LooP&q+B6P4 zJevFJ&(ZbrGq*g|+4uV+gR}jTn+0du9fLu>c+vi`w21%Y-rDe0KN%XzUJDvbF`V$? zBKuXLy<7B8Klu5F?Yyk-nw=saGz?B;+c6xwsvDj&srJ{B$m*IIX>XLci^XQUhX?g1^f2!}|KQn!1KmG3>^cm0^6m1D=I~P$iPBS5 z;rr&#anf@6^Zy!889afYe$8al?p2#!)O>88zWqhr@{Qc{-skUmcD!gdgU#L8a)zyW z>Xy=*O=mOP+>5j9&Aw}OJ?5<%14ESbluHNq1WB#+_3_@cwAJ_W7lE*#u6q?THgBEH zBolZ4CliZ8;VmIN#7C-8?Js}jp$fdxn|D$ZCc&$9)GUh)M|7-d<$FZoxLYE z^_=c5PLK0pa}O1ZU3>c`b83(MJa&iH6BC0ri0?kR;gg>p_eJ}YU6*rx*Va69Y!EnM zIAi0>IUki81TMtA*-+k4m~+-%QBza%<^NaWHJW{Qj;jPo0)vb%HNrE^*Ox&H$mRfI T5V#aP8AN%y`njxgN@xNA6DpkN literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/pirate_hat_luffy.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/Head/Hats/pirate_hat_luffy.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..377e65156baf9c0fbc45d0a5d6ecbbf914085b49 GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zt2|vCLn`LH zy|vKaDNyA2M}5D0cQ5d=F`9KJIBTeMU(87_HZksf!lN>4X4*&n5B&;}S6v+k9WYd*6>UeCa#y^P2T=K7-HwmJKf|XZ5e+{@j5CmL%mR1nN8!^oehqlw#UH z;S}$NIqn`$*&6QJG@Yz*xTN!3@XY+#lP~3)Gc)MVPA%TcQgcSx;ZOL>D|rkz&L}VW zCe5(zGl!DWC;7e1dqkT=jNVQ828gTe~DWM4f DU@X&s literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/pirate_hat_luffy.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/Head/Hats/pirate_hat_luffy.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..853847e597e14f2e28ac504780748721aa3c9c77 GIT binary patch literal 457 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zGd*1#Ln`LH zy|v%#aDd41kMXWTE1bNoHFo?+4_@x4*LTjYv84FjGnI39=lo`{YvjKed*`U5OTam=j<=*j|aHr7VeUJ;w_j{e{@gS z*JaB@6@wc-7EJiIOIG$>Zn~aXwVmk0r;pwD=D9z9ctCRVXBLU?=IJj#RTVFe&2KT? zZE@E#_O;FH)6$6&8eK_y>*`kD&(s%r`17szq%OHpgAhqbN4Lyxjk?H$30J$ zHq|%mJgK6;_S@|Ev`2bgauDY;Fid$KJb8b`X=cQyvvr01V*g=h%)oG9 rQM_*L#MF&3#xg()_);T0(|mmyw18|5sD+n;Cxcj?u6{1-oD!Muzv?q0cYg?-1uhtC!)D=5;Ob$IJa|G>3k zM_A9P&N;pRW!~QFm(E>&Zf?0}pWS=q_g~mMIy%I-9y=Ven2`EBV#&5SnG?OEp7iQJ zc=>bbuQ{AN8*RdM&QIk?OZJvHJdI3;me+C93~Y=Q_7$lX%7K`8mtttGB{)1Gfz#<2Fxqnl@HnPi{;(EFMftl4`! zoo#WPZSwQbhd-P<6HZB#Wv^@4#B%Js~M{Qui9OI?_+yXzD)W12QE->CCL7F pVcbMVv#JhYi1MXIc&7RKGH3zW96$^Lmx3pQC{I^Emvv4FO#nXGw7>uW literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/Neck/Cloaks/pirate_parrot.rsi/icon.png b/Resources/Textures/_NF/Clothing/Neck/Cloaks/pirate_parrot.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fb821672ae65dcdedc2934562ef47dee5ae22060 GIT binary patch literal 695 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|4g~mwxHkN6 z5Rix#l$%n|BO&h`DeJ$0-+cj(p!j+QP98DQK2Zi)yYNMA-h#3{J9lz^ELU@?)4Gz# ztL7Q9Oh+_ywpGAnb3WNgM~)nk*Vf&#Ws9_3AiwLZ`@g<1a0#sM^}IVaifw+^m{e7Z2HS>UeaVQD$3ugFF z84%WW7cPaJDI7Ij^T z`cNX$Aqwu6g?w zYuA3cE4(oNwZox(A`*)ZeyFnOVBp>_KZ}u}P^q-DK>f`q~@Nhe8RMn@vrO&dqPP-?hJBwjKPu`WX>F>5>Id6WJ zUg!60Md`VqY0poc)ce73C06t3lv}&LEaLzE;NACE8_s`So!i&`r68x2QBICKbc+Al zf1kYrr-laZ-Nu;uby?&0RXNOl@dsA!J;JH=lb&aMbXo!e1-%O9U+ z$U0YjM_g^fZ^vjJ+vR%qvO&f$Ff_d9{J#6nt@B@bzO8zx+;U}8zd+DyJEw@Xzd0Bf t{&Y+CGdtgxes6LKsFW`?!ZXd+mq82221TipNv literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/Neck/Cloaks/pirate_parrot.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/Neck/Cloaks/pirate_parrot.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..60d93726e5dcd48c364d961815cfe1727b86bf9b GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|)_A%&hE&XX zduuQ6Ap-%nfbA0tggM(BPccX~tlh-uoT9SLW8$$8krs~!AEZCWWu8>Oe{=4B0iec) z{o=FrYJc;*|4pZ7XBaN}~W+6ehoH^q5?1_D9(luyBXB3909)KN`k6Vuc*-f$zz zm|1`8wKG7;7;9!BXXpFRcE$z+d3>o6o@u_m3|c@o2M~k6rQpdR%G1@)Wt~$(695;; BVb%Zu literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/Neck/Cloaks/pirate_parrot.rsi/meta.json b/Resources/Textures/_NF/Clothing/Neck/Cloaks/pirate_parrot.rsi/meta.json new file mode 100644 index 00000000000..de0bdfe5c1d --- /dev/null +++ b/Resources/Textures/_NF/Clothing/Neck/Cloaks/pirate_parrot.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-NC-SA-4.0", + "copyright": "Created by GentleButter for Frontier Station", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-NECK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/pirate_captain.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/pirate_captain.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..c05d68330d0acebf78f5933059af5d740aca5b01 GIT binary patch literal 1524 zcmVPx)lu1NERCt{2nn7qAM-+ztk=9-bZ7oNtsa?^=iA{+ib?2r&CY1&0TB@q5fKp)5fLvZ#ILek*a85g^TPmu3u9@PRP0;6 z{rHi4?}y)OR+vL=|m`7f^hFaR~~bwZ~M zMvY-{x`O2KV{EW*%~x1iMEf5sYsjcEsBwa%LR{NLqmFy;??~GZB*3%n6YTQcI4ILl zV|8TIn5UjQaOJ)Rg;@CRqZ91a>|b3Ip=3?4i?=K&M1vXw%4YpQ8#M-8UC}_9h5Oeh z0*laAfXTU0mQC8tc=SE4n4UI|D<;wj#jU@5H;!$6l&#KgbSwh5FGjvXfNh<+|8xI% z-KE=BVEeIl4MeteiW+NPS7TnMx{Xn{zn?nxvq{A*06-o4#=+q5#a94v^!+;b^XEzT znzzd)6->^Jwva0rqWv9%BH8aBu*rS}JBFNnUjfbxC6Ln;WD;@kaEdnxs;LFt{d{$H zgJcqMhh6)rz8KbvRnpA1NSpxc#VSel#a#RC@D*VGd?}E#KYh~N zv-$I-LobKr!qx%%JBB?4X~VcuW=}yr`l9`IwA}}!^TTc@ZsbQ;8Vvn_TTB2uygdlM zF8o7){q?ug{XnCA6@Xp5DwqJOAoxXjDHDXi`+&*0QKqS_^{P5kqtm6Y6=RtM z1H7GW?7Y}6C{i0Cs}Ahdn%5cVJRI9Wg-wna3C-$*5?FxsVwD&cZE3`WEx>xQ+SMOI zqJ4|n_N}@-;=EXOyYm*M()OhyfIHC&vt>=^lnYy~eZ!*IG4_jLQMdE5t52Z!0YSKy zA7QV9VYaZ0)*{A*hB(^?LgQ> z0)*{A*hB(^?LgSP^a32}=kR;C-(viTyji}$Q6T0d0QL#>%4dH{`yl;7q{2=!0I*6r z%WT(h2WoY>F_3-;iU*VYC|rrz<>Axb9*zLE4Q@~L;jl=a3-tc@ zs~uu4LL-#P`zRH&MvdXMR1AYoj!>#EhO$xjgkrCmTF^ZyF^w3lQdn9b?fT+$#l3FK z7CQ>WTm)JN-W=#hPE(N66l4?fBOw(5Q$+)(?tqjFkKE7rnf-v1H_&Uo|DuX_g&c)n z#?o%x;&cV`cjN{|N`PlLxHl*P7z9uO!N3t5k(U5G1wqcSb??(ZJU!mSNbi=xW>D-O ziBiq>sl<=Xks^ zT`dd|cv6&@DI$xM0Q`);YEkGG#jZ(FHug)ek|Ua7Iz{ZfNxivCL6Ck1IJtMB&HmNd z4Z`z~_5kdf)KeFhUq{XjfL#I!|Hny0M8pfte?GvFJ*T!X_W%F@4rN$LW=%~1DgXcg a2mk;800000(o>TF0000Px%4oO5oR9J=Wls#|LU=)QP*G}z7Rs#-^T6G{*7Fas;Cm;qSBqYYNF_tY7YgjVC zfRvH3BO?jDjB4urs@?q#Cyc?DQfE@^LdLw07?kZ?`RE|0qT>3Y~{`8HL*E{H{ zLNJviZU=%J3NP-CDPO-TS4!_w8!If}>)=3+PgMdj31y0(XuYGevCWQ5j=k2gHp# zfg}eYlv%teQWZ8VBk4XaZt5BnH(=t03Gdw#lY1SXi96%W=k$h7>KmyJ9M%l>O%2OX ziS1OEl)LrJPVT#{zG4|F`=-WW%}6VsE#T?x%gh1*ZyzmhGEaWy9;h^TlbL?p+>;8z zHYCRbCNUp{=bbMKWY2$$%qfT;CwgoYY1ZdB-y<>llDxGnq8LA;Qv!ZOcO}3FYRIaz z^$F-&I@Pkqz+RjJb6e&9+-fd@+?gu1Vi zU$~8xA?24~Ry4!PI+l;0zhzH);Vxh+x8JO@t|dy`VG&S4HG{(a{($N??hF3xW7OI- oZ>P{7mwCWg;7g70O!M_+&;qhKfEWZW1y2T1p00i_>zopr0N{kd!vFvP literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/pirate_captain.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/pirate_captain.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..f5ec854071166d1a3af6decd972b0d7f653f20cc GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zb39!fLn`LH zy=9ws$UuVafqCX4r@3Vft2B~QoRbnB3dP%MJVhgjb4mS7NAe)aw|F$KSFVe#Va zTlV+n>FHm1ZxvZBt@>#DG!uh;!MBRnu9@_AU32W3jWstrif<(t1>D-mczv6|QYpt7 z4}L!Oj@hit+jDll zy+Tp_gI8al59|N_wsf`mzm4~IuX^>y{98ga+uv#>1o)*LY|I>bWcosz%f`%;Zm}|) zImhFXC4S(`nT917Cof+)vr+5O=L$)nWU7?t1N#)VPg1c>YUym}nr1Q@-8X+GJb$y1 llyo3468KUhJkxxA8MJ_G4j=}BOTm*tl&7no%Q~loCIIx^!KMHJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/OuterClothing/Misc/pirate_captain.rsi/meta.json b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/pirate_captain.rsi/meta.json new file mode 100644 index 00000000000..bf80b86ee5e --- /dev/null +++ b/Resources/Textures/_NF/Clothing/OuterClothing/Misc/pirate_captain.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-NC-SA-4.0", + "copyright": "Content created by GentleButter for Frontier Server", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate.rsi/equipped-FEET.png b/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate.rsi/equipped-FEET.png new file mode 100644 index 0000000000000000000000000000000000000000..a9673adc1acb16a7338c1bcd9643fa71fa589976 GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zEj(QuLn`LH zy>-y*u!8{GgZi}QsSYhs8$@ir?5v5t?-DS9Yg>YXiHY@N#n{ZF&O$v~f7NezlX~;! z-I=%f99)pV7k!WUN4J{?n;Y-2J|nZ*SMzh`!&OXzjvS2rt4r70`pd?*%RT$I&Suv6 z(C61@#m83)E6=)-cHnMc*jACBM_h05q&QA&ZMgdD?d{bGYkthtO4vDL=gfm=7XD6X zcVW?DGH#!lxN}D3`QLMO>aL|;)N^Cu4G7#}{eUmrwNpx5Q6W{KH@3%i{g2&`g$0qo z#h=n&dgsm(YWRD8jn=$4v&E)vHBUE0G97R~>~g=B&D`UUX!EA9C&KIuSHJz;v_RvN zH^YI$pI@(-I^o~H(^=hWQVa*y%ssv8-%T!$#@QL}>{6GXN4(^5-pl+rPx%Y)M2xR9J=WRy}JJQ4~G*zM08}HLC;^*fos9^4o2#_~Y@Y4i1041SLjXf-D@t%>`2qkS zO$Dh;dR!EzrDQK3E#brGBV6kM`vamUZv;>8GS)7u_C~+fNDZT=($q3#)C8W@=qs0nT&Q8gufQ#4fp_SUUO{ zMOX*|0NK%CmvmZ0laSia&?Ohih*QakZEeUQbDyn`jcLkj!M0IYW1UkSh)^^c-!q_@ zouDkj-aX$lXtx#$hd7xCuw5<9iz`z8D6DVb8?+aLl8y6|(Vmc=Qxms4a^Ow6u}eM+ z%v97d@J&H@9=JS~okSEwl%L<(PX|#pYs%kUsAm2EY#dG7xv*#P?D&i5Z;75`j(-=w y09tnnI4%RR-2eap4rN$LW=%~1DgXcg2mk;800000(o>TF0000z+$l=91&Zibs#0)cLSqY4zzNRt8b$w(bd8bm`84 zhao)s+ET;B&l~CZJBbR;^nLHI#V6hz7kzq-T^jR=$pPNa<@&CcZoZehrzZ2^w8--_ zco(dCeY@;I^`*L4*OyC5t{&e6a{xnweZoaWgZJz`Z}0Lo{`~)Kgy)Qt)ID%hT1*Wt~$( F69C2@hDrbc literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..0cd7d126fb6a34aae916d934c670798c96e33d44 GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|-gvq=hE&XX zd()S@$w8#`;q0h@ge0$tTVMYFzh}_}xBTvX963SSMUQI3tQH@BcxX)@2T&6TIHXKg z-8JucRc-v4WxGxaZTJJyJOo9}(;6IF7r-%aqYGcn@&*0!1K+s<0ZWEbkV z>a*v6-}&{oUB>L2)!R0DDT@k9^1c`LS>(BXy~Fe~TbU!4P82(4vnKTF&pD|=--bP0l+XkKu)2pI literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate.rsi/meta.json b/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate.rsi/meta.json new file mode 100644 index 00000000000..762c194a368 --- /dev/null +++ b/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-NC-SA-4.0", + "copyright": "Content created by GentleButter for Frontier Server", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate_luffy.rsi/equipped-FEET.png b/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate_luffy.rsi/equipped-FEET.png new file mode 100644 index 0000000000000000000000000000000000000000..28466deed5135afc9e652217acbf0e68b29b787c GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_ItWGhE&XX zd&`io$w8p?;dZkHVj&_bVlfBiiSa#f+`+Up{DZ=rLyIezS|fUnimADU8%U`B++U{l zK6k$|BhUaSc=u_|CKFBFEtA!jK8+N;Gc$X?O6KN!Y=`fk{lD=(Z{)4_DU(Xx{rRW&91Ok1sXCGtJkRK?}&{fSPkD Qcru9P>FVdQ&MBb@0ND6y{r~^~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate_luffy.rsi/icon.png b/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate_luffy.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..348714efeda515ea24be8b45cbc49b5f90ae7cd4 GIT binary patch literal 577 zcmV-H0>1r;P)Px$;Ymb6R9J=WmAy~GKp4iK(pm{%O$fTVVZ_0Op(ex#gMWYt(TO;)G4hu<5<}u( zoJ>qibYu{tCNi)%SdE*T5)&&BKKkKM4_bOHB_V;Kzv;Mp?|GiS<$8dRkB`rcVZ0O- zQk>pZhQCj13UyyzcHGA?1s69>?aR0Q2-}chCz_mEbY#VoF3#gu#BfSIzB)#!|UcJr_odB zV;a$jieiSRc46WUOdH1l;UG6P6F05-?Z8X}+`JtCu(z($XV7)|wsaK+oxXLQXb??L z0W`IR@4##sbiXX`5_HWZA}nBX#xOFs!8gm>-vVLIkN`Q9EIA?VushRo_C=s zztH+J0N`-@6&FudlaKZb0|0BGP0JZK*9H~@1h^&aZ{6YewrBHm46q^?nx#tIww@Iw zG-MX%b>k0_OLBTlP;psH*lG)V?*M==nV|+4d)SFUsS?N0jx@NCXk(qYN0OlY+Z4JQi z(it@$4Z;6=FNXq-#y&oC!ykFRv2FcEH(dY#01jnXNoGw=04e|g00;m8000000Mb*F P00000NkvXXu0mjfm;mu} literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate_luffy.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate_luffy.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..5e9775df2eff5ecbf14dcc5e1ee85c27e50fbf53 GIT binary patch literal 389 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zRXtrCLn`LH zy=9oiImt)`4 z`O zRrcSkLPC{$#M}eV&l@=w!r(yN|Bl-8;8Pgio49$2fTQuUGgSmf=?~O+jkl} zB35pDT2>?=)ugKG`}hAe?(ao<^6k6tDl-CY0D=R8nyRuc3v=V{+m-yz@S0@8qf`8> z_LS|`lFuLJMND5lKgG^-cZo!V+Uo`TmqwO9sW!bEyW4G&-g)g$duPomRo|$#k@5Ta z@JUOSPw(Day8XYnZg})r@$93UdsQ^&<(kB=*&358oGm16@XFt$&su8B@<~e^t5+4? zxwyjqq(xcTD!<6M#f#!jPg40BHEoZZYv}Sh#YPa9fyheh7xVXb7&B)EJ!jq*ykush z3A^b6Ab)0;)9oL5*Wbh)Fxb%ZzRXwT*8gX&3=9P>`xrJ^MEmrLC%p#h=1Yz6O!M_+ Z&;qhKK*j;VrQpdR%G1@)Wt~$(69Dt-ntK2M literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate_luffy.rsi/meta.json b/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate_luffy.rsi/meta.json new file mode 100644 index 00000000000..762c194a368 --- /dev/null +++ b/Resources/Textures/_NF/Clothing/Shoes/Boots/pirate_luffy.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-NC-SA-4.0", + "copyright": "Content created by GentleButter for Frontier Server", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_luffy.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_luffy.rsi/equipped-INNERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..f1f944d2256c7ffb9bcb88c7a59594037aff6067 GIT binary patch literal 1187 zcmV;U1YG-xP)Px(LrFwIRCt{2n$K$-Wf;dl?`CG(q=N>fW}vL&wRWH*`Yz8+@Y-FIhyKC?Sps_zGu z?7Z{N`+eT;`|M&;98;=a2F`Uk7XWi9 z^m7vNYAmz{+CH}iIsmG1KS=-*{jzmDZM_WT6#7FMux?ErU}Y7;@=a}Crk^okeat2p z^KGiuE7>kFVW0u)@#+RZEzYiuQun?!6sGUEOt8&2`azby9=q;<|i=X_KnL^V!PjZ=R4s!U-a&odvK<&VF&Gc(}g+;bWrilLRfCJul* z<=Y~C(MLe%JiL75e0b`2oNsvfj<#{4a~@M?XJY+U%A1(#wIlJELw^^5$Y~m3NBhBk zXImENoQJAMTE3@HjS%097F^ZCwyYQy(G^je`SJUZyZ3LYr!Tyq-z!}Lpy6fmJ*bV- zFoZBN;qKn1TAW{MiDqrUYj0g4e=hnmdJ+U&|Na)QFF)VWmKB{^n=HTa(n$KEkATDB za5x+ehr{7;I2;bge*y6?xb{}Hy$M;&urQ(ssq{x6>+9!X;%C=rb6IpWx)n>x3@OqH}|0Is> zZIFIN6XV7%j7V<9Bx4-J$iE5?Dx1lYemlg&GO_{3aUhe-0AkIwH32rFjgdJN#kRe7 z%?e6GlmS;i8AC)ulC=O)Jj36MMH$eo9wZ>jf=On8S^aLsP}1TokpcboUW=uPJ_q$g zx=kyJ`qxjN)KAQM%_4-qu3ym5Dptt7xib+L8b2)R{d*@A7V`Y|V}%z#uP77W(P5qC zuOAK_hd5xnNWw7VH(<(V`}dzFV!-7~uWITcTi@-ny&3R!@p7|ZV`pzOyGLPwoxM#J zRb*JnHo?gQk=9hS0J8-@_2eOCk(4P%0opR*QDMg;C6xh5;iK9pqom`gR_Ee}^UWC2 znvlwXSFSAKPtP<969B&X_UBXqq~)D=Uv9oX2?E0E5qECh7LPO1li*1(&XVZIHwK5p z@%ZvDk2A8QCYE5(0000EWmrjOO-%qQ00008000000002eQB>ArY-_ zr`mcS4iIUZFFk2NiO@3J8=W8(1D_fw?y1^3GWG7b|PRX$33ocp)_hR{a_ zSALD@CVSrB%j)V0ka+HBiz)7uIqK_5?)slH@* zs2dQ-5jf%1`)!wNKPyEsincZ+-(u8XyX@AT8`qcLGh>*j`%m%|kIX!o2hWNadTQt2 z-mP}ry?W)oo*o{~`F#y_HLR|M9l)sIOO5bM^YvxW0`sSTm z_gSvq>cPH6#rERcwC`8eZU1NWTXyEwd!Fw>h5^Be=^LFd{K;5TR&uX~Ve4-WU-k(b z`!AF*2!8#|@$&Px_|q92m77sEIE%!ZXd+mq822<^Y)j1eby* OgD6i|KbLh*2~7YN0cL0b literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_luffy.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_luffy.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..1c388e4e486323823ed9f00bd3a4b64246bd018c GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|ws^WYhE&XX zd+Q)?lY;>3g^NZ#y*Ij2Z!~OVJiUQo)&{}HoqQG#BB$KdIo8tpJ?~9p&A)TKoj{EY z3>_WCF7`EY^Uj`~a_06V@oNiAiZ?Yp)?Ac5dtdhKRb3i0uU%x)6P$hf>*qJyGyZ?o zjn^wKW16OS^ITndh4kX%pY2|Ac4(ZRGY4!K1H-jd$L2Q9c@&?#wf;juA>-C}JUyCP z3qWF?!W&eMZV!Ka&Y|lsLxX8GW7B5y|8`tin}9m`QX@Rme0>?TfNTz^Ntc2rgIJ!f KelF{r5}E*OU~NnQ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_luffy.rsi/meta.json b/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_luffy.rsi/meta.json new file mode 100644 index 00000000000..4aa590794c0 --- /dev/null +++ b/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_luffy.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-NC-SA-4.0", + "copyright": "Created by GentleButter for Frontier Station", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-INNERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_slops.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_slops.rsi/equipped-INNERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..e2a14fbd838f772770df7072f7291d5142a97c81 GIT binary patch literal 1305 zcmV+!1?KvRP)Px(xk*GpRCt{2n$2(AL>R^&r}1WYopwW$Z9=0!qLv(*MQW5o5~M&*C>58U5Epu( zs(Rsskl@-2kx)wFHPx@yoL!h)$il3zx5BX?~hrxO}~7yLLcy3Zhdd-2MIYa&DvOv<*vB5ACkq zaMn|H^%;gvq%e{ma6DZs6Py^*93%cHRZuSOAT#x<(?=^&;MTwWT^2759d-Kl&o;Ml zyIjS>Tba=MO(P(w9d&+l=dUz$#0T$Y?)(+SeP1i^KB_ww&Rx9b(dUEq&-S^C*Ocmx z6anP7`E88(>G*wXwo8%$|zaVEpG zWP;6RCOh&H)Jc7z2uSqB5LbH;kEx#ecuYlH?Lne1{L4xd5`8fYruv~J6VQ@Lr(R1Y zFqrC(q%Y)vcua+=_F|7(P}TbO;V%0f({AE16>9Ghn3fG{QAgjjY^c3QBIyh70RUi_ z6qMT7qZTZy2E%Oci%&C%VW7H8Jo?pL0%91E`itZM08kVK-~O2G*q2|o^o1Ni3=@WF zgIYH1{d%3f4^Yd7VcH;u*{VHV*B5etVN%$&eVCRFyH=|kP^DYrIcM+W>Zt60D#riElf>~1}02&1GaUOaT~ZjnYTX?vPGzIc4e8R zhX(@B1c7?a!0n$NchngRXU{NyJ_4s$CMXpuLQaVMrzlYOxSLK7K1joFgD64{*!;EN z5l#<#6C)PRp6TexP>@D?c);TXw~b+l6antj;bNJfSgxPm9u%7Gglo8U{Wgiv^mO6v+Ypqy)q4PKulxx3)WB zLX>C@_=hAV1SL#JBoc`Te*xLwUWr7@(mtqcqy(v03ZYj62IBw~I#o?ytCV zEN;1<%~D1NySQ16j&Wy#rK;xcn&P6A_4s7qwfgh#ieu)^7c`%=;SKAi-!@zFS2Ml7 zW4^wyrchYg=C0@Z+NmepFUb2QoNbj4&*lyBs$6wVs_xt@?l11bnvFAjiq{7(Kiq6v z@&C}1%b%|2pJlzbJlYSWn*3}k$mo%b%E zet&1fTb=(NJnX?Y&J`&$YIdddRh(K-ba08!tl*_nmIKM12}1soAtuGUcXKix@W{Fl zDYNSsQ)O&2kl_|Id9J?tf^421)dw8nJ%8^duKu{|#x+(sx%tTq3HmH85r+izV!lg% zb7FbL)#|ix!bA2(sotAMB^Evh#sgn!glC$sFM}44%>l$9a4C2)i1Kvxb6Mw<&;$Ud C^1THB literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_slops.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_slops.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..7ba6421c21475779798ee7f5e6a71ced25914122 GIT binary patch literal 441 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zBRyRlLn`LH zy|vfxP=Lg-kL-&L4>&|{sPG*-D3Scf!)K1nUiNp5XL-ZlH59P(#5Kk=Xy>TNc61*+ z=aZ4tb^N8k6)v&(PTv3buT1`8V_AF2uT~Xk1qd7{in&pymt(#EU71wgjqF{O)%%R! zn8t3uJmcNmvs)Fv$y;(gk zeY=*nNTNtgkL@KcuNfW;Rhtfww|`Y~yyXhBWr z`6IR&1{|Slw;FkFTD3JS=i2`1=TqW?AAEUtU)?enxUbOcpCEr=YhEkQQCE}V z}}u7?bbCwDaNr*+uOwhZScQsQ@hifrgYv7iL(PZ2nwu!Tdb`^bQV1~<4(lY6r)g+KJT7L-RVFvnK|E^*34d1xTgE`>;-!|uFkeDUVhi;`0m@w zF6Yg>{8!f4I()*$5Le^pbxf0{sI2@N;|^qt8PwKtU;5%a>B~HoNlPw14t^V7FK^5Y zaW6xI)TdJ8gyg@b-{!ub-Dq=;)g;k)!qJ@!D0!W!ZXd+mjT4)fSP+Lcru9P>FVdQ&MBb@0L5an AMF0Q* literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_slops.rsi/meta.json b/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_slops.rsi/meta.json new file mode 100644 index 00000000000..4aa590794c0 --- /dev/null +++ b/Resources/Textures/_NF/Clothing/Uniforms/Jumpsuit/pirate_slops.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-NC-SA-4.0", + "copyright": "Created by GentleButter for Frontier Station", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-INNERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Devices/pirate_uplink.rsi/icon-overlay.png b/Resources/Textures/_NF/Objects/Devices/pirate_uplink.rsi/icon-overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..f73d8198c90ec9989912e9f161039177c3ca9eb7 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRS>pWc?Ln`LHy|a<`fB^@K!xW|8 z{%=wmr)cEQ+|7DV&!>4I*S}4#>YluR>Lm|U4hFN{+?d|(7?v8pphi>xBGmWkEB~Q7 zs64|ipZVwg@7vEkU-9y1$xkh)@YzeX89%=mdKI;Vst0HuIRtpET3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Devices/pirate_uplink.rsi/icon.png b/Resources/Textures/_NF/Objects/Devices/pirate_uplink.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a5ee33dd75973940f4dccd98597322f0b351f37a GIT binary patch literal 772 zcmV+f1N;1mP)A!}OCgc9&_;|_nqW*cghFC^6H1_oEA4Vw>>V8jU^pBCu)e;&toyAQFrrQq1z-Q(ru zaS}2Egb-=nZ=3U08UVCfEp>f;EldDw`u$)WO;~R;>d?P1=LYgt8dNG30IJn0rBX=& z0xa9mMz1%UYkc{~4PaXJ-TP=f@#lDogJ!DtOQjN?=P^G&&+X2ebO3V^J-rKaqj^6_ z`fWC_0Bskx(*Z&V9b{q7E~5LV&DPHCPBborltsre8a85@O(Wdv^-wC=>p1`cVi4HV zl_p?j$u!q`-EKD;7a+a|UD?RmjJo*m);`dn-|usBazd?EOPm9Vk6k6nA{^RK!uhv- z02ZIU67BYQP5`{DM9;AzWrc91d?;Zi2e%TTfbSOuKnNifPFP{yD0VidiV%5*$mjE1pN znAw;{Sl7_&o(f<_6PeQ0!T+Vs>}GdY0T80^f; z0^7_^3ElL5x=eDnM)LQ^u6{St+UDxb%zW)p+pzz-dEl>S{?#C*K%n#bc4x`e!xyEF zf6To1R{4zVqOiZr%f1Po+g>So)y|>!w8YD{Z>92y`)A)5HruJXc76V$nD^&DKaBWa x%fJx!nc-)KqU}bma6O<=e5nzhX}-P;T0l0~B|!R8@MIv#;OXk;vd$@?2>_8CVGRHP literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Devices/pirate_uplink.rsi/inhand-right.png b/Resources/Textures/_NF/Objects/Devices/pirate_uplink.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..8ddfd55cfad1fbb2e9d5435ff3294ee25b3211c9 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|mU+53hE&XX zd&`jPkb?m0g}@EdMP4$QX%;u#`7d(s;2|%^2&u`8WOIN_27*h$lR=cHtDnm{r-UW|Qcz;# literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Devices/pirate_uplink.rsi/meta.json b/Resources/Textures/_NF/Objects/Devices/pirate_uplink.rsi/meta.json new file mode 100644 index 00000000000..7a97353ba2c --- /dev/null +++ b/Resources/Textures/_NF/Objects/Devices/pirate_uplink.rsi/meta.json @@ -0,0 +1,32 @@ +{ + "version": 1, + "license": "CC-BY-NC-SA-4.0", + "copyright": "Created by GentleButter for Frontier Station, icon-overlay by Whatstone (Discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "icon" + }, + { + "name": "icon-overlay", + "delays": + [ + [0.1, 0.2, 0.1, 0.1, + 0.1, 0.1, 0.1, 0.05, + 0.1, 0.05, 0.075, 0.075, + 0.05, 0.2, 0.1, 0.1] + ] + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Specific/Pirate/pirate_doubloon.rsi/doubloon.png b/Resources/Textures/_NF/Objects/Specific/Pirate/pirate_doubloon.rsi/doubloon.png new file mode 100644 index 0000000000000000000000000000000000000000..89fc1d2a1f74d8e9e8dccdc56b1ef7175356830e GIT binary patch literal 482 zcmV<80UiE{P)Px$f=NU{R9J=Wl)Fj-|=iWtyK=$i;AZ3h6;LbV3W3=!@{ln0@Aw1P??O@Og!;Ph_|c<-`U z2t{>i0EVZae#!8n4@n6rzO_DjFcvp9fXcpJJwW{uWYQ6j&IKjEU4b~VGGO)wMk>gc z!hkw^{UM%8I^s67#Z-^>Rx%SMjW;S-)^3@d*6s)ayg)X%Wfc9CF`9)$2Tni zR8qv!1fthMyqiH}z2UcE(`;z^x4Rp~4#x+-OtjrJ#wHK|000hUSV?A0O#mtY000O8 Y00000007cclK=n!07*qoM6N<$f{_Koq5uE@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Specific/Pirate/pirate_doubloon.rsi/inhand-left.png b/Resources/Textures/_NF/Objects/Specific/Pirate/pirate_doubloon.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..0c28a2e3b99761eed069bf1010ea18b4882414ee GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|%sgEjLn`LH zy=BPDz`$|9An%W~qhiH_rX`{VtldC)hK8-{-t^~!SU~W=>^_h@aEKw4gF|Q4nd1pS h9$#vNXPU1sgBFm@0mLA1DR?r7@^tlcS?83{1OU@cC7}QS literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Specific/Pirate/pirate_doubloon.rsi/inhand-right.png b/Resources/Textures/_NF/Objects/Specific/Pirate/pirate_doubloon.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..11fbf058e329a417177d906d5f3259f3270760fd GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|tUX;ELn`LH zy=lnHV8Fw&@ytX2B^<#_lDk6nZ*t`A*8(bGh&cQ5=iLuVONBukAPB1X2qYKkZJf@b m!zU7u4dn2pMtG+A`Z9pja{w_2Tne5HqC8#wT-G@yGywq5!zU2{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Specific/Pirate/pirate_doubloon.rsi/meta.json b/Resources/Textures/_NF/Objects/Specific/Pirate/pirate_doubloon.rsi/meta.json new file mode 100644 index 00000000000..5380caa3c82 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Specific/Pirate/pirate_doubloon.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-NC-SA-4.0", + "copyright": "Made by GentleButter for Frontier Station 14", + "states": [ + { + "name": "doubloon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Weapons/Melee/pirate_hook.rsi/icon.png b/Resources/Textures/_NF/Objects/Weapons/Melee/pirate_hook.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..09f53492df512b893ade1c9b45d27a3579d4f559 GIT binary patch literal 621 zcmV-z0+RiSP)Px%4M{{nR9J=Omb-2mK^TR<+1;73u#jv;qDVsur*WSu?_klz?LI(Scn4mBCJ%u8 zI4N^cB$SPVky+Twj0?s1vJkar{V@YeP9=sgIH$^ zoQLo=EVlq4NfNK`9xUK)IJB_x0AC|ISipMeeSbYT7||}Q8xZ*Q{U`$J4&63twO}w9 zR8E&9iI?*oEMQ5#?fG>@c$Myb`>hRxAf3<2ijq9b04U9h`|o6W+AT14K^6!>7%fI9 z4C?!tvw-WXwgoW8U=hsb8AVZI5!DCaqS^3jg?9z=qQDx%nN}zzEBdIWqa18Rk(31C zYMV=Q0s+@oZEK9dn9b~YmQmz6rYtt@o9FIra5kc{EUWXkFCSq13#MZLzJ8zcvH#$j zs-A!iJd^((7yNlB`7z3CrSTRJ1dEQn`}`AQEa_}kJzMtzubi%dQp&wCz60niAPU3k ztd&}w9saN$MZglvDrlt$p50GtO(Z2s?XS>FaQ4uPX2XVoKx>7P5*e+=Coc*nk11Kc z*p$hm-}~U7;t61P^R^he+*<$u01jnXNoGw=04e|g00;m8000000Mb*F00000NkvXX Hu0mjf_VgB5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Melee/pirate_hook.rsi/inhand-left.png b/Resources/Textures/_NF/Objects/Weapons/Melee/pirate_hook.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..d80d0337159cab327b35bd278fa68e048a49549f GIT binary patch literal 447 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z<2_v*Ln`LH zy=Cit*g=Nv!}7H&O|J_XT9kOSKM;tSbL8OFlLsCDNSyPl>)v%=s7plrpyyu&KBca_ zeGeB*-B)lY&^-r zXls<{SDT*OKL6c)q)T#|?RfjIC>mUd?Mi-OTB?UA{%_ccxzdg|i`! zKSgzP`PLS-Ef&1SZ*TA;#A&jq3eObJM<+Z|)|T8-RvD{MgCx9WHrmq zdwk+2U&=L3(Wz~^^oBtpdj0~Dc*eC`13$}cEBkh&y2Zt1={MF4o$$90*4bl$9a4C2)i1Kvxb6Mw<&;$U755UL( literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Melee/pirate_hook.rsi/inhand-right.png b/Resources/Textures/_NF/Objects/Weapons/Melee/pirate_hook.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..891b7911b50288009677896638f766fd6f383c07 GIT binary patch literal 468 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zOFUg1Ln`LH zy|v%(kOKqT2Y!L5>IqVu&g>E$%=!s3HO%hw4&OX!@q=qed1i;Ao|@ka?jLM^d|8hI z{vT-!`uB9st_jZ;Jj~hg@4)fv=63aN zr=D+jyek@H!8a#Xn&HEjKda8fgz$!)O0}7zTTuOJnc<`R(q+zf=J!3kmZd%aZXmB; zy0OeWcZuUp(K~Ep*qIJ#Ce-Ke`kBJ6>whg)(R{w9eQEd!zuha;Umd#Bl_*Xq|!uD`=r=342NXRG^@{jbBXefd}XKGeqZ{b~%H+1UXH zMH7DR+kZLlRE7*QgInN~?DPdsO`n{uUQxPtYI*bNoYRLMFKtaUzcMpf*Yl<0@-yY` zA5)qZcXPT0{+qsRTk6w&X{)APH&|!9VCu@bjV3eCGaR^cu0d>BIoq_<|J)MyBrhB~ ya*jbzaOn@$^2Q{|-pQ_Nz{ucBjqptK^<~fkvN?bl1TF$k( literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Melee/pirate_hook.rsi/meta.json b/Resources/Textures/_NF/Objects/Weapons/Melee/pirate_hook.rsi/meta.json new file mode 100644 index 00000000000..974e9b22839 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Weapons/Melee/pirate_hook.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-NC-SA-4.0", + "copyright": "Created by GentleButter for Frontier Station", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} From 8b232093e68ec7a081b86cb7cc06465222bd3e61 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Thu, 13 Jun 2024 20:19:41 -0400 Subject: [PATCH 15/16] Fix ammunition icons in vendors (#1426) * Ammo icons, first pass * Ammo icons, continued * Fix copyright in ammo/box RSI metadata; humility * Fix anti-materiel metadata * Add icons for speedloaders and rubber ammo --- .../Guns/Ammunition/Boxes/antimateriel.yml | 6 +++ .../Guns/Ammunition/Boxes/caseless_rifle.yml | 12 ++++++ .../Guns/Ammunition/Boxes/light_rifle.yml | 15 +++++++ .../Weapons/Guns/Ammunition/Boxes/magnum.yml | 15 +++++++ .../Weapons/Guns/Ammunition/Boxes/pistol.yml | 12 ++++++ .../Weapons/Guns/Ammunition/Boxes/rifle.yml | 15 +++++++ .../Weapons/Guns/Ammunition/Boxes/shotgun.yml | 24 +++++++++++ .../Weapons/Guns/Ammunition/Boxes/toy.yml | 6 +++ .../Guns/Ammunition/SpeedLoaders/magnum.yml | 15 +++++++ .../Guns/Ammunition/SpeedLoaders/pistol.yml | 6 +++ .../Ammunition/SpeedLoaders/rifle_light.yml | 3 ++ .../Guns/Ammunition/Boxes/caseless_rifle.yml | 6 +++ .../Guns/Ammunition/Boxes/light_rifle.yml | 3 ++ .../Weapons/Guns/Ammunition/Boxes/magnum.yml | 3 ++ .../Weapons/Guns/Ammunition/Boxes/pistol.yml | 6 +++ .../Weapons/Guns/Ammunition/Boxes/rifle.yml | 6 +++ .../Ammunition/SpeedLoaders/heavy_rifle.yml | 12 ++++++ .../Guns/Ammunition/SpeedLoaders/magnum.yml | 3 ++ .../Guns/Ammunition/SpeedLoaders/pistol.yml | 3 ++ .../Storage/boxes.rsi/foamdartsdisplay.png | Bin 0 -> 379 bytes .../_NF/Objects/Storage/boxes.rsi/meta.json | 38 ++++++++++++++++++ .../boxes.rsi/shotgunbeanbagdisplay.png | Bin 0 -> 347 bytes .../Storage/boxes.rsi/shotgunflaredisplay.png | Bin 0 -> 346 bytes .../Storage/boxes.rsi/shotgunflashdisplay.png | Bin 0 -> 336 bytes .../boxes.rsi/shotgunincendiarydisplay.png | Bin 0 -> 371 bytes .../boxes.rsi/shotgunlethaldisplay.png | Bin 0 -> 377 bytes .../boxes.rsi/shotgunpracticedisplay.png | Bin 0 -> 359 bytes .../Storage/boxes.rsi/shotgunslugdisplay.png | Bin 0 -> 323 bytes .../boxes.rsi/shotgunuraniumdisplay.png | Bin 0 -> 344 bytes .../Boxes/anti_materiel.rsi/bigdisplay.png | Bin 0 -> 345 bytes .../Boxes/anti_materiel.rsi/display.png | Bin 0 -> 500 bytes .../Boxes/anti_materiel.rsi/meta.json | 17 ++++++++ .../Boxes/caseless_rifle.rsi/10x24display.png | Bin 0 -> 390 bytes .../Boxes/caseless_rifle.rsi/bigdisplay.png | Bin 0 -> 313 bytes .../caseless_rifle.rsi/bigrubberdisplay.png | Bin 0 -> 323 bytes .../Boxes/caseless_rifle.rsi/display.png | Bin 0 -> 539 bytes .../Boxes/caseless_rifle.rsi/meta.json | 29 +++++++++++++ .../caseless_rifle.rsi/practicedisplay.png | Bin 0 -> 546 bytes .../caseless_rifle.rsi/rubberdisplay.png | Bin 0 -> 543 bytes .../Boxes/light_rifle.rsi/bigdisplay.png | Bin 0 -> 320 bytes .../Boxes/light_rifle.rsi/display.png | Bin 0 -> 506 bytes .../light_rifle.rsi/incendiarydisplay.png | Bin 0 -> 478 bytes .../Boxes/light_rifle.rsi/meta.json | 29 +++++++++++++ .../Boxes/light_rifle.rsi/practicedisplay.png | Bin 0 -> 465 bytes .../Boxes/light_rifle.rsi/rubberdisplay.png | Bin 0 -> 470 bytes .../Boxes/light_rifle.rsi/uraniumdisplay.png | Bin 0 -> 485 bytes .../Boxes/magnum.rsi/capdisplay.png | Bin 0 -> 500 bytes .../Ammunition/Boxes/magnum.rsi/display.png | Bin 0 -> 466 bytes .../Boxes/magnum.rsi/incendiarydisplay.png | Bin 0 -> 473 bytes .../Ammunition/Boxes/magnum.rsi/meta.json | 32 +++++++++++++++ .../Boxes/magnum.rsi/piercingdisplay.png | Bin 0 -> 472 bytes .../Boxes/magnum.rsi/practicedisplay.png | Bin 0 -> 478 bytes .../Boxes/magnum.rsi/rubberdisplay.png | Bin 0 -> 477 bytes .../Boxes/magnum.rsi/uraniumdisplay.png | Bin 0 -> 482 bytes .../Ammunition/Boxes/pistol.rsi/display.png | Bin 0 -> 450 bytes .../Boxes/pistol.rsi/empdisplay.png | Bin 0 -> 488 bytes .../Boxes/pistol.rsi/incendiarydisplay.png | Bin 0 -> 469 bytes .../Ammunition/Boxes/pistol.rsi/meta.json | 29 +++++++++++++ .../Boxes/pistol.rsi/practicedisplay.png | Bin 0 -> 456 bytes .../Boxes/pistol.rsi/rubberdisplay.png | Bin 0 -> 456 bytes .../Boxes/pistol.rsi/uraniumdisplay.png | Bin 0 -> 470 bytes .../Ammunition/Boxes/rifle.rsi/bigdisplay.png | Bin 0 -> 315 bytes .../Boxes/rifle.rsi/bigpracticedisplay.png | Bin 0 -> 330 bytes .../Ammunition/Boxes/rifle.rsi/display.png | Bin 0 -> 532 bytes .../Boxes/rifle.rsi/incendiarydisplay.png | Bin 0 -> 536 bytes .../Guns/Ammunition/Boxes/rifle.rsi/meta.json | 32 +++++++++++++++ .../Boxes/rifle.rsi/practicedisplay.png | Bin 0 -> 531 bytes .../Boxes/rifle.rsi/rubberdisplay.png | Bin 0 -> 515 bytes .../Boxes/rifle.rsi/uraniumdisplay.png | Bin 0 -> 484 bytes .../argenti_speed_loader.rsi/meta.json | 12 ++++++ .../piercing-icon.png | Bin 0 -> 433 bytes .../practice-icon.png | Bin 0 -> 467 bytes .../argenti_speed_loader.rsi/rubber-icon.png | Bin 0 -> 450 bytes .../argenti_speed_loader.rsi/uranium-icon.png | Bin 0 -> 440 bytes .../light_rifle_speed_loader.rsi/icon.png | Bin 0 -> 566 bytes .../light_rifle_speed_loader.rsi/meta.json | 14 +++++++ .../Magnum/magnum_speed_loader.rsi/meta.json | 23 +++++++++++ .../magnum_speed_loader.rsi/piercing-icon.png | Bin 0 -> 441 bytes .../magnum_speed_loader.rsi/practice-icon.png | Bin 0 -> 420 bytes .../magnum_speed_loader.rsi/rubber-icon.png | Bin 0 -> 452 bytes .../magnum_speed_loader.rsi/uranium-icon.png | Bin 0 -> 504 bytes .../Pistol/pistol_speed_loader.rsi/icon.png | Bin 0 -> 475 bytes .../Pistol/pistol_speed_loader.rsi/meta.json | 20 +++++++++ .../pistol_speed_loader.rsi/practice-icon.png | Bin 0 -> 472 bytes .../pistol_speed_loader.rsi/rubber-icon.png | Bin 0 -> 500 bytes 85 files changed, 446 insertions(+) create mode 100644 Resources/Textures/_NF/Objects/Storage/boxes.rsi/foamdartsdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Storage/boxes.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Storage/boxes.rsi/shotgunbeanbagdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Storage/boxes.rsi/shotgunflaredisplay.png create mode 100644 Resources/Textures/_NF/Objects/Storage/boxes.rsi/shotgunflashdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Storage/boxes.rsi/shotgunincendiarydisplay.png create mode 100644 Resources/Textures/_NF/Objects/Storage/boxes.rsi/shotgunlethaldisplay.png create mode 100644 Resources/Textures/_NF/Objects/Storage/boxes.rsi/shotgunpracticedisplay.png create mode 100644 Resources/Textures/_NF/Objects/Storage/boxes.rsi/shotgunslugdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Storage/boxes.rsi/shotgunuraniumdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/anti_materiel.rsi/bigdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/anti_materiel.rsi/display.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/anti_materiel.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/10x24display.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/bigdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/bigrubberdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/display.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/practicedisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/rubberdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi/bigdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi/display.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi/incendiarydisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi/practicedisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi/rubberdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi/uraniumdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/capdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/display.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/incendiarydisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/piercingdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/practicedisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/rubberdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/uraniumdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/display.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/empdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/incendiarydisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/practicedisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/rubberdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/uraniumdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/bigdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/bigpracticedisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/display.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/incendiarydisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/practicedisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/rubberdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/uraniumdisplay.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi/piercing-icon.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi/practice-icon.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi/rubber-icon.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi/uranium-icon.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/LightRifle/light_rifle_speed_loader.rsi/icon.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/LightRifle/light_rifle_speed_loader.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/piercing-icon.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/practice-icon.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/rubber-icon.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/uranium-icon.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/icon.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/meta.json create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/practice-icon.png create mode 100644 Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/rubber-icon.png diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/antimateriel.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/antimateriel.yml index 28157ef3450..c54d9197768 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/antimateriel.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/antimateriel.yml @@ -33,6 +33,9 @@ - type: BallisticAmmoProvider capacity: 30 proto: CartridgeAntiMateriel + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/anti_materiel.rsi # Frontier + state: bigdisplay # Frontier - type: Sprite layers: - state: base-b @@ -52,6 +55,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeAntiMateriel + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/anti_materiel.rsi # Frontier + state: display # Frontier - type: Sprite layers: - state: base diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml index 98ad35b70d2..3fcfe75ee3e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml @@ -33,6 +33,9 @@ - type: BallisticAmmoProvider capacity: 200 proto: CartridgeCaselessRifle + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi # Frontier + state: 10x24display # Frontier - type: Sprite layers: - state: base-10x24 @@ -53,6 +56,9 @@ - type: BallisticAmmoProvider capacity: 200 proto: CartridgeCaselessRifle + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi # Frontier + state: bigdisplay # Frontier - type: Sprite layers: - state: base-b @@ -72,6 +78,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeCaselessRifle + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi # Frontier + state: display # Frontier - type: Sprite layers: - state: base @@ -86,6 +95,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeCaselessRiflePractice + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi # Frontier + state: practicedisplay # Frontier - type: Sprite layers: - state: base diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml index 3241a892262..67c2399e736 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml @@ -33,6 +33,9 @@ - type: BallisticAmmoProvider capacity: 200 proto: CartridgeLightRifle + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi # Frontier + state: bigdisplay # Frontier - type: Sprite layers: - state: base-b @@ -52,6 +55,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeLightRifle + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi # Frontier + state: display # Frontier - type: Sprite layers: - state: base @@ -66,6 +72,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeLightRiflePractice + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi # Frontier + state: practicedisplay # Frontier - type: Sprite layers: - state: base @@ -81,6 +90,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeLightRifleIncendiary + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi # Frontier + state: incendiarydisplay # Frontier - type: Sprite layers: - state: base @@ -96,6 +108,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeLightRifleUranium + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi # Frontier + state: uraniumdisplay # Frontier - type: Sprite layers: - state: base diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml index 018d812e3f5..9376316d967 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml @@ -31,6 +31,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeMagnum + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi # Frontier + state: display # Frontier - type: Sprite layers: - state: base @@ -45,6 +48,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeMagnumPractice + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi # Frontier + state: practicedisplay # Frontier - type: Sprite layers: - state: base @@ -60,6 +66,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeMagnumIncendiary + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi # Frontier + state: incendiarydisplay # Frontier - type: Sprite layers: - state: base @@ -75,6 +84,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeMagnumUranium + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi # Frontier + state: uraniumdisplay # Frontier - type: Sprite layers: - state: base @@ -90,6 +102,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeMagnumAP + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi # Frontier + state: piercingdisplay # Frontier - type: Sprite layers: - state: base diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml index d6608e74108..7ae0060e330 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml @@ -32,6 +32,9 @@ components: - type: BallisticAmmoProvider proto: CartridgePistol + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi # Frontier + state: display # Frontier - type: Sprite layers: - state: base @@ -46,6 +49,9 @@ components: - type: BallisticAmmoProvider proto: CartridgePistolPractice + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi # Frontier + state: practicedisplay # Frontier - type: Sprite layers: - state: base @@ -61,6 +67,9 @@ components: - type: BallisticAmmoProvider proto: CartridgePistolIncendiary + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi # Frontier + state: incendiarydisplay # Frontier - type: Sprite layers: - state: base @@ -76,6 +85,9 @@ components: - type: BallisticAmmoProvider proto: CartridgePistolUranium + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi # Frontier + state: uraniumdisplay # Frontier - type: Sprite layers: - state: base diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml index 7a5f5d27ca6..8c7c34cb17f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml @@ -32,6 +32,9 @@ - type: BallisticAmmoProvider capacity: 200 proto: CartridgeRifle + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi # Frontier + state: bigdisplay # Frontier - type: Sprite layers: - state: base-b @@ -51,6 +54,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeRifle + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi # Frontier + state: display # Frontier - type: Sprite layers: - state: base @@ -65,6 +71,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeRiflePractice + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi # Frontier + state: practicedisplay # Frontier - type: Sprite layers: - state: base @@ -80,6 +89,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeRifleIncendiary + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi # Frontier + state: incendiarydisplay # Frontier - type: Sprite layers: - state: base @@ -95,6 +107,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeRifleUranium + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi # Frontier + state: uraniumdisplay # Frontier - type: Sprite layers: - state: base diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml index 63ad52c0320..bb1ce741e8b 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml @@ -32,6 +32,9 @@ components: - type: BallisticAmmoProvider proto: ShellShotgunBeanbag + - type: Icon # Frontier + sprite: _NF/Objects/Storage/boxes.rsi # Frontier + state: shotgunbeanbagdisplay # Frontier - type: Sprite layers: - state: boxwide @@ -45,6 +48,9 @@ components: - type: BallisticAmmoProvider proto: ShellShotgun + - type: Icon # Frontier + sprite: _NF/Objects/Storage/boxes.rsi # Frontier + state: shotgunlethaldisplay # Frontier - type: Sprite layers: - state: boxwide @@ -58,6 +64,9 @@ components: - type: BallisticAmmoProvider proto: ShellShotgunSlug + - type: Icon # Frontier + sprite: _NF/Objects/Storage/boxes.rsi # Frontier + state: shotgunslugdisplay # Frontier - type: Sprite layers: - state: boxwide @@ -71,6 +80,9 @@ components: - type: BallisticAmmoProvider proto: ShellShotgunFlare + - type: Icon # Frontier + sprite: _NF/Objects/Storage/boxes.rsi # Frontier + state: shotgunflaredisplay # Frontier - type: Sprite layers: - state: boxwide @@ -84,6 +96,9 @@ components: - type: BallisticAmmoProvider proto: ShellShotgunIncendiary + - type: Icon # Frontier + sprite: _NF/Objects/Storage/boxes.rsi # Frontier + state: shotgunincendiarydisplay # Frontier - type: Sprite layers: - state: boxwide @@ -97,6 +112,9 @@ components: - type: BallisticAmmoProvider proto: ShellShotgunUranium + - type: Icon # Frontier + sprite: _NF/Objects/Storage/boxes.rsi # Frontier + state: shotgunuraniumdisplay # Frontier - type: Sprite layers: - state: boxwide @@ -110,6 +128,9 @@ components: - type: BallisticAmmoProvider proto: ShellShotgunPractice + - type: Icon # Frontier + sprite: _NF/Objects/Storage/boxes.rsi # Frontier + state: shotgunpracticedisplay # Frontier - type: Sprite layers: - state: boxwide @@ -123,6 +144,9 @@ components: - type: BallisticAmmoProvider proto: ShellTranquilizer + - type: Icon # Frontier + sprite: _NF/Objects/Storage/boxes.rsi # Frontier + state: shotgunslugdisplay # Frontier - type: Sprite layers: - state: boxwide diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/toy.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/toy.yml index 11649f3db3c..f1546fac653 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/toy.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/toy.yml @@ -25,6 +25,9 @@ - BulletFoam capacity: 40 proto: BulletFoam + - type: Icon # Frontier + sprite: _NF/Objects/Storage/boxes.rsi # Frontier + state: foamdartsdisplay # Frontier - type: Sprite sprite: Objects/Storage/boxes.rsi layers: @@ -39,6 +42,9 @@ - type: BallisticAmmoProvider proto: CartridgeCap capacity: 20 + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi # Frontier + state: capdisplay # Frontier - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi layers: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml index 08d50db9b2c..a70a3fc00ec 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml @@ -26,6 +26,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeMagnum + - type: Icon # Frontier + sprite: Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi # Frontier + state: icon # Frontier - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi layers: @@ -46,6 +49,9 @@ components: - type: BallisticAmmoProvider proto: null + - type: Icon # Frontier + sprite: Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi # Frontier + state: base # Frontier - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi layers: @@ -67,6 +73,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeMagnumPractice + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi # Frontier + state: practice-icon # Frontier - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi layers: @@ -87,6 +96,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeMagnumAP + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi # Frontier + state: piercing-icon # Frontier - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi layers: @@ -107,6 +119,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeMagnumUranium + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi # Frontier + state: uranium-icon # Frontier - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi layers: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml index 3ce419b2c3c..0827aaa83fe 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml @@ -27,6 +27,9 @@ components: - type: BallisticAmmoProvider proto: CartridgePistol + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi # Frontier + state: icon # Frontier - type: Sprite layers: - state: base @@ -46,6 +49,9 @@ components: - type: BallisticAmmoProvider proto: CartridgePistolPractice + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi # Frontier + state: practice-icon # Frontier - type: Sprite layers: - state: base diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/rifle_light.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/rifle_light.yml index f5274406007..3d9c1198d08 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/rifle_light.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/rifle_light.yml @@ -14,6 +14,9 @@ - CartridgeLightRifle capacity: 5 proto: CartridgeLightRifle + - type: Icon # Frontier + sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/LightRifle/light_rifle_speed_loader.rsi # Frontier + state: icon # Frontier - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/SpeedLoaders/LightRifle/light_rifle_speed_loader.rsi layers: diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml index d5d24f82b85..9ba72d6bf12 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml @@ -6,6 +6,9 @@ - type: BallisticAmmoProvider capacity: 200 proto: CartridgeCaselessRifleRubber + - type: Icon + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi + state: bigrubberdisplay - type: Sprite layers: - state: base-b @@ -26,6 +29,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeCaselessRifleRubber + - type: Icon + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi + state: rubberdisplay - type: Sprite layers: - state: base diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml index 2c30951bc98..bb3e1c1204a 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.yml @@ -5,6 +5,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeLightRifleRubber + - type: Icon + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi + state: rubberdisplay - type: Sprite layers: - state: base diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml index 84625045327..322cf3edc1c 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml @@ -5,6 +5,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeMagnumRubber + - type: Icon + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi + state: rubberdisplay - type: Sprite layers: - state: base diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml index 7ef05673de8..35d8d8caf52 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml @@ -6,6 +6,9 @@ components: - type: BallisticAmmoProvider proto: CartridgePistolRubber + - type: Icon + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi + state: rubberdisplay - type: Sprite layers: - state: base @@ -22,6 +25,9 @@ components: - type: BallisticAmmoProvider proto: CartridgePistolEmp + - type: Icon + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi + state: empdisplay - type: Sprite layers: - state: base diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml index 67eb0fd869b..c86b5bcdb26 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml @@ -6,6 +6,9 @@ - type: BallisticAmmoProvider capacity: 200 proto: CartridgeRiflePractice + - type: Icon + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi + state: bigpracticedisplay - type: Sprite layers: - state: base-b @@ -26,6 +29,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeRifleRubber + - type: Icon + sprite: _NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi + state: rubberdisplay - type: Sprite layers: - state: base diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/heavy_rifle.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/heavy_rifle.yml index 8320212f396..2fea05d787b 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/heavy_rifle.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/heavy_rifle.yml @@ -26,6 +26,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeRifle + - type: Icon + sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi + state: icon - type: Sprite sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi layers: @@ -79,6 +82,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeRiflePractice + - type: Icon + sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi + state: practice-icon - type: Sprite sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi layers: @@ -99,6 +105,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeRifleUranium + - type: Icon + sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi + state: uranium-icon - type: Sprite sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi layers: @@ -119,6 +128,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeRifleRubber + - type: Icon + sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi + state: rubber-icon - type: Sprite sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi layers: diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml index 8f845f3adcb..d5c55448a0a 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml @@ -5,6 +5,9 @@ components: - type: BallisticAmmoProvider proto: CartridgeMagnumRubber + - type: Icon + sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi + state: rubber-icon - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi layers: diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml index db1a4d07339..99bb3ee0439 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml @@ -6,6 +6,9 @@ components: - type: BallisticAmmoProvider proto: CartridgePistolRubber + - type: Icon + sprite: _NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi + state: rubber-icon - type: Sprite layers: - state: base diff --git a/Resources/Textures/_NF/Objects/Storage/boxes.rsi/foamdartsdisplay.png b/Resources/Textures/_NF/Objects/Storage/boxes.rsi/foamdartsdisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..9719d459956975e015799ab19e69ed3316cffb9a GIT binary patch literal 379 zcmV->0fhdEP)3`7oP{E|97q-H;4KM=Tp9_8e?aj+^cT7JFLV{$MFcSlE-gqL>LSQ3E*;GB zIfQ~~a&3~HM(`d89PbDBzHs^OKEPsW7)PViZ~5f|oPxOEP;bhpGw*PySOHgA&o!ei zHLw9153sH)@D6V-fQrp_K(zo0U>^Gsvt*Q%2=EQ}e&2}k_~=Dj(*_W?duVO8004Kr z$4o7J@Jnm6z2f87LZ8xI;QQ%UM_a_gBbc!p?V#tJ0|4HmOTgJKtyL!gu|6YD2nwa7 zP)ZsOKtydKYSVClN?Ir-c|s8DGeVGmxTv5lBR>%ZAav8^;m9qMZz)gSI9*HtL|M<`nXsT;j1XyOP>bas Z^93O>heXulo$&ww002ovPDHLkV1gO=p~C+Pih=98xn)_*X0ukyg%B8qk%wWp zBC*|SO9Qk(?*gSITp)z#PhdPA|4F%0AW0Hz+wP<+j^lcPWd?&mE5$(&RK8UTj7B5U zGzH-L_MC&WeE{B{=G@;ruAMDrd7h{2>HQaI0p$*4Sysx@`A6fdYG$Q?itpFY#@TPI zC2)6f!tv1#058ecMp+&Ia|eoCI(zIMUIB3W_Q3N7SskSlNlKZUrU}4sI9$iC7T@;) tm`5W+U82b^xeLV`b#c0M7$u(iFVz4iXW{zXWc#=^pf&7xsS*~TK(OA!KD zosF)zF~ywnGR!^2o5uhS$I9H;!Y~Z^8f8UM4Enr&5JeFyrC^L%v|I=Q&+|CX^Am~N zMO$Xz1XdRq4Bp&`o#??vC!>f|pV>ws^q7bO{Yd3B;kvmWp$Znt#$H z@R>f}4}Ble4}P$*u`*|EpZjm;2<-2#fE}>=To2DC2~<@z=;kqWJ#+O>@Z&K&yT0M#@)m&iw?|$_WPLP7Bt=nbS(X8C9A}7MFRtqXkYyQZnjUqw&V-7h iEHV?GmTzoq0DJ(34Pmc@1UM)F0000B*hX)J>YbL1WEjXw9}-{FQiLhFQl=z*lP0$o398d(+II}un8Kbl)z$< zP4QAKtgAuYxY1%x=VkERdFU{JMl&);O`+pBbO>1-$2Fg^8@R4ZmSsUHHK?312E#BY zilR!1<3TNZpbLy%p!N}NV2q7dAWhSMkvA47iUPK6A4HZUNqd29JkJ|M9EM@{#hh~z zLXc95q?9D3q~!ucG$W!JEf?sONhwJwMM4PToYzj+>HY=Vr1vM7Kb!#oR>e22-nwUP zOmhNdSyrB{`5L!(D*(XL1uzp-YDn3Kbzj2EoC>B}0eKy@6gpZo%ErrIWYdt%Tk{28Td4Ez(I!MCed^ zI)p%CwEmz?2cPj3zV{i<@jEawa$zQAp=p|8h_WCE&idqHU|E*Xb)7hldo5R06=FLx-@djQ^(yj51m|J?=0JeW6J z-#!8`|9IuCMOMezdC@dY%w{tH9LH(mSBvYq07Owl7=|aErEfw_(*}7H7RyIQMgV>Q X*F1uxqDh_900000NkvXXu0mjfZBL`f literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Storage/boxes.rsi/shotgunpracticedisplay.png b/Resources/Textures/_NF/Objects/Storage/boxes.rsi/shotgunpracticedisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..e375f869acdc404a81d72a57d87c2d8904c6385b GIT binary patch literal 359 zcmV-t0hs=YP)zaXAuvh zS_ZHNEFMrhg#QpimJ3MJbQXDIKv|YBO>+`i9LKiLp8IN^j*DWVAC z&^P`heJ`YtA5bV3W+fY1metH5OOmAH)1C*mZ8wHtKnO9ZoKgx+(;CkCL&SPg%Lr7! z;sKpY*g`2?E+EUYpU9;FWm&>B%~@n=nhpot<9XgB;xG(*pY;YrQG}|h0055T-0p-B z0&yI_J!{W$U03Q^{3}oa(tx_ICl~dd`JZn<1|bB5kWsT&y!;Q`!#N*4`#OLhw%F|U z0D#N+h|>qNAv!A(W31729RT3_{yTkx1VI1*D2f7kotS%Uj;3-*@wZoz%HgcK=k1S=IR9FTxNfoWck7-9A_1=@B5?AMhgT%fV!>$ z0G4GzmSq4yS(XUHaCUZ^W!pB_v-@8l3UGIzZQDWCb=~4@Z02YI9!=9M&VFN70n=0P zaykG2zAo2?vMK)O4)h`CBk1cJ0N~^E{h@4%!AYj7DpM2%0N}drtRYi)o(BNP^Bh^0 q-8s28p{8k@+=OYG4sJq$K=2Lm8F0Pp*wdT<0000I4^b8(t37by241xUv!S)I3Y2vRiOs+;Yt01| zb!j06NIZmELJlB17a)fQu_1#E5LFOi18E7NDEzCJ&(qfdz7Z6G8A3Ug`2PO+A|79!N>*xSZ{b?2poq-00000NkvXXu0mjfQDcEg literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/anti_materiel.rsi/display.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/anti_materiel.rsi/display.png new file mode 100644 index 0000000000000000000000000000000000000000..3d514bb89a3b30074091677de4856c0b9f85ab9a GIT binary patch literal 500 zcmVkHV3tHu$1JWNeP$b;7<@G<>oK&7dXgGIXH?x!9gNL*)&{;WgKQ$ z)HK_)YR}`qyk^;*AIw3SPrcsE>&^Rq-j8{Zl9KY@X-i^|sf97udp_Jgi#29P5&{5{ zoFS*k0B#(SLbEH*CYy~_CUHf=1sCg{I#<;5le)l5*|DMCg@_QI} z6|&t~bj@sN|CK;cAi&!2Et|U%%kwohuOyDE4%zN3HM@>7& zTe#Q%{@e(>l3NOV?w6|!^tKH5OZYk3DFybAB=A)t2+Od!K7A1HVYBuVsbl}B;toyp qiJ5*4j2jwTz>`QKFeN4B&+!h%qS_T*#ia270000u$pZ%tU=`mmzxMyt`(GHUoBHwUXJBApaBy(IE6+s80Bn|98>^72jXDlM zwmdDwfT6Xn@IT!gKy9Cs@CBF`L+Ky%&#RWN=VLz$l&PNI}BDVhZ+1z6Bx3hKa%ATybh>t z>Svs_<^n;>pPbmuaPII^6o*(Fs}Pky$qE5nmc!VL`iUrMgCYl@hXOS%XJBApU?El^ z%us4t&cHxq6u>H-w1iLwotQ~PSx#(aMRW)-FfcG&y?ma5fq{WRTeqA+N1lP<$%#&i zEGO9kxEwNT!D_NBC))wY4k6d)FhF!Ryn6o&1FkZGT+104NC*L#;jqFbEyRFg%Smzo kE{7nCje=1y3Wg*A0DqL>3#>3E<^TWy07*qoM6N<$f;{M;=l}o! literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/bigdisplay.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/bigdisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..4a21cf68df697779010028296d1427281017c7ba GIT binary patch literal 313 zcmV-90mlA`P)jGsHK=CPKgAPWG1Q5R_0Gc8+5 z0RV9IHd>aV!CADw0KiSpHr0ERLnwrUp*`T#nd9i4;JRz&5dQrZD1X5ty~DDmKZzd> zTVoQ=*E6aL~QZFdD{6k%BY;0Coc~t$|Yf zi2(pe!--O)D04Oi8vr<}#frQ)c?pGZ(6(9}pKmO}C47G@y@Y>%1=0~*PG@vF{jbF5 z^Qm;5yaRC(K?p}l-1o=i9;t!DVQ*CHwdWYTAO!%pwh1pt;o9a)J|oL#J(LXqk1^zt z2~xFr*#Ce`EHmT<>6RI-3|r+191okb}C3a9dVHqL5fO+cL*YMak=1H zh2C9}xQI)ITRN0jhvR6&c|p3o4qgkXSM$R~Fwd4Z$@lZT-}eV(WMpLg? z$Au6Qz%Y!+8s&0%<-4`0pU=Z_9BJ>UTt51Y5JJvn(vVodaU5xFPx0I?H}o&eMS@yY z2DNHpk&8*gZ=SU9+^c*#_{yD!_wd{s!g zL{}h6;zCsTY&MgnQi<`d#kbMPqV2o=>!EOfOZ^^4x5|9HqT}uF0pJ7s$CF2^>c{GU z@B555TZ}hbynXVDb|=q+Q;pkiUIQ#B zKKnG`kn$b?IQ%gSJ#Sd%Z{Z^e6=DDJG(-waCKFuOT`4gad4D`j91by-pkA*l0L^Ao z0^9|>(|~L1xsXVj@K^%NB8y|SB#|Z@QtW|>u$79im63!G--EvjhlE%0vIvAPnxx?w d85#csKLNIK(&Od2BkKSF002ovPDHLkV1gi__5}a{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/meta.json b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/meta.json new file mode 100644 index 00000000000..942223151ba --- /dev/null +++ b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi, tweaked by Alekshhh", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "10x24display" + }, + { + "name": "bigdisplay" + }, + { + "name": "bigrubberdisplay" + }, + { + "name": "display" + }, + { + "name": "practicedisplay" + }, + { + "name": "rubberdisplay" + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/practicedisplay.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/practicedisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..8c950707c9d393168d3a8f004696a1cfbc9fb8f1 GIT binary patch literal 546 zcmV+-0^R+IP)r&`F+x>Xo&-4AhKOi6=AmF+aa{Hmx zYMuLD2q6J9O>>TnH_5R`BCVk)3bV}x z+G@ce62BeBP2z@I_;5Is$z+nwN|Ei&-ni{6pJyE50C&v~>?=?B$^(9WSqI?PZ^_5a z{?es7VB0pGxiX!(GOMrOQK?1I9)@{pz6BUp-Bt^jrpeS=agu2P51Y`o?UMmpanyT# z;AGQ{s`nEPKJNhlbGPSso^3At6TZ_wM$Om%dm3B?y4@~@VO%IN5^1*gJcq*sOOVUu zLI9;wNdlw+vwMVc=cYr%PxwRvXGQ)VE2o5?aPYAQ)OLD7Z+rf{R>mDF%YPLviUScXV;c zl0(6BkuL3|A(Uu(h~|zuBmsFH;>9L5-VYbSd$xPu_ul98ectc;LZU>868-N|f)=#f z?K8)P5E4Msw7@;edH3ogm4_-ly9K0?*&G0>)t3Oz?<@x%4Ma#l2qEmk+$2Y~P2T!sg4 z9xd8GR1bKb2RF6>*n9E-`{+6^)}H~;U{bZ8K&R6|?}YE|&`s!h9sv5Kr=)H#Psjc0 zc^k=>|yP4n2N5@@^YUPi&ArN3N7+~A>LI@vZ^nO3GIfOWZTCJu4)a&(0 zH($NW@QXw0@~>lzO7(E~=cq8QbRGCJW(i`r1r!OD3&HIt@k0S(h1aX?M#SI3-UvUR>x|oY2 SlyqqT00009pKh$Pey(dLlB1r1R)1SU8{qZEw|Wm1z=2o-`(IcPycGzoPyxQjwd4T31S zC@qx^1(FSgp<-8t@HN=kUF!YOA%c6RrCC!1?Sc)Ys6wEhOH2;+1R z#_5nPB1?c9o{HsR-Ck*kP+AQrtwy#;Pq*QzSRTgP$;LWLs{sIHz9o7Oj|FE$(hh`Z zk7&5ct%J&~y z7%!X)I|JPCM1{d@;I#W8Rv*5c_`S>d7rx#ud*;}4QVItd3Po&`t#9RdIg zGxhI0IMByi_fjY~t}|!vP2oakfutYN#_qlf0Kz9r1OO&RnnP^&mNE~QQO=GR4r zbs!rXO38CzCO>v}-aHp-zNcy4oA>#=@4RNfix)3m{%Z_f6Navd->#FT^3Y_kO$_uE z6Y7uhT2ctW++sv&t!!2J<=!^UWrs|RRFQpk%V20!42DKsH~#5$W2}!4D#Fe0|X$^TXi{WJIJIFm%lkUY-a7a9%JCKp@Z#z{$~x*j!&t zE8%zs3|$iwBUO$&x4@PNz=df#ZZ2a3hOP;JLp9;4d4MnQ#x4yKK^y#8LKf~Q0C1mt zBEPN|z!quj((Li?)w_X930M*Uxs|o}>kCrOu|#$r2JCw)%d2F1|Df<4I5l55HD6MW z?Zy(W;En?3^)s8hXHp_6aFF~Cbhb4KfR2_&0DOgcU&e24llJxUeyubdB+tOwRx}Hs zqNr2=)Ytr!0Eivmxq^e@&uFOoU8L1t2D~>AJHBIPDeihbC4uiEfD+t`7cYMzZ`v5r U=uZ*2&Hw-a07*qoM6N<$g34sj8~^|S literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi/meta.json b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi/meta.json new file mode 100644 index 00000000000..e110673e1d1 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi, tweaked by Alekshhh.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "bigdisplay" + }, + { + "name": "display" + }, + { + "name": "incendiarydisplay" + }, + { + "name": "practicedisplay" + }, + { + "name": "rubberdisplay" + }, + { + "name": "uraniumdisplay" + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi/practicedisplay.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/light_rifle.rsi/practicedisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..5b437956c84b992e3d0a904973b2408fc6d7a93f GIT binary patch literal 465 zcmV;?0WSWDP)M4x}XQE^&5nm=(9Rl7rneb5P5) zHe*&(B##3dV}G7KF4X%yJ-yHS{63$4@9%wI(4$9>p8pz`Qxh(yCVpGTpmJz!!6D|R zn^~Sc<+a5Kz~+umsaAz5{QBgGLGwAQOBO0_61eRq;kKK~?ntF7{LB|&WO4FCBtlP3 zHvn!B05jgGR7a%SRtSFP`-FeZap)Eq5h($eQxmI8mZI<~dp!Wp-us-hdx01$zF0v{ z$r+G=e+6em;Ij+GQgjAfPEFYQIyhM02FQW;k83&L?`s)&NdbU|)FXAhQvg|!3>@;e zUKTDTkdXkWZtucoZOD61M#QsqnY|WGzZQM|pzs|CgitY5xJq&B4I|<*;Sj(jF`q zY1^XBYO}2$dr({QI&8CcH+E)T7ivDIsd?Y$`+1(HX28M0!QsE6YpT#SRs6P2h0LXm z#St+-+r-LTn2(lv0Je97Qne~&!|%^e>33hVzT83OLz-rvUo`vtwkKlCx-k4Am|%2i zI{&=nIRhXYy96NV_gSiKS-?toAy!2!tw7gQ)9`?@NcCl|`D#Z*Ao zRI$F?VcPjnY%MQhU`(MLWyhmys_^zIh^rldqVT?PwJ5k0BRreD<9UDU$DArN!`I9k zHJ%v&4mWcmMmT(RTqt6tbISsT1c0l(3vW-|w`UBIfs=_Z5tHsg;yVzHzY~qWfBP;J zd9oF5DiD9naum9?Bq9?ICM!5N4jV-Tz}O(9(is}-tBXWZ>5NpksX(bnTSKb==;@?L z!XR?G}S6y}sY)`#fJTW5$e`{~EVb5pJgQUK=k^V?Y&be5hHMr{0w_KTLnOO`vU-FmO@SYO)Rd~Gr?kMI7ps>%^iOZ zKy_)Q0BEZFE&&h--4R?n&gxDubb*Zbe~5J0K2G~hEKVSF$HMAG*7F$>_$mSzf}1g8 b=1=4u{3X_e{)%ZS00000NkvXXu0mjfYLnH^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/capdisplay.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/capdisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..3f479843a384133aac9f79cc80ccf9fa40b0b5de GIT binary patch literal 500 zcmV^dysrY65dbdS?K7y>iJ`&#T7)8z zX38r=c|4uM$#ENdp%VJS^lzvG@Y#l=dPA_xx;5=*&GLj?y*~8?CyLZ`001EQwkE_Z zc_zF?B{vj64Iva;V7D1uoXfg$nyFWz`U^xNpgcG}73n%{5uXep7M@_xAEq@W;_Y>dulPdb!*+kxMx2tdiu;=o#lrj-Q zFdmO93s5T~AB{#tQB=5(WfWQhDPrRA{UHhg;rb7;8fpJR+!kh`1_&d2dQW#y#<{6=f-d^#2m zpp>dwjcsvF`DdoHzxkZ>K{|O-kjYb0?aSh_M3sOAK`<#W&`aM0p2?l~-2V)FC zVy!Jypt%92qnJAjo%MV6&yLvY-SYJCPESJvKx`6*VWGkNT7=UP<;vr!eE;l-&Y@vj zykV^^B>y#lQmPh)A@zDa(|+9Q&dAf}t9W;&NEZ$O5JgcY#60=6IdGB}3Xq1-TGMK^ zSUXXd6P)NkloOzRMl#wbx&i>$-{Sx=9^t9hQN2yWKk2036v&mQp4{ z2$subZ3Ygiz!!@JQ4|$k<0lo`0x4zUd0wrN7dDW>=kqy^<7CEKtrk^_acBBccpS%> z{`GpD`ChG700co`y&btlmGt~hNo_B%P8Xz&o z6e`eM1DhyzW?^tPp+CH%H+$iA`p!&26F_tb!>~{=zZT&pqFi{qf%k`Z3~n^%;tgX= zA^5Kbf*?2u!;nU!k?Fs0kGJ4y`!T-UD$>#h0HP?$nAin>*4I|>LIzS3N-5gyHpjP< zT)0i@tqi2nTI2gZ@yQco?kmHg5u6&XS@s?EZzfObq$G<5+MY}n9}gdl2X?8Hr#8k|Emv*l=?mKECDwF O00006H4$WTjhu@2=BI>j0XheHQvot)fU3U1xq-2D`O0l$HN2EnCdaEpOLmk_~1 zmgAsM5aZH_v8LvdEMk9Cau@FTz3;u3_h6xg{-SK#j&0kHt5|Ef2)xtjRKW&d#pGit zWh{gsilWL4ER}(eMk9RR&%MS^%C!Yj%Ghz7N+Zv0Ab}5uLoCZm%{7}%$`<3?^d;~x z3{&Hi$t3kY9*+TVUDtR!GK(+^{*#0dG#U+n*wl#8DM(~l)@K%a?Fah77ASC>eUwrF zvDP|Qfo2+*Mlm-Fz4img=UsODcRW45&<~&iAhz&4FIOz8xDR~Q#ld=fJK01Cf!4Y(ytJg0mE8>&TIm1k11^mC U{-S8Xp#T5?07*qoM6N<$g17$K(f|Me literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/rubberdisplay.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/rubberdisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..df56950fe9bdccb37bcac4e0ee52e442fdcd033f GIT binary patch literal 477 zcmV<30V4j1P)1vUkf{`>I+Q~w4zUEm;n3MZr%vMHBDi%F`WyTe&Vv6yTtpp82I&&BSdb8h zLYMQPkSQ*W7~8bDCX3j2O76lv@Autz`3_cE=`YH*?bx>MxQw;dmVvigtuojEtebo+ zrHq9Tj7Fo<3{;B1hr=Ph@8@1)mU3-@lrnZ4r_{)E8%W@T!2rv$Qgiisoub7!H+=~_ z48zoT6h*1`@pue?>$=9IXcG#}^%JD|XE4p2$~ z#9HfI1)6DK62;ssbea#eyXWln?s<9opcg<5KsCC^qgt(|#xELoQ}E>ZIy{;x(xnXm_`aVqF%N#LPK@BW3?wFkAfVA` z(A|B^gqx(^$Uq{c6wzCs!_OP;xF`&VC68hB)<-GD)zdLbsVTTgk1%e>KUEZ7*uZZE zL15e+b8kWNV~W<^u{O6#frG();HNfDFXQd^XM_-Ft(S%umXxxzyWvVJ{a<|n7pnU+ TFObZ300000NkvXXu0mjfu$AB9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/uraniumdisplay.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/uraniumdisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..bc0fcc6b353010f9599f33496815c9638213c7e6 GIT binary patch literal 482 zcmV<80UiE{P)B*697kV{f|m<{ELnnK_FS&B`$SSr&jFcXx?PYM(-!-FC^Hr=YPca{lxeEq>8@2>>}^=dR4dq zIB@w{N|^{Dn9t{x1*nyg&t@~CC@S2?dlXs%DPA`(m*GKq=+C9Jxi9Cw~ti1dT=mAaM=iv^lv1@Y45`=anf9OU`we;ed=sB;6zR?Z0HP?$gxDs(HGL;}p#W(J ztu^g-oALLHT)E5Cr#S5bV+=RVzrYU`%sHIgm6AILNV#r4(Kk&l$KNoc|LQ(}~yVy>~Aog8NL5_qgBZ1Mhf%i;K%2BiJ40^Lge$`tCLXfXU;O zWu_!aL%;Jf8z}PN#25geW)t!&0sV3Sa2oQXfba5tjQvb>lfdSxJ)@Efai3*fd;g%$ z;R+ZeCx>sQHH(}ppdrVICpt9}x#NI_93ykH(^&9(A;f)DdGS@pO8U(9Cu9y#a!E3N ze*;MhB6XtTuKw8*^U9e6lw6XC?MsCBB50PbvFxu}LW=8M$8x5CY$jonmkTXZNb|`L zx$?{<2Pp4AHj^Nsr2v2cnx!j~yj*BO6E~o~XqcbjlT!l#prh#kfC^S2ETR`;$PFsD zZG_Y3j^s=MgF-Y>x5~Gi%K?sepre`PN>$~SQv>RcU0lcyL(i3}ik*WaZaF}?0%Q1T sa-RUeT1XtJoEk7Jq<_!F#pU1g1)TiiW%v6Rv;Y7A07*qoM6N<$f`%K)H~;_u literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/empdisplay.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/empdisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..d972925eeb7915fb2d3a49e622495c67d3b38698 GIT binary patch literal 488 zcmVP)X{Dr3WcW@ET0J>+U@7q115y>9}|I{eJK6z4rk|j2QXjm}p*##bUC1d;Ti| z0H^zFvYIT*s@58&5m18H?auG(u&T&F1jKLv&?_?3Pk1E6Nkr;)Cw4gx8Hm7dc+}#N zJu`Y6)~rJ%padsJA6VHA=z;?jyCCSDCsUK-m^p7qfZ~YZ%{-4>I7Jq5>;c< z-3zLM6n>vA`!2=xK~bPh*tzJ(FH= z2O$7}f*=3@wl>yP&E2rqFLZOe4-lYs9UR`yFfR1 z-WG1F)xb3g@IfaXtA=%f1B{!H4?5|neFRg)B0cK`&)nW2a&)NACJY6<)SA18$1{zS zNCl6=rv%mtS1k|u>LMH{@8%tH+ko(--_pqq%uH9FwOd`Z)>u3A7YB8OjRD>#d5g98eGf$;i{ z^Q)&H$D8n*zAm($DFxk(-jUdo`h@O1?gtf18&5Kkw1|y^PAt?mS9B(00000 LNkvXXu0mjf`$ftj literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/meta.json b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/meta.json new file mode 100644 index 00000000000..5dcfe5e39d6 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi, tweaked by Alekshhh", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "display" + }, + { + "name": "empdisplay" + }, + { + "name": "incendiarydisplay" + }, + { + "name": "practicedisplay" + }, + { + "name": "rubberdisplay" + }, + { + "name": "uraniumdisplay" + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/practicedisplay.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/practicedisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..b70dffcc347a7b98149893493f4a41d043f72439 GIT binary patch literal 456 zcmV;(0XP1MP)Y72TJX%GalA*dmUKm>;fZD?p|v=7iANZ+6ams*PC1f(#X)m%Np;c%Gw3zNcqwRPqVebVuFTg??xX&`n+o7u#wj za?o%IgU8Eaes&5HA4AJQh6!oFq&tYo5>ZSq(oi)7iOP?T7lsgGAH9~c0jEL8xAvxQ+5IY>j^ zApTV1M5SC&fNnt~OQlmD%xdbYs{24$YM0+73Y>?u$zi}NNaw3u+&=gGUYFkw^*`ym y11*aSfNi^Fq;gQ%33uJ=@?#%`Tt`RePw)#iG~tap*3`9(9J<{aVP|Wf`bY!LYKHWI23fzQE<|Nn>t809qJ;8xYk8<(n3K&hZahp zS(+kPM2bp(K*VSpp->Rc#ni?$xyxA*A@B5Y$9>Pk{Q+LQc=_Y_oF-GL6mz5blPdxM z$Fn1ro{}WluIpwdP~d)X?6c0X;l&k)YIL yfN}&z^WEqg0f6bC&`~&5z)qxf%!?N<|2`knG3Q=+!bnU20000{_-FUk>Llq0nFF-F1T z&Qhn&*Z~0Xy(3L)4=o^t%f>Z|3?(oKF3obJjY2FnkTYTwyjcD2sk^(N6kP)S;PW%1 zvRVsVmjEAf5RSPw1P)NX1ANFqrl%&cXt#=EO7Pp%lj8FSD0Uzm^pde+9v;sU4iD;h zDE)|Fy>QI};h>kWjRdy$Ih4~E*svFRMEJ8RH5>peY7+u}H(6<4ituc*BG#5>5w$TF zUf*5-0FSmgD!8gZ!0#rm^#w4qYZ$M|;n`#b0=tX)hkyxN69900^GO8<0IS-BrqBWa zZx;PnnXGt~b?aR(%e69Cw9v4+9{%1*fBb&3ZLBj9GtnE4a=1*sY0MzLEvS^xk5 M07*qoM6N<$f|^std;kCd literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/bigdisplay.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/bigdisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..32ca9324b1db9af8e51fb236cf1e28e5395b180c GIT binary patch literal 315 zcmV-B0mS}^P);%>a@AVo@-%P3apnmt;oR^002`P=uI50 z_>%$vpol}Q$k9=mbPxb=(TiPrZ?*|N*TQh5;N=^#qktczWE1}V7LdQ-el4(=489WI z#V0b)_CS`G@LWqv+z(QA4tWb!n{CayC^;ia&aZEIyqa&?Lxy$Wek}mh9gsz4<36#L zM)@6}#Hy~y#c?RT1G2bWMANtmN)CK_s!!G^IgsTgvYhW|gTY|X;R(-5m);bGG1~wD N002ovPDHLkV1k+liw*z) literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/bigpracticedisplay.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/bigpracticedisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..1499e5e8145c297427d6c5592026c517560d58d2 GIT binary patch literal 330 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 JPDHLkV1nia)dv6o literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi/rubber-icon.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi/rubber-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d77bd3998bab17a9980a43a7bfa3ec967d6845fc GIT binary patch literal 450 zcmV;z0X_bSP)?Y&=B5I zO;Ja1)Y6s9NlQV)HJDbGW+pWBKGXevckg|_@ArH61BF7N`0x1oT^NZOUVHAWdidl0 z`Z5rS8J-XthG8&#z0G7O@Zo)~l45Oci(Dne&Hh4Hjh+nT6S@bmdSLp#5+4g{OwYst zn953|lvtKUI2^{ZEFP-qjyglVh|k8OJh@Ng!8`Fc#7{3S&_^2I+&Xn`clTabq^Q+u z6r-Dz>;ggv9=h!B@1+94fQD0dnHV2y<@6D=b^647lEi$HTqT8+64!NE%BBI3QZgDV zf4VPCzO6vZgeDpfjthYKsDo{CW#4ghd~7Bq3{?uYn&1={<+ ze6q;>&T}hvV`Zk07*qoM6N<$f+_08fdBvi literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi/uranium-icon.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/HeavyRifle/argenti_speed_loader.rsi/uranium-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c8511271a9a6ea90bece3273276e63c4358577b3 GIT binary patch literal 440 zcmV;p0Z0CcP)=^`#AlmdA9%@?t$b^ROXL{im|M~aUW^(q7nj{b#Rh4&2d!8K zMH+g)ef0am=an&PRpu3c#}=0K&g-M`7}0pl3VF~8=^E8a~;Dp3Q>YO2e=Sph#S`Yogc~8i7Cm3#QTs`q3P9((iLw;iM%&sGElBp=k|;V5k%vTIdj*13~N`A=rWr?k*An!AUZSb`T`P z(GH&WM_Q;!=@DxP2(}b@I)p-bI~`oo+#Bz%tx)q>j$7X6bI<#I?}bh}`CpPxBh0n2 z?-vTsrx6zd|C&{W1^;Iz>gANkrxBkwBEP}^x(Oo}67_OQ9BvIaz`d9Vc!7sw52)?# zVAK=<%)=sgA4S;P`oK(1B5=oU{{}1*z4;oDDynK7L)iy|H zAR3E{!GR%kU1MTm(zl6LjJ88)m8eupSkJ|Wr&1Hv`|+ne_BRe3;Q-z33cT8V5da!W z%s(%&9+tx`6Tw?5P;^{hdJ60%>;?u0hL~FDlftb`&ljbZUHzq+w?o%83eV13!i}2J z7Vf%$Q;F5t9#3#M#|$*bJ`+apN2pXwOfA6bY>z9r=K{?o z0F;~k%wR07*qoM6N<$ Ef{&{H`v3p{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/LightRifle/light_rifle_speed_loader.rsi/meta.json b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/LightRifle/light_rifle_speed_loader.rsi/meta.json new file mode 100644 index 00000000000..c29f3bd3e2e --- /dev/null +++ b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/LightRifle/light_rifle_speed_loader.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/discordia-space/CEV-Eris/raw/d1120fc8287cca2632e834069b5019bf941a0170/icons/obj/ammo_speed.dmi", + "states": [ + { + "name": "icon" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/meta.json b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/meta.json new file mode 100644 index 00000000000..16b3da4e21b --- /dev/null +++ b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "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": "practice-icon" + }, + { + "name": "rubber-icon" + }, + { + "name": "uranium-icon" + }, + { + "name": "piercing-icon" + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/piercing-icon.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/piercing-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eb206ca5cbfbafa02faccd765421ea1b56250295 GIT binary patch literal 441 zcmV;q0Y?6bP)dN{lhMu8Z&c z7-P7Rm)xC)$rDShvDQ|~eYS7$PTS#9T>5K%4!f(^l2ozcw5+)2c>stAN~uIdXti1dLBOcrq|3=66B8A1Fyaz`8CeTf)j^hS_FZM|)e~}FXvnU@wPB#lbgWwl~tgm?C>` j!lVBUYt*Pw1vMAgI_W5za-2gF+EL$lxRep-Wen{*L|-e@B_f2%hH=h9M%t zt$Ho|(|L;McEBIIoqe!v^UI4P+WH)T&-jh*2Y6S40&ZM980;a&DM5&7vl?1fbX}{km3`3Ms0I5<6-}f=bFdCe$ zmHzG};`#c<*@_Z@%Jd;%RW^qW8IS-7QrGKPBCuqiX7X3rFqHZ3GLR<$KQ`poBEtQHVKiX38Tf0oW*Nw= zm@cp1N_skL#OKa4h6;W`OxzXi*=u*%1}FuG2{y}yPH8Z>CIcYFhFlgyEhpl6K$ O0000=hp{@8zOmOF*P}~gV?}1x+EG->IZSpe{dw;!R+kRjiJ=WKr9kMl>$->tK@dzG>UguIZ|pXC z?%P{2Hv>TsptZ*HyhIW);+Y%xgjV-sV%hz?tL+GgNaEu#Cj-?cuy1VJaf-ksa3+*L z$%dL9&TPN)9$X(^S+`@N0wD<)+Yqg_*0j1F^(rgLfb}H&*$E=@twt2THVH#ShtWJM uRz3-%*$8vdL6)9`fBrX2ks?KkKgSooIqF){&oX`h000087*ct-24b7uevqL{r-GKoc*qp!SE!eKfzmHfDE$(dJQ#N<-aTu| zA`lTcLdb5owl;-!P=`jwY9!}e2Qoy@bnl&X&&&Hf?|V?7K!N*?t#yBpQpQ>PuIsLS z*V+k4DPyG+mSr&<4pB<+N_eSnK20CfdR}MnzGrmzqfN=1jS@TZ835nh3tBacK}XZ( zC^kvLI01ktic;&-sKPNbICmHO-ZY}!zl91cYn`RQaU6$}*H36RN+?^RY)P|G`m1|K^SQR4irepwGEJM{VHUYkiqU9< z5P~2G0H{{0l*?tpFvOqlvbQ}a^ezd#OSJyYm+>!NOm;ccek#7H0xLZb1OZAZ9LKqK zcIs48u?74Xf8|5)eIeP|s>@9h5JF^JP)Sg@%9IPlQ<<~_yxVUNy*~2Q7Qd1}gm(^_I zU`0}*Tuf6Wu~H8D9M&w$w(YlZka>>N^geIz%=dwXg~fkIk$E{33VnOFHQ*Bf9dnCG zvpgP8%FHa80?FjvZBDw|oGcFZicB&xDljrJDNH%Q!__^GS0%p2uND}Ym=t5x8q;bk z%i%K~uI|~?4KiIqs(>l)9PI(1fBZQvhmR#>N=Oy>EWh60A)@KumM}@Tgw!c$Y;iMI zt%-Vf84*oSC^J8k3xHu0^p%vdsT&wJ!OH1nN{7?}UT+uc(LUv?Jfi6|xh@jq>0*;9 z@c0xJ1^M==t;<}BE;h)s-4fAs0QQbxd^m^I?H3@ngwG#Pg27pc94bp#!sid9^?9WV)Hc*8s=CJU;RyiYYS@!TK1ir?ilH@7SAa_o*`)VoS0ncTv{!ouQD@CI+d!|7yn RH3t9y002ovPDHLkV1j()*nt25 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/meta.json b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/meta.json new file mode 100644 index 00000000000..8f391b8d358 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/meta.json @@ -0,0 +1,20 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from and modified https://github.com/discordia-space/CEV-Eris/raw/aed9cbddbf9039dae1e4f02bab592248b0539431/icons/obj/ammo_speed.dmi", + "states": [ + { + "name": "icon" + }, + { + "name": "practice-icon" + }, + { + "name": "rubber-icon" + } + ] +} diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/practice-icon.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/practice-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5da27bd87c9ae8cbb1d6d368b26684751a4638af GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl?0LMR%IG`jpNli(ur3kA@jr|3(QoBmg4r?W&U6en-Ne+`*bEDKGCoa=ZSUnS` z$#OD^-i4Kuo&#@;wf0*aU*FHS@9(__CMG8T9YyAFB9Zv^OkE1<0M5{I(JYV0 zQ!=wkra&?Il+VhP&q~BUsaKLwQGrl+K{w<8Y4L)yt0BL}uNDY}7xejVL13w$wat6d z;stT5QRxy=1q}J<+ynq)<62%0A4|xTkSg$5esi)6_? zQX*SWW_zm{05y|iX1D`!tD$CcY^1MCI;0lxdVOp?O)FpJDUrq2dQl)Rmui^;kGUtk zsnN2yo2jGaYKQvj2T~#nz|k3mXY1HYzMWMwIsB2R5{t!3W=bv4X>-s!&|@sY%JPRi z5Nt14!XJs2b-hvrdIx%xczl!d(+dC&YuyEMqs;MhP1%{!FJY(6K{9!uTiUEV+}#5x z-sVevsP9c4*X*pXujX@q^jG{Y$K@JP-sM=@ti(0DQcP}QVq#+QCwK*CR>g7)$v$cT O0000>ZFLaUKHy+3T{rvCVfs2dF|BfQ_az3B` z>sfO7Kmg2)KB<@$4u`8|*2xs8B#(?miHt=Vf43rP$*8G7A~_{2IY9cz#Mk97uOY*O zTI7@68p8=c;SW#>1W}7RR+;f+N@S+vj*nJqfwFw!IRMLpDVy9{LgqN63fz_d+~204 z8RQdR*jm~kePp5*_42z;OGw><{(%sa-J0kPwNTIuTba?_HvpI?r(DOMp%!(_lT&`| zeXQz`S|Ao1VeRsT@~6C@8N3w}Hn~$gG6gQKE=6;b_xq9oVRp#2*ahxgr5w^E=qU)c8SM_mLG69s>!>{7$;~RPIyo1HXg>vpc{T1KJ2?mFh qTRC3UNAA2ssU&xCadC0E7yJTS-^E481Uw%A0000 Date: Thu, 13 Jun 2024 20:42:09 -0400 Subject: [PATCH 16/16] Updated Pirate Captain Hardsuit (#1512) Updated the hardsuit to have just a bit better armor value. More in line with NFSD suits. --- .../Entities/Clothing/OuterClothing/hardsuits.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index 53bbd663ed0..23cf101965c 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -747,13 +747,13 @@ highPressureMultiplier: 0.02 lowPressureMultiplier: 1000 - type: ExplosionResistance - damageCoefficient: 0.6 + damageCoefficient: 0.5 - type: Armor modifiers: coefficients: - Blunt: 0.7 - Slash: 0.8 - Piercing: 0.85 + Blunt: 0.6 + Slash: 0.7 + Piercing: 0.75 Heat: 0.4 Caustic: 0.75 - type: ClothingSpeedModifier