CHIMP handcannon (#15667)

This commit is contained in:
Nemanja
2023-04-23 19:58:45 -04:00
committed by GitHub
parent 8fbdad3009
commit 37bc649eef
22 changed files with 267 additions and 39 deletions

View File

@@ -66,27 +66,27 @@ public sealed partial class AnomalySystem : SharedAnomalySystem
private void OnStartCollide(EntityUid uid, AnomalyComponent component, ref StartCollideEvent args) private void OnStartCollide(EntityUid uid, AnomalyComponent component, ref StartCollideEvent args)
{ {
if (!TryComp<AnomalousParticleComponent>(args.OtherFixture.Body.Owner, out var particleComponent)) if (!TryComp<AnomalousParticleComponent>(args.OtherFixture.Body.Owner, out var particle))
return; return;
if (args.OtherFixture.ID != particleComponent.FixtureId) if (args.OtherFixture.ID != particle.FixtureId)
return; return;
// small function to randomize because it's easier to read like this // small function to randomize because it's easier to read like this
float VaryValue(float v) => v * Random.NextFloat(MinParticleVariation, MaxParticleVariation); float VaryValue(float v) => v * Random.NextFloat(MinParticleVariation, MaxParticleVariation);
if (particleComponent.ParticleType == component.DestabilizingParticleType) if (particle.ParticleType == component.DestabilizingParticleType)
{ {
ChangeAnomalyStability(uid, VaryValue(component.StabilityPerDestabilizingHit), component); ChangeAnomalyStability(uid, VaryValue(particle.StabilityPerDestabilizingHit), component);
} }
else if (particleComponent.ParticleType == component.SeverityParticleType) else if (particle.ParticleType == component.SeverityParticleType)
{ {
ChangeAnomalySeverity(uid, VaryValue(component.SeverityPerSeverityHit), component); ChangeAnomalySeverity(uid, VaryValue(particle.SeverityPerSeverityHit), component);
} }
else if (particleComponent.ParticleType == component.WeakeningParticleType) else if (particle.ParticleType == component.WeakeningParticleType)
{ {
ChangeAnomalyHealth(uid, VaryValue(component.HealthPerWeakeningeHit), component); ChangeAnomalyHealth(uid, VaryValue(particle.HealthPerWeakeningeHit), component);
ChangeAnomalyStability(uid, VaryValue(component.StabilityPerWeakeningeHit), component); ChangeAnomalyStability(uid, VaryValue(particle.StabilityPerWeakeningeHit), component);
} }
} }

View File

@@ -1,4 +1,5 @@
using Content.Shared.Anomaly; using Content.Shared.Anomaly;
using Content.Shared.Anomaly.Components;
namespace Content.Server.Anomaly.Components; namespace Content.Server.Anomaly.Components;
@@ -20,4 +21,32 @@ public sealed class AnomalousParticleComponent : Component
/// </summary> /// </summary>
[DataField("fixtureId")] [DataField("fixtureId")]
public string FixtureId = "projectile"; public string FixtureId = "projectile";
/// <summary>
/// The amount that the <see cref="AnomalyComponent.Severity"/> increases by when hit
/// of an anomalous particle of <seealso cref="AnomalyComponent.SeverityParticleType"/>.
/// </summary>
[DataField("severityPerSeverityHit")]
public float SeverityPerSeverityHit = 0.025f;
/// <summary>
/// The amount that the <see cref="AnomalyComponent.Stability"/> increases by when hit
/// of an anomalous particle of <seealso cref="AnomalyComponent.DestabilizingParticleType"/>.
/// </summary>
[DataField("stabilityPerDestabilizingHit")]
public float StabilityPerDestabilizingHit = 0.04f;
/// <summary>
/// The amount that the <see cref="AnomalyComponent.Stability"/> increases by when hit
/// of an anomalous particle of <seealso cref="AnomalyComponent.DestabilizingParticleType"/>.
/// </summary>
[DataField("healthPerWeakeningeHit")]
public float HealthPerWeakeningeHit = -0.05f;
/// <summary>
/// The amount that the <see cref="AnomalyComponent.Stability"/> increases by when hit
/// of an anomalous particle of <seealso cref="AnomalyComponent.DestabilizingParticleType"/>.
/// </summary>
[DataField("stabilityPerWeakeningeHit")]
public float StabilityPerWeakeningeHit = -0.1f;
} }

View File

@@ -149,46 +149,18 @@ public sealed class AnomalyComponent : Component
[DataField("severityParticleType")] [DataField("severityParticleType")]
public AnomalousParticleType SeverityParticleType; public AnomalousParticleType SeverityParticleType;
/// <summary>
/// The amount that the <see cref="Severity"/> increases by when hit
/// of an anomalous particle of <seealso cref="SeverityParticleType"/>.
/// </summary>
[DataField("severityPerSeverityHit")]
public float SeverityPerSeverityHit = 0.025f;
/// <summary> /// <summary>
/// The particle type that destabilizes the anomaly. /// The particle type that destabilizes the anomaly.
/// </summary> /// </summary>
[DataField("destabilizingParticleType")] [DataField("destabilizingParticleType")]
public AnomalousParticleType DestabilizingParticleType; public AnomalousParticleType DestabilizingParticleType;
/// <summary>
/// The amount that the <see cref="Stability"/> increases by when hit
/// of an anomalous particle of <seealso cref="DestabilizingParticleType"/>.
/// </summary>
[DataField("stabilityPerDestabilizingHit")]
public float StabilityPerDestabilizingHit = 0.04f;
/// <summary> /// <summary>
/// The particle type that weakens the anomalys health. /// The particle type that weakens the anomalys health.
/// </summary> /// </summary>
[DataField("weakeningParticleType")] [DataField("weakeningParticleType")]
public AnomalousParticleType WeakeningParticleType; public AnomalousParticleType WeakeningParticleType;
/// <summary>
/// The amount that the <see cref="Stability"/> increases by when hit
/// of an anomalous particle of <seealso cref="DestabilizingParticleType"/>.
/// </summary>
[DataField("healthPerWeakeningeHit")]
public float HealthPerWeakeningeHit = -0.05f;
/// <summary>
/// The amount that the <see cref="Stability"/> increases by when hit
/// of an anomalous particle of <seealso cref="DestabilizingParticleType"/>.
/// </summary>
[DataField("stabilityPerWeakeningeHit")]
public float StabilityPerWeakeningeHit = -0.1f;
#region Points and Vessels #region Points and Vessels
/// <summary> /// <summary>
/// The vessel that the anomaly is connceted to. Stored so that multiple /// The vessel that the anomaly is connceted to. Stored so that multiple

View File

@@ -536,6 +536,10 @@
unlockedRecipes: unlockedRecipes:
- AnomalyVesselCircuitboard - AnomalyVesselCircuitboard
- APECircuitboard - APECircuitboard
- WeaponPistolCHIMP
- CartridgeAnomalousParticleDelta
- CartridgeAnomalousParticleEpsilon
- CartridgeAnomalousParticleZeta
- type: technology - type: technology
name: technologies-robotics-technology name: technologies-robotics-technology

View File

@@ -52,3 +52,62 @@
components: components:
- type: CartridgeAmmo - type: CartridgeAmmo
proto: BulletMagnumRubber proto: BulletMagnumRubber
- type: entity
id: BaseAnomalousCartridge
parent: BaseCartridgeMagnum
description: Packs twice the punch of a standard A.P.E. particle.
abstract: true
components:
- type: Sprite
netsync: false
sprite: Objects/Weapons/Guns/Ammunition/Casings/anomalous_casing.rsi
layers:
- state: base
map: ["enum.AmmoVisualLayers.Base"]
- type: Tag
tags:
- Cartridge
- CartridgeCHIMP
- type: entity
id: CartridgeAnomalousParticleDelta
parent: BaseAnomalousCartridge
name: cartridge (delta particle)
components:
- type: Sprite
layers:
- state: base
map: ["enum.AmmoVisualLayers.Base"]
- state: overlay
color: crimson
- type: CartridgeAmmo
proto: AnomalousParticleDeltaStrong
- type: entity
id: CartridgeAnomalousParticleEpsilon
parent: BaseAnomalousCartridge
name: cartridge (epsilon particle)
components:
- type: Sprite
layers:
- state: base
map: ["enum.AmmoVisualLayers.Base"]
- state: overlay
color: plum
- type: CartridgeAmmo
proto: AnomalousParticleEpsilonStrong
- type: entity
id: CartridgeAnomalousParticleZeta
parent: BaseAnomalousCartridge
name: cartridge (zeta particle)
components:
- type: Sprite
layers:
- state: base
map: ["enum.AmmoVisualLayers.Base"]
- state: overlay
color: goldenrod
- type: CartridgeAmmo
proto: AnomalousParticleZetaStrong

View File

@@ -338,10 +338,23 @@
- type: Projectile - type: Projectile
damage: damage:
types: types:
Heat: 3 Heat: 5
- type: TimedDespawn - type: TimedDespawn
lifetime: 3 lifetime: 3
- type: entity
parent: AnomalousParticleDelta
id: AnomalousParticleDeltaStrong
noSpawn: true
components:
- type: AnomalousParticle
particleType: Delta
severityPerSeverityHit: 0.05
stabilityPerDestabilizingHit: 0.08
healthPerWeakeningeHit: -0.1
stabilityPerWeakeningeHit: -0.2
- type: entity - type: entity
parent: AnomalousParticleDelta parent: AnomalousParticleDelta
id: AnomalousParticleEpsilon id: AnomalousParticleEpsilon
@@ -351,6 +364,18 @@
- type: AnomalousParticle - type: AnomalousParticle
particleType: Epsilon particleType: Epsilon
- type: entity
parent: AnomalousParticleEpsilon
id: AnomalousParticleEpsilonStrong
noSpawn: true
components:
- type: AnomalousParticle
particleType: Epsilon
severityPerSeverityHit: 0.05
stabilityPerDestabilizingHit: 0.08
healthPerWeakeningeHit: -0.1
stabilityPerWeakeningeHit: -0.2
- type: entity - type: entity
parent: AnomalousParticleDelta parent: AnomalousParticleDelta
id: AnomalousParticleZeta id: AnomalousParticleZeta
@@ -360,6 +385,18 @@
- type: AnomalousParticle - type: AnomalousParticle
particleType: Zeta particleType: Zeta
- type: entity
parent: AnomalousParticleZeta
id: AnomalousParticleZetaStrong
noSpawn: true
components:
- type: AnomalousParticle
particleType: Zeta
severityPerSeverityHit: 0.05
stabilityPerDestabilizingHit: 0.08
healthPerWeakeningeHit: -0.1
stabilityPerWeakeningeHit: -0.2
# Launcher projectiles (grenade / rocket) # Launcher projectiles (grenade / rocket)
- type: entity - type: entity
id: BulletRocket id: BulletRocket

View File

@@ -125,3 +125,42 @@
capacity: 5 capacity: 5
chambers: [ True, True, True, True, True ] chambers: [ True, True, True, True, True ]
ammoSlots: [ null, null, null, null, null ] ammoSlots: [ null, null, null, null, null ]
- type: entity
id: WeaponPistolCHIMP
parent: BaseWeaponRevolver
name: C.H.I.M.P. handcannon
description: Just because it's a little C.H.I.M.P. doesn't mean it can't punch like an A.P.E.
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Revolvers/chimp.rsi
layers:
- state: base
map: ["enum.GunVisualLayers.Base"]
- state: mag-unshaded-1
visible: false
map: ["enum.GunVisualLayers.MagUnshaded"]
shader: unshaded
- type: Appearance
- type: MagazineVisuals
magState: mag
steps: 3
zeroVisible: false
- type: Clothing
sprite: Objects/Weapons/Guns/Revolvers/chimp.rsi
- type: RevolverAmmoProvider
whitelist:
tags:
- CartridgeCHIMP
proto: CartridgeAnomalousParticleDelta #when revolvers stop sucking cock, make this spawn empty
capacity: 10
chambers: [ True, True, True, True, True, True, True, True, True, True ]
ammoSlots: [ null, null, null, null, null, null, null, null, null, null ]
soundEject:
path: /Audio/Weapons/Guns/MagOut/revolver_magout.ogg
soundInsert:
path: /Audio/Weapons/Guns/MagIn/revolver_magin.ogg
- type: Gun
fireRate: 1.5
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/taser2.ogg

View File

@@ -236,6 +236,10 @@
- PowerCellSmall - PowerCellSmall
- PowerCellMedium - PowerCellMedium
- PowerCellHigh - PowerCellHigh
- WeaponPistolCHIMP
- CartridgeAnomalousParticleDelta
- CartridgeAnomalousParticleEpsilon
- CartridgeAnomalousParticleZeta
- SynthesizerInstrument - SynthesizerInstrument
- RPED - RPED
- ClothingShoesBootsMag - ClothingShoesBootsMag

View File

@@ -64,3 +64,11 @@
materials: materials:
Plastic: 200 Plastic: 200
Glass: 150 Glass: 150
- type: latheRecipe
id: WeaponPistolCHIMP
result: WeaponPistolCHIMP
completetime: 5
materials:
Steel: 500
Glass: 400

View File

@@ -144,6 +144,27 @@
Steel: 10 Steel: 10
Glass: 5 Glass: 5
- type: latheRecipe
id: CartridgeAnomalousParticleDelta
result: CartridgeAnomalousParticleDelta
completetime: 2
materials:
Plastic: 25
- type: latheRecipe
id: CartridgeAnomalousParticleEpsilon
result: CartridgeAnomalousParticleEpsilon
completetime: 2
materials:
Plastic: 25
- type: latheRecipe
id: CartridgeAnomalousParticleZeta
result: CartridgeAnomalousParticleZeta
completetime: 2
materials:
Plastic: 25
- type: latheRecipe - type: latheRecipe
id: TargetHuman id: TargetHuman
result: TargetHuman result: TargetHuman

View File

@@ -94,6 +94,9 @@
- type: Tag - type: Tag
id: CartridgeCaselessRifle id: CartridgeCaselessRifle
- type: Tag
id: CartridgeCHIMP
- type: Tag - type: Tag
id: CartridgeHeavyRifle id: CartridgeHeavyRifle

Binary file not shown.

After

Width:  |  Height:  |  Size: 767 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 744 B

View File

@@ -0,0 +1,20 @@
{
"version": 1,
"license": "CC0-1.0",
"copyright": "Created by EmoGarbage404 (github) for Space Station 14.",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "base"
},
{
"name": "base-spent"
},
{
"name": "overlay"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

View File

@@ -0,0 +1,32 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/e1a3cbe9ba2e6e29b7f1cad1bb456b390aac936d/icons/obj/guns/projectile.dmi",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "base"
},
{
"name": "mag-unshaded-1"
},
{
"name": "mag-unshaded-2"
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
},
{
"name": "equipped-BELT",
"directions": 4
}
]
}