diff --git a/Content.Server/Weapon/Ranged/Ammunition/Components/AmmoComponent.cs b/Content.Server/Weapon/Ranged/Ammunition/Components/AmmoComponent.cs index e383a9f239..dce1577c41 100644 --- a/Content.Server/Weapon/Ranged/Ammunition/Components/AmmoComponent.cs +++ b/Content.Server/Weapon/Ranged/Ammunition/Components/AmmoComponent.cs @@ -114,6 +114,7 @@ namespace Content.Server.Weapon.Ranged.Ammunition.Components Pistol, A35, // Placeholder? LRifle, + HRifle, Magnum, AntiMaterial, Shotgun, diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 743b8fa966..f8306829ce 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -151,3 +151,61 @@ - type: Repairable fuelcost: 15 doAfterDelay: 8 + +- type: entity + name: onestar mecha + id: Onestar + parent: PlayerSiliconBase + components: + - type: Drone + tools: + - id: Minigun + - id: EnergySword + - id: LauncherMultipleRocket + - id: XrayCannon + - type: UserInterface + interfaces: + - key: enum.StrippingUiKey.Key + type: StrippableBoundUserInterface + - type: GhostTakeoverAvailable + makeSentient: true + name: Onestar Mecha + description: You are an experimental mecha created by who-knows-what, all you know is that you have weapons and you detect fleshy moving targets nearby... + rules: Use your weapons to cause havok. You are an antagonist. + - type: MovementSpeedModifier + baseWalkSpeed : 3 + baseSprintSpeed : 2 + - type: MobState + thresholds: + 0: !type:NormalMobState {} + 1000: !type:DeadMobState {} + - type: Sprite + drawdepth: Mobs + netsync: false + layers: + - state: onestar_boss + sprite: Mobs/Silicon/onestar.rsi + - state: onestar_boss_screen + sprite: Mobs/Silicon/onestar.rsi + shader: unshaded + - type: MovementIgnoreGravity + - type: Fixtures + fixtures: + - shape: + !type:PhysShapeCircle + radius: 1 + mass: 500 + mask: + - SmallImpassable + - MobImpassable + - VaultImpassable + - Impassable + layer: + - Opaque + - type: Appearance + visuals: + - type: DamageStateVisualizer + rotate: true + normal: onestar_boss + dead: onestar_boss_wrecked + - type: CombatMode diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/hrifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/hrifle.yml new file mode 100644 index 0000000000..46c03f6a14 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/hrifle.yml @@ -0,0 +1,26 @@ +- type: entity + id: CartridgeHRifleBase + name: cartridge (.20 rifle) + parent: BaseCartridge + abstract: true + components: + - type: Ammo + caliber: HRifle + - type: Sprite + netsync: false + noRot: false + sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi + layers: + - state: base + map: ["enum.AmmoVisualLayers.Base"] + - type: Appearance + visuals: + - type: SpentAmmoVisualizer + +- type: entity + id: CartridgeMinigun + name: cartridge (.10 rifle) + parent: CartridgeHRifleBase + components: + - type: Ammo + projectile: BulletMinigun diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/hrifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/hrifle.yml new file mode 100644 index 0000000000..60dd1f3605 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/hrifle.yml @@ -0,0 +1,44 @@ +- type: entity + id: MagazineHRifleBase + name: "magazine (.20 rifle)" + parent: BaseItem + abstract: true + components: + - type: RangedMagazine + caliber: HRifle + magazineType: Rifle + capacity: 100 + + - type: Sprite + netsync: false + layers: + - state: base + map: ["enum.RangedBarrelVisualLayers.Base"] + - state: mag-1 + map: ["enum.RangedBarrelVisualLayers.Mag"] + - type: Appearance + visuals: + - type: MagVisualizer + magState: mag + steps: 2 + zeroVisible: false + + +- type: entity + id: MagazineMinigun + name: "Minigun magazine box (.10 rifle)" + parent: MagazineHRifleBase + components: + - type: RangedMagazine + fillPrototype: CartridgeMinigun + magazineType: Box + capacity: 1000 + + - type: Sprite + sprite: Objects/Weapons/Guns/Ammunition/Magazine/LRifle/l_rifle_box.rsi + - type: Appearance + visuals: + - type: MagVisualizer + magState: mag + steps: 8 + zeroVisible: false diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/hrifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/hrifle.yml new file mode 100644 index 0000000000..7352f8fbee --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/hrifle.yml @@ -0,0 +1,21 @@ +- type: entity + id: BulletHRifle + name: bullet (.20 rifle) + parent: BulletBase + abstract: true + components: + - type: Projectile + damage: + types: + Piercing: 28 + +- type: entity + id: BulletMinigun + name: minigun bullet (.10 rifle) + parent: BulletHRifle + abstract: true + components: + - type: Projectile + damage: + types: + Piercing: 5 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml index 623c4c179d..a78142219a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml @@ -84,3 +84,19 @@ - type: Appearance visuals: - type: SpentAmmoVisualizer + +- type: entity + id: SlowRocketAmmo + name: PG-7VL grenade "Snail-Rocket" + parent: BaseItem + description: A 1.5 warhead designed for the RPG-7 launcher. It is unusually slow. + components: + - type: Ammo + caliber: Rocket + projectile: WeakBulletRocket + caseless: true + ammoVelocity: 4.5 + - type: Sprite + netsync: false + sprite: Objects/Weapons/Guns/Ammunition/Explosives/rpg.rsi + state: frag diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/HMGs/hmgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/HMGs/hmgs.yml new file mode 100644 index 0000000000..e06db76df7 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/HMGs/hmgs.yml @@ -0,0 +1,77 @@ +- type: entity + name: heavy machinegun + parent: BaseItem + id: HMGBase + description: Spray and pray + abstract: true + components: + - type: Sprite + netsync: false + - type: Icon + state: icon + - type: Item + size: 24 + - type: MagazineBarrel + currentSelector: Automatic + allSelectors: + - Automatic + caliber: HRifle + magazineTypes: + - Box + fireRate: 20 + minAngle: 10 + maxAngle: 45 + angleIncrease: 10 + angleDecay: 60 + magNeedsOpenBolt: false + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/lmg.ogg + soundEmpty: + path: /Audio/Weapons/Guns/Empty/lmg_empty.ogg + soundRack: + path: /Audio/Weapons/Guns/Cock/lmg_cock.ogg + soundBoltOpen: + path: /Audio/Weapons/Guns/Bolt/rifle_bolt_open.ogg + soundBoltClosed: + path: /Audio/Weapons/Guns/Bolt/rifle_bolt_closed.ogg + soundAutoEject: + path: /Audio/Weapons/Guns/EmptyAlarm/lmg_empty_alarm.ogg + soundMagInsert: + path: /Audio/Weapons/Guns/MagIn/lmg_magin.ogg + soundMagEject: + path: /Audio/Weapons/Guns/MagOut/lmg_magout.ogg + +- type: entity + name: minigun + id: Minigun + parent: HMGBase + description: Vzzzzzt! Rahrahrahrah! Vrrrrr! + components: + - type: Sprite + sprite: Objects/Weapons/Guns/HMGs/minigun.rsi + layers: + - state: base + map: ["enum.RangedBarrelVisualLayers.Base"] + - state: bolt-closed + map: ["enum.RangedBarrelVisualLayers.Bolt"] + - type: Icon + sprite: Objects/Weapons/Guns/HMGs/minigun.rsi + - type: Item + size: 24 + sprite: Objects/Weapons/Guns/HMGs/minigun.rsi + - type: RangedWeapon + - type: MagazineBarrel + magFillPrototype: MagazineMinigun + fireRate: 15 + minAngle: 0 + maxAngle: 15 + angleIncrease: 15 + angleDecay: 60 + - type: Appearance + visuals: + - type: BarrelBoltVisualizer + - type: MagVisualizer + magState: mag + steps: 4 + zeroVisible: true + diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml index 59f2cfad25..45559d7854 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml @@ -82,3 +82,45 @@ magState: mag steps: 1 zeroVisible: true + +- type: entity + name: multiple rocket launcher + parent: LauncherBase + id: LauncherMultipleRocket + description: A modified ancient rocket-propelled grenade launcher. + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Launchers/rocket.rsi + layers: + - state: base + map: ["enum.RangedBarrelVisualLayers.Base"] + - state: mag-0 + map: ["enum.RangedBarrelVisualLayers.Mag"] + - type: Item + size: 24 + sprite: Objects/Weapons/Guns/Launchers/rocket.rsi + - type: RangedWeapon + - type: RevolverBarrel + caliber: Rocket + currentSelector: Automatic + allSelectors: + - Single + fillPrototype: SlowRocketAmmo + fireRate: 6 + minAngle: 0 + maxAngle: 15 + angleIncrease: 15 + angleDecay: 60 + capacity: 30 + soundEmpty: + path: /Audio/Weapons/Guns/Empty/empty.ogg + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/rpgfire.ogg + soundInsert: + path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg + - type: Appearance + visuals: + - type: MagVisualizer + magState: mag + steps: 1 + zeroVisible: true diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml index 04bc34c0a2..72258eefcf 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -196,6 +196,28 @@ color: orange energy: 0.5 +- type: entity + id: WeakBulletRocket + name: weak rocket + parent: TriggerBulletBase + abstract: true + components: + - type: Sprite + netsync: false + sprite: Objects/Weapons/Guns/Projectiles/rocket.rsi + state: frag + - type: ExplodeOnTrigger + - type: Explosive + devastationRange: 0 + heavyImpactRange: 0 + lightImpactRange: 1 + flashRange: 10 + - type: PointLight + radius: 3.5 + color: orange + energy: 0.5 + + - type: entity id: BulletGrenadeBaton name: baton grenade diff --git a/Resources/Textures/Mobs/Silicon/onestar.rsi/meta.json b/Resources/Textures/Mobs/Silicon/onestar.rsi/meta.json new file mode 100644 index 0000000000..088492c49f --- /dev/null +++ b/Resources/Textures/Mobs/Silicon/onestar.rsi/meta.json @@ -0,0 +1,193 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/discordia-space/CEV-Eris/pull/3768", + "size": { + "x": 64, + "y": 64 + }, + "states": [ + { + "name": "onestar_boss", + "directions": 4 + }, + { + "name": "onestar_boss_unpowered" + }, + { + "name": "onestar_boss_wrecked", + "delays": [ + [ + 3, + 0.9, + 0.9, + 0.9, + 0.9, + 0.9 + ] + ] + }, + { + "name": "onestar_boss_screen", + "directions": 4, + "delays": [ + [ + 6, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 6, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 6, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 6, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 6, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 6, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 6, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 6, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 6, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 6, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 6, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 6, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Mobs/Silicon/onestar.rsi/onestar_boss.png b/Resources/Textures/Mobs/Silicon/onestar.rsi/onestar_boss.png new file mode 100644 index 0000000000..a4ee0e46eb Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/onestar.rsi/onestar_boss.png differ diff --git a/Resources/Textures/Mobs/Silicon/onestar.rsi/onestar_boss_screen.png b/Resources/Textures/Mobs/Silicon/onestar.rsi/onestar_boss_screen.png new file mode 100644 index 0000000000..6e33c292b0 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/onestar.rsi/onestar_boss_screen.png differ diff --git a/Resources/Textures/Mobs/Silicon/onestar.rsi/onestar_boss_unpowered.png b/Resources/Textures/Mobs/Silicon/onestar.rsi/onestar_boss_unpowered.png new file mode 100644 index 0000000000..0ed394772b Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/onestar.rsi/onestar_boss_unpowered.png differ diff --git a/Resources/Textures/Mobs/Silicon/onestar.rsi/onestar_boss_wrecked.png b/Resources/Textures/Mobs/Silicon/onestar.rsi/onestar_boss_wrecked.png new file mode 100644 index 0000000000..3a0ba0d2f8 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/onestar.rsi/onestar_boss_wrecked.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/base.png new file mode 100644 index 0000000000..3b435f7b88 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/base.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/bolt-closed.png b/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/bolt-closed.png new file mode 100644 index 0000000000..3b435f7b88 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/bolt-closed.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/bolt-open.png b/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/bolt-open.png new file mode 100644 index 0000000000..3b435f7b88 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/bolt-open.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/holstered.png b/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/holstered.png new file mode 100644 index 0000000000..03d631ec3f Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/holstered.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/icon.png b/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/icon.png new file mode 100644 index 0000000000..3b435f7b88 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/meta.json new file mode 100644 index 0000000000..9ff1465562 --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/meta.json @@ -0,0 +1,61 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/commit/a39e3f3f1f351e3be5ae955c4de3a2e8889e191b", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "base", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "holstered" + }, + { + "name": "notholstered" + }, + { + "name": "bolt-closed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "bolt-open", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "icon", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/notholstered.png b/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/notholstered.png new file mode 100644 index 0000000000..4f3a4a9c65 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/HMGs/minigun.rsi/notholstered.png differ