| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- using Content.Shared.Damage;
- using Content.Shared.Damage.Events;
- using Content.Shared.Examine;
- using Content.Shared.FixedPoint;
- using Content.Shared.Projectiles;
- using Content.Shared.Weapons.Ranged.Components;
- using Robust.Shared.Prototypes;
- namespace Content.Server.Weapons.Ranged.Systems;
- public sealed partial class GunSystem
- {
- protected override void InitializeCartridge()
- {
- base.InitializeCartridge();
- SubscribeLocalEvent<CartridgeAmmoComponent, ExaminedEvent>(OnCartridgeExamine);
- SubscribeLocalEvent<CartridgeAmmoComponent, DamageExamineEvent>(OnCartridgeDamageExamine);
- }
- private void OnCartridgeDamageExamine(EntityUid uid, CartridgeAmmoComponent component, ref DamageExamineEvent args)
- {
- var damageSpec = GetProjectileDamage(component.Prototype);
- if (damageSpec == null)
- return;
- _damageExamine.AddDamageExamine(args.Message, Damageable.ApplyUniversalAllModifiers(damageSpec), Loc.GetString("damage-projectile"));
- }
- private DamageSpecifier? GetProjectileDamage(string proto)
- {
- if (!ProtoManager.TryIndex<EntityPrototype>(proto, out var entityProto))
- return null;
- if (entityProto.Components
- .TryGetValue(_factory.GetComponentName(typeof(ProjectileComponent)), out var projectile))
- {
- var p = (ProjectileComponent) projectile.Component;
- if (!p.Damage.Empty)
- {
- return p.Damage * Damageable.UniversalProjectileDamageModifier;
- }
- }
- return null;
- }
- private void OnCartridgeExamine(EntityUid uid, CartridgeAmmoComponent component, ExaminedEvent args)
- {
- if (component.Spent)
- {
- args.PushMarkup(Loc.GetString("gun-cartridge-spent"));
- }
- else
- {
- args.PushMarkup(Loc.GetString("gun-cartridge-unspent"));
- }
- }
- }
|